Check for and enable fragmentStoresAndAtomics feature for quad overdraw

This commit is contained in:
baldurk
2018-04-25 15:05:10 +01:00
parent 99ebebec1f
commit f1ec9b9e81
3 changed files with 17 additions and 4 deletions
+1
View File
@@ -1581,6 +1581,7 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, CompType typeHint, Debu
{
VulkanRenderState prevstate = m_pDriver->m_RenderState;
if(m_Overlay.m_QuadResolvePipeline[0] != VK_NULL_HANDLE)
{
SCOPED_TIMER("Quad Overdraw");
+11 -4
View File
@@ -30,8 +30,9 @@
enum class FeatureCheck
{
NoCheck,
ShaderMSAAStorage,
NoCheck = 0x0,
ShaderMSAAStorage = 0x1,
FragmentStores = 0x2,
};
BITMASK_OPERATORS(FeatureCheck);
@@ -69,9 +70,9 @@ static const BuiltinShaderConfig builtinShaders[] = {
{BuiltinShader::OutlineFS, EmbeddedResource(glsl_outline_frag), SPIRVShaderStage::Fragment,
FeatureCheck::NoCheck, true},
{BuiltinShader::QuadResolveFS, EmbeddedResource(glsl_quadresolve_frag),
SPIRVShaderStage::Fragment, FeatureCheck::NoCheck, true},
SPIRVShaderStage::Fragment, FeatureCheck::FragmentStores, true},
{BuiltinShader::QuadWriteFS, EmbeddedResource(glsl_quadwrite_frag), SPIRVShaderStage::Fragment,
FeatureCheck::NoCheck, false},
FeatureCheck::FragmentStores, false},
{BuiltinShader::TrisizeGS, EmbeddedResource(glsl_trisize_geom), SPIRVShaderStage::Geometry,
FeatureCheck::NoCheck, true},
{BuiltinShader::TrisizeFS, EmbeddedResource(glsl_trisize_frag), SPIRVShaderStage::Fragment,
@@ -147,6 +148,12 @@ VulkanShaderCache::VulkanShaderCache(WrappedVulkan *driver)
}
}
if(config.checks & FeatureCheck::FragmentStores)
{
if(!features.fragmentStoresAndAtomics)
continue;
}
if(config.stage == SPIRVShaderStage::Geometry && !features.geometryShader)
continue;
@@ -1182,6 +1182,11 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
"shaderStorageImageMultisample = false, save/load from 2DMS textures will not be "
"possible");
if(availFeatures.fragmentStoresAndAtomics)
enabledFeatures.fragmentStoresAndAtomics = true;
else
RDCWARN("fragmentStoresAndAtomics = false, quad overdraw overlay will not be available");
if(availFeatures.sampleRateShading)
enabledFeatures.sampleRateShading = true;
else