summaryrefslogtreecommitdiff
path: root/tools/gfx/render.h
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2021-02-17 18:42:23 -0800
committerGitHub <noreply@github.com>2021-02-17 18:42:23 -0800
commitb1e376fa1e7dd0ff59991bdf1d3d859d3b63a74a (patch)
tree94245294fd9e569ed5a231afff44bd5e06203078 /tools/gfx/render.h
parentbdb0c0bb4c22b7956e1d8062c5bdde1caab44255 (diff)
Streamline shader object creation (#1717)
This change kind of rolls together two different simplifications: 1. The `createShaderObject()` shouldn't really need to take an `IShaderObjectLayout` because it could just take the `slang::TypeLayoutReflection` instead and create the shader-object layout behind the scenes. 2. For that matter, it needn't take a `slang::TypeLayoutReflection` either, becaues it could just take a `slang::TypeReflection` and query the layout of that type behind the scenes. The combination of these two changes means: * `IShaderObjectLayout` is gone from the public API, as is `createShaderObjectLayout()` * `createShaderObject()` directly takes a `slang::TypeReflection` and allocates a shader object of that type The result is simpler and more streamlined application code. Note that under the hood the implementation still has shader-object layouts, using the `ShaderObjectLayoutBase` class. A few locations had to change to use `RefPtr`s instead of `ComPtr`s now that the class is no longer a public COM-lite API type. The hope is that this change makes it easier to allocate/cache layouts for things like specialized types "under the hood," as is needed to implement parameter setting for static specialization.
Diffstat (limited to 'tools/gfx/render.h')
-rw-r--r--tools/gfx/render.h24
1 files changed, 3 insertions, 21 deletions
diff --git a/tools/gfx/render.h b/tools/gfx/render.h
index 053f9e1e2..7b77650e8 100644
--- a/tools/gfx/render.h
+++ b/tools/gfx/render.h
@@ -840,14 +840,6 @@ struct ShaderOffset
SlangInt bindingArrayIndex = 0;
};
-class IShaderObjectLayout : public ISlangUnknown
-{};
-#define SLANG_UUID_IShaderObjectLayout \
- { \
- 0x27f3f67e, 0xa49d, 0x4aae, { 0xa6, 0xd, 0xfa, 0xc2, 0x6b, 0x1c, 0x10, 0x7c } \
- }
-
-
class IShaderObject : public ISlangUnknown
{
public:
@@ -1220,22 +1212,12 @@ public:
return layout;
}
- virtual SLANG_NO_THROW Result SLANG_MCALL createShaderObjectLayout(
- slang::TypeLayoutReflection* typeLayout, IShaderObjectLayout** outLayout) = 0;
-
- inline ComPtr<IShaderObjectLayout> createShaderObjectLayout(slang::TypeLayoutReflection* typeLayout)
- {
- ComPtr<IShaderObjectLayout> layout;
- SLANG_RETURN_NULL_ON_FAIL(createShaderObjectLayout(typeLayout, layout.writeRef()));
- return layout;
- }
-
- virtual SLANG_NO_THROW Result SLANG_MCALL createShaderObject(IShaderObjectLayout* layout, IShaderObject** outObject) = 0;
+ virtual SLANG_NO_THROW Result SLANG_MCALL createShaderObject(slang::TypeReflection* type, IShaderObject** outObject) = 0;
- inline ComPtr<IShaderObject> createShaderObject(IShaderObjectLayout* layout)
+ inline ComPtr<IShaderObject> createShaderObject(slang::TypeReflection* type)
{
ComPtr<IShaderObject> object;
- SLANG_RETURN_NULL_ON_FAIL(createShaderObject(layout, object.writeRef()));
+ SLANG_RETURN_NULL_ON_FAIL(createShaderObject(type, object.writeRef()));
return object;
}