diff --git a/renderdoc/driver/shaders/dxbc/dxbc_container.cpp b/renderdoc/driver/shaders/dxbc/dxbc_container.cpp index fe6d40da0..f4ac5cd8b 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_container.cpp +++ b/renderdoc/driver/shaders/dxbc/dxbc_container.cpp @@ -647,6 +647,35 @@ const rdcstr &DXBCContainer::GetDisassembly(bool dxcStyle) globalFlagsString += commentString + " Raytracing tier 1.1 features\n"; if(m_GlobalFlags & GlobalShaderFlags::SamplerFeedback) globalFlagsString += commentString + " Sampler feedback\n"; + if(m_GlobalFlags & GlobalShaderFlags::AtomicInt64OnTypedResource) + globalFlagsString += commentString + " 64-bit Atomics on Typed Resources\n"; + if(m_GlobalFlags & GlobalShaderFlags::AtomicInt64OnGroupShared) + globalFlagsString += commentString + " 64-bit Atomics on Group Shared\n"; + if(m_GlobalFlags & GlobalShaderFlags::DerivativesInMeshAndAmpShaders) + globalFlagsString += + commentString + " Derivatives in mesh and amplification shaders\n"; + if(m_GlobalFlags & GlobalShaderFlags::ResourceDescriptorHeapIndexing) + globalFlagsString += commentString + " Resource descriptor heap indexing\n"; + if(m_GlobalFlags & GlobalShaderFlags::SamplerDescriptorHeapIndexing) + globalFlagsString += commentString + " Sampler descriptor heap indexing\n"; + if(m_GlobalFlags & GlobalShaderFlags::Reserved) + globalFlagsString += commentString + " Wave Matrix\n"; + if(m_GlobalFlags & GlobalShaderFlags::AtomicInt64OnHeapResource) + globalFlagsString += commentString + " 64-bit Atomics on Heap Resources\n"; + if(m_GlobalFlags & GlobalShaderFlags::AdvancedTextureOps) + globalFlagsString += commentString + " Advanced Texture Ops\n"; + if(m_GlobalFlags & GlobalShaderFlags::WriteableMSAATextures) + globalFlagsString += commentString + " Writeable MSAA Textures\n"; + if(m_GlobalFlags & GlobalShaderFlags::SampleCmpGradientOrBias) + globalFlagsString += commentString + " SampleCmp with gradient or bias\n"; + if(m_GlobalFlags & GlobalShaderFlags::ShaderFeatureInfo_ExtendedCommandInfo) + globalFlagsString += commentString + " Extended command info\n"; + if(m_GlobalFlags & ~GlobalShaderFlags::KNOWN_FLAGS_MASK) + globalFlagsString += + commentString + StringFormat::Fmt(" Unknown shader flags 0x%X\n", + (uint64_t)m_GlobalFlags - + ((uint64_t)m_GlobalFlags & + (uint64_t)GlobalShaderFlags::KNOWN_FLAGS_MASK)); globalFlagsString += commentString + "\n"; } @@ -707,7 +736,16 @@ void DXBCContainer::FillTraceLineInfo(ShaderDebugTrace &trace) const extraLines++; if(m_GlobalFlags != GlobalShaderFlags::None) - extraLines += (uint32_t)Bits::CountOnes((uint32_t)m_GlobalFlags) + 2; + { + extraLines += 2; + uint64_t knownFlags = (uint64_t)m_GlobalFlags & (uint64_t)GlobalShaderFlags::KNOWN_FLAGS_MASK; + uint32_t upperBits = knownFlags >> 32; + uint32_t lowerBits = knownFlags & 0xFFFFFFFF; + extraLines += (uint32_t)Bits::CountOnes(upperBits); + extraLines += (uint32_t)Bits::CountOnes(lowerBits); + if(m_GlobalFlags & ~GlobalShaderFlags::KNOWN_FLAGS_MASK) + extraLines += 1; + } if(m_DXBCByteCode) { diff --git a/renderdoc/driver/shaders/dxbc/dxbc_container.h b/renderdoc/driver/shaders/dxbc/dxbc_container.h index e50487482..1f47c0d46 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_container.h +++ b/renderdoc/driver/shaders/dxbc/dxbc_container.h @@ -133,6 +133,19 @@ enum class GlobalShaderFlags : int64_t ShadingRate = 0x080000, Raytracing1_1 = 0x100000, SamplerFeedback = 0x200000, + AtomicInt64OnTypedResource = 0x400000, + AtomicInt64OnGroupShared = 0x800000, + DerivativesInMeshAndAmpShaders = 0x1000000, + ResourceDescriptorHeapIndexing = 0x2000000, + SamplerDescriptorHeapIndexing = 0x4000000, + Reserved = 0x8000000, + AtomicInt64OnHeapResource = 0x10000000, + AdvancedTextureOps = 0x20000000, + WriteableMSAATextures = 0x40000000, + SampleCmpGradientOrBias = 0x80000000, + ShaderFeatureInfo_ExtendedCommandInfo = 0x100000000, + KNOWN_FLAGS_MASK = + ShaderFeatureInfo_ExtendedCommandInfo + (ShaderFeatureInfo_ExtendedCommandInfo - 1), }; BITMASK_OPERATORS(GlobalShaderFlags);