diff options
| author | Yong He <yonghe@outlook.com> | 2024-11-21 14:07:23 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-21 14:07:23 -0800 |
| commit | fdf061e278720ec066a1fac8f1f35a22e817bf2d (patch) | |
| tree | db6cc05613afacdb9c67a26695355ff1b0086d79 /source/slang/hlsl.meta.slang | |
| parent | dcc7c6f009afc0f55e79ced050b772ea9d3b25ae (diff) | |
Add datalayout for constant buffers. (#5608)
* Add datalayout for constant buffers.
* Fixes.
* Fix test.
* Fix glsl codegen.
* Update spirv-specific doc.
* Fix test.
* Fix binding in the presense of specialization constants.
* address comments.
* Add a test for constant buffer layout.
Diffstat (limited to 'source/slang/hlsl.meta.slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 7eb4af135..84beb3b4b 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -10,12 +10,14 @@ void __requireGLSLExtension(String extensionName); /// Represents an interface for buffer data layout. /// This interface is used as a base for defining specific data layouts for buffers. [sealed] +__magic_type(IBufferDataLayoutType) interface IBufferDataLayout { } /// @category misc_types __intrinsic_type($(kIROp_DefaultBufferLayoutType)) +__magic_type(DefaultDataLayoutType) struct DefaultDataLayout : IBufferDataLayout {}; @@ -23,6 +25,7 @@ struct DefaultDataLayout : IBufferDataLayout __intrinsic_type($(kIROp_Std140BufferLayoutType)) [require(spirv)] [require(glsl)] +__magic_type(Std140DataLayoutType) struct Std140DataLayout : IBufferDataLayout {}; @@ -30,11 +33,13 @@ struct Std140DataLayout : IBufferDataLayout __intrinsic_type($(kIROp_Std430BufferLayoutType)) [require(spirv)] [require(glsl)] +__magic_type(Std430DataLayoutType) struct Std430DataLayout : IBufferDataLayout {}; /// @category misc_types __intrinsic_type($(kIROp_ScalarBufferLayoutType)) +__magic_type(ScalarDataLayoutType) struct ScalarDataLayout : IBufferDataLayout {}; @@ -20588,7 +20593,7 @@ const char* kDynamicResourceCastableTypes[] = { "SamplerState", "SamplerComparisonState", - "ConstantBuffer<T>", "TextureBuffer<T>", + "ConstantBuffer<T, L>", "TextureBuffer<T>", }; for (auto typeName : kDynamicResourceCastableTypes) { @@ -20596,6 +20601,8 @@ for (auto typeName : kDynamicResourceCastableTypes) { if (strstr(typeName, "StructuredBuffer<T, L>")) sb << "__generic<T, L : IBufferDataLayout = DefaultDataLayout>\n"; + else if (strstr(typeName, "ConstantBuffer<T, L>")) + sb << "__generic<T, L : IBufferDataLayout = DefaultDataLayout>\n"; else if (strstr(typeName, "Buffer<T>")) sb << "__generic<T>\n"; }}}} |
