summaryrefslogtreecommitdiffstats
path: root/tools/gfx/renderer-shared.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-02-28 18:09:27 -0800
committerGitHub <noreply@github.com>2022-02-28 18:09:27 -0800
commite6c9625e0f0d5d9703451fd2ebb8b206d210009c (patch)
treead2c46f5e9a5f7a6e67cacf5b7227d726f392088 /tools/gfx/renderer-shared.cpp
parentc31577953d5041c82375c22d847c2eba06106c58 (diff)
Use GLSL scalar layout for constant buffers. (#2147)
Diffstat (limited to 'tools/gfx/renderer-shared.cpp')
-rw-r--r--tools/gfx/renderer-shared.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/tools/gfx/renderer-shared.cpp b/tools/gfx/renderer-shared.cpp
index 555186840..83fc9223d 100644
--- a/tools/gfx/renderer-shared.cpp
+++ b/tools/gfx/renderer-shared.cpp
@@ -366,6 +366,7 @@ Result RendererBase::getFormatSupportedResourceStates(Format format, ResourceSta
{
SLANG_UNUSED(format);
outStates->add(ResourceState::AccelerationStructure);
+ outStates->add(ResourceState::AccelerationStructureBuildInput);
outStates->add(ResourceState::ConstantBuffer);
outStates->add(ResourceState::CopyDestination);
outStates->add(ResourceState::CopySource);
@@ -459,6 +460,22 @@ SLANG_NO_THROW Result SLANG_MCALL RendererBase::createMutableShaderObject(
return createMutableShaderObject(shaderObjectLayout, outObject);
}
+SLANG_NO_THROW Result SLANG_MCALL RendererBase::createShaderObjectFromTypeLayout(
+ slang::TypeLayoutReflection* typeLayout, IShaderObject** outObject)
+{
+ RefPtr<ShaderObjectLayoutBase> shaderObjectLayout;
+ SLANG_RETURN_ON_FAIL(getShaderObjectLayout(typeLayout, shaderObjectLayout.writeRef()));
+ return createShaderObject(shaderObjectLayout, outObject);
+}
+
+SLANG_NO_THROW Result SLANG_MCALL RendererBase::createMutableShaderObjectFromTypeLayout(
+ slang::TypeLayoutReflection* typeLayout, IShaderObject** outObject)
+{
+ RefPtr<ShaderObjectLayoutBase> shaderObjectLayout;
+ SLANG_RETURN_ON_FAIL(getShaderObjectLayout(typeLayout, shaderObjectLayout.writeRef()));
+ return createMutableShaderObject(shaderObjectLayout, outObject);
+}
+
Result RendererBase::getAccelerationStructurePrebuildInfo(
const IAccelerationStructure::BuildInputs& buildInputs,
IAccelerationStructure::PrebuildInfo* outPrebuildInfo)
@@ -531,7 +548,6 @@ Result RendererBase::getShaderObjectLayout(
ShaderObjectContainerType container,
ShaderObjectLayoutBase** outLayout)
{
- RefPtr<ShaderObjectLayoutBase> shaderObjectLayout;
switch (container)
{
case ShaderObjectContainerType::StructuredBuffer:
@@ -544,11 +560,18 @@ Result RendererBase::getShaderObjectLayout(
break;
}
- if( !m_shaderObjectLayoutCache.TryGetValue(type, shaderObjectLayout) )
+ auto typeLayout = slangContext.session->getTypeLayout(type);
+ return getShaderObjectLayout(typeLayout, outLayout);
+}
+
+Result RendererBase::getShaderObjectLayout(
+ slang::TypeLayoutReflection* typeLayout, ShaderObjectLayoutBase** outLayout)
+{
+ RefPtr<ShaderObjectLayoutBase> shaderObjectLayout;
+ if (!m_shaderObjectLayoutCache.TryGetValue(typeLayout, shaderObjectLayout))
{
- auto typeLayout = slangContext.session->getTypeLayout(type);
SLANG_RETURN_ON_FAIL(createShaderObjectLayout(typeLayout, shaderObjectLayout.writeRef()));
- m_shaderObjectLayoutCache.Add(type, shaderObjectLayout);
+ m_shaderObjectLayoutCache.Add(typeLayout, shaderObjectLayout);
}
*outLayout = shaderObjectLayout.detach();
return SLANG_OK;