diff options
| author | Yong He <yonghe@outlook.com> | 2023-12-13 12:24:27 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-13 12:24:27 -0800 |
| commit | 1406aa2bc9e398e5e5565ba9c6adbb780c29fee1 (patch) | |
| tree | ab284f85a72d77db7462d3f38a272a3966ed7c83 /source/slang/hlsl.meta.slang | |
| parent | 6cbe215e58eeb8edc53d71e8f315e2fb55c0eeee (diff) | |
Add spirv intrinsics for `ConstBufferPointer`. (#3407)
Fixes #3305.
Fixes #3404.
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/hlsl.meta.slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 477e0cfaf..39ed13488 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -12546,7 +12546,37 @@ struct ConstBufferPointer { __glsl_version(450) __glsl_extension(GL_EXT_buffer_reference) - __target_intrinsic(glsl, "$0._data") [__NoSideEffect] - T get(); + T get() + { + __target_switch + { + case glsl: + __intrinsic_asm "$0._data"; + case spirv: + return spirv_asm { + result:$$T = OpLoad $this Aligned $Alignment; + }; + } + } + + __glsl_version(450) + __glsl_extension(GL_EXT_shader_explicit_arithmetic_types_int64) + __glsl_extension(GL_EXT_buffer_reference) + [__NoSideEffect] + [ForceInline] + bool isValid() + { + __target_switch + { + case glsl: + __intrinsic_asm "(uint64_t($0) != 0)"; + case spirv: + uint64_t zero = 0ULL; + return spirv_asm { + %ptrval:$$uint64_t = OpConvertPtrToU $this; + result:$$bool = OpINotEqual %ptrval $zero; + }; + } + } } |
