summaryrefslogtreecommitdiff
path: root/tools/gfx/renderer-shared.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gfx/renderer-shared.h')
-rw-r--r--tools/gfx/renderer-shared.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/tools/gfx/renderer-shared.h b/tools/gfx/renderer-shared.h
index b543e709b..f16db900a 100644
--- a/tools/gfx/renderer-shared.h
+++ b/tools/gfx/renderer-shared.h
@@ -164,6 +164,12 @@ protected:
// The specialized shader object type.
ExtendedShaderObjectType shaderObjectType = { nullptr, kInvalidComponentID };
+ static bool _doesValueFitInExistentialPayload(
+ slang::TypeLayoutReflection* concreteTypeLayout,
+ slang::TypeLayoutReflection* existentialFieldLayout);
+
+ Result _getSpecializedShaderObjectType(ExtendedShaderObjectType* outType);
+
public:
SLANG_REF_OBJECT_IUNKNOWN_ALL
IShaderObject* getInterface(const Slang::Guid& guid);
@@ -176,7 +182,7 @@ public:
// Get the final type this shader object represents. If the shader object's type has existential fields,
// this function will return a specialized type using the bound sub-objects' type as specialization argument.
- Result getSpecializedShaderObjectType(ExtendedShaderObjectType* outType);
+ virtual Result getSpecializedShaderObjectType(ExtendedShaderObjectType* outType);
RendererBase* getRenderer() { return m_layout->getRenderer(); }
@@ -368,6 +374,10 @@ public:
virtual SLANG_NO_THROW Result SLANG_MCALL createShaderObject(slang::TypeReflection* type, IShaderObject** outObject) SLANG_OVERRIDE;
+ Result getShaderObjectLayout(
+ slang::TypeReflection* type,
+ ShaderObjectLayoutBase** outLayout);
+
protected:
// Retrieves the currently bound unspecialized pipeline.
// If the bound pipeline is not created from a Slang component, an implementation should return null.
@@ -381,10 +391,6 @@ protected:
slang::TypeLayoutReflection* typeLayout,
ShaderObjectLayoutBase** outLayout) = 0;
- Result getShaderObjectLayout(
- slang::TypeReflection* type,
- ShaderObjectLayoutBase** outLayout);
-
virtual Result createShaderObject(
ShaderObjectLayoutBase* layout,
IShaderObject** outObject) = 0;