summaryrefslogtreecommitdiffstats
path: root/tools/gfx/renderer-shared.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-02-10 12:39:55 -0800
committerGitHub <noreply@github.com>2022-02-10 12:39:55 -0800
commit120f97fb8d4e22b057cea43b503611f8292ade37 (patch)
treee1f7bae615b499425702f7e82bc556a312c7515c /tools/gfx/renderer-shared.cpp
parent0c04885da9edc3df7a1ef5cb520be1bd29eb13e4 (diff)
gfx: support shader record overwrite and fix QueryPool. (#2123)
* Various fixes to gfx. * Fix. * Fixes. * Fix. * gfx: support root parameter via user-defined attribute. * Fix. * Fix. * Skip d3d12 tests on win x86. * Fixes. * gfx: support shader record overwrite. * Fix QueyPool implementation. * Rename to `getBindingRangeLeafVariable` Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tools/gfx/renderer-shared.cpp')
-rw-r--r--tools/gfx/renderer-shared.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/gfx/renderer-shared.cpp b/tools/gfx/renderer-shared.cpp
index f9ffe8dfd..a97462c73 100644
--- a/tools/gfx/renderer-shared.cpp
+++ b/tools/gfx/renderer-shared.cpp
@@ -957,17 +957,42 @@ Result ShaderTableBase::init(const IShaderTable::Desc& desc)
m_missShaderCount = desc.missShaderCount;
m_hitGroupCount = desc.hitGroupCount;
m_entryPointNames.reserve(desc.hitGroupCount + desc.missShaderCount + desc.rayGenShaderCount);
+ m_recordOverwrites.reserve(desc.hitGroupCount + desc.missShaderCount + desc.rayGenShaderCount);
for (uint32_t i = 0; i < desc.rayGenShaderCount; i++)
{
m_entryPointNames.add(desc.rayGenShaderEntryPointNames[i]);
+ if (desc.rayGenShaderRecordOverwrites)
+ {
+ m_recordOverwrites.add(desc.rayGenShaderRecordOverwrites[i]);
+ }
+ else
+ {
+ m_recordOverwrites.add(ShaderRecordOverwrite{});
+ }
}
for (uint32_t i = 0; i < desc.missShaderCount; i++)
{
m_entryPointNames.add(desc.missShaderEntryPointNames[i]);
+ if (desc.missShaderRecordOverwrites)
+ {
+ m_recordOverwrites.add(desc.missShaderRecordOverwrites[i]);
+ }
+ else
+ {
+ m_recordOverwrites.add(ShaderRecordOverwrite{});
+ }
}
for (uint32_t i = 0; i < desc.hitGroupCount; i++)
{
m_entryPointNames.add(desc.hitGroupNames[i]);
+ if (desc.hitGroupRecordOverwrites)
+ {
+ m_recordOverwrites.add(desc.hitGroupRecordOverwrites[i]);
+ }
+ else
+ {
+ m_recordOverwrites.add(ShaderRecordOverwrite{});
+ }
}
return SLANG_OK;
}