From 055d4acd8c4d37a45b27e1333af96c203bec85e8 Mon Sep 17 00:00:00 2001 From: venkataram-nv Date: Wed, 10 Jul 2024 23:34:44 -0700 Subject: Implement 64-bit version of clockARB (#4571) * Implement 64-bit version of clockARB * Fix capability versions * Corrections to capabilities --------- Co-authored-by: Yong He --- source/slang/hlsl.meta.slang | 20 +++++++++++++++++++- source/slang/slang-capabilities.capdef | 4 ++++ 2 files changed, 23 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 9fcd002a8..2639c1e88 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -20156,7 +20156,6 @@ struct ConstBufferPointer __glsl_version(450) __glsl_extension(GL_ARB_shader_clock) -__target_intrinsic(glsl, clock2x32ARB) [require(glsl_spirv, GL_ARB_shader_clock)] uint2 clock2x32ARB() { @@ -20172,3 +20171,22 @@ uint2 clock2x32ARB() }; } } + +__glsl_version(450) +__glsl_extension(GL_ARB_shader_clock) +__glsl_extension(GL_ARB_gpu_shader_int64) +[require(glsl_spirv, GL_ARB_shader_clock64)] +uint64_t clockARB() +{ + __target_switch + { + case glsl: __intrinsic_asm "clockARB"; + case spirv: + const uint32_t scopeId_subgroup = 3; + return spirv_asm { + OpCapability ShaderClockKHR; + OpExtension "SPV_KHR_shader_clock"; + result:$$uint64_t = OpReadClockKHR $scopeId_subgroup; + }; + } +} diff --git a/source/slang/slang-capabilities.capdef b/source/slang/slang-capabilities.capdef index 38fd708a5..a27146bf9 100644 --- a/source/slang/slang-capabilities.capdef +++ b/source/slang/slang-capabilities.capdef @@ -317,6 +317,8 @@ def _GL_ARB_sparse_texture_clamp : _GL_ARB_sparse_texture2; def _GL_ARB_texture_gather : _GLSL_130; def _GL_ARB_texture_query_levels : _GLSL_130; def _GL_ARB_shader_clock : _GLSL_450; +def _GL_ARB_gpu_shader_int64 : _GLSL_400; +def _GL_ARB_shader_clock64 : _GL_ARB_shader_clock + _GL_ARB_gpu_shader_int64; def _GL_KHR_memory_scope_semantics : _GLSL_420; def _GL_KHR_shader_subgroup_arithmetic : _GLSL_140; @@ -373,6 +375,8 @@ alias GL_ARB_sparse_texture_clamp = _GL_ARB_sparse_texture_clamp | spvSparseResi alias GL_ARB_texture_gather = _GL_ARB_texture_gather | spvImageGatherExtended | metal; alias GL_ARB_texture_query_levels = _GL_ARB_texture_query_levels | spvImageQuery | metal; alias GL_ARB_shader_clock = _GL_ARB_shader_clock | spvShaderClockKHR; +alias GL_ARB_shader_clock64 = _GL_ARB_shader_clock64 | spvShaderClockKHR; +alias GL_ARB_gpu_shader_int64 = _GL_ARB_gpu_shader_int64; alias GL_KHR_memory_scope_semantics = _GL_KHR_memory_scope_semantics | _spirv_1_0; alias GL_KHR_shader_subgroup_arithmetic = _GL_KHR_shader_subgroup_arithmetic | spvGroupNonUniformArithmetic; -- cgit v1.2.3