mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 17:10:47 +00:00
Check for and enable fragmentStoresAndAtomics feature for quad overdraw
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user