diff --git a/renderdoc/driver/d3d12/d3d12_shader_cache.cpp b/renderdoc/driver/d3d12/d3d12_shader_cache.cpp index 451fac839..da01a5c3e 100644 --- a/renderdoc/driver/d3d12/d3d12_shader_cache.cpp +++ b/renderdoc/driver/d3d12/d3d12_shader_cache.cpp @@ -495,6 +495,11 @@ rdcstr D3D12ShaderCache::GetShaderBlob(const char *source, const char *entry, uint32_t flags = DXBC::DecodeFlags(compileFlags) & ~D3DCOMPILE_NO_PRESHADER; rdcarray argsData; DXBC::EncodeDXCFlags(flags, argsData); + for(const ShaderCompileFlag &flag : compileFlags.flags) + { + if(flag.name == "@compile_option") + argsData.push_back(StringFormat::UTF82Wide(flag.value)); + } argsData.push_back(L"-select-validator internal"); rdcarray arguments; for(const rdcwstr &arg : argsData) diff --git a/renderdoc/driver/d3d12/d3d12_shader_cache.h b/renderdoc/driver/d3d12/d3d12_shader_cache.h index 0372f13bc..834b11c5c 100644 --- a/renderdoc/driver/d3d12/d3d12_shader_cache.h +++ b/renderdoc/driver/d3d12/d3d12_shader_cache.h @@ -57,6 +57,8 @@ public: void LoadDXC(); void SetCaching(bool enabled) { m_CacheShaders = enabled; } + uint32_t GetCompileFlags() const { return m_CompileFlags; } + private: static const uint32_t m_ShaderCacheMagic = 0xf000baba; static const uint32_t m_ShaderCacheVersion = 3;