summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorvenkataram-nv <vedavamadath@nvidia.com>2024-07-10 23:34:44 -0700
committerGitHub <noreply@github.com>2024-07-10 23:34:44 -0700
commit055d4acd8c4d37a45b27e1333af96c203bec85e8 (patch)
tree65b432442e9546c068b82a589b871d80997d22c6 /source
parent4ae755f0a1f9828284f1bb8de15719a7b94938d6 (diff)
Implement 64-bit version of clockARB (#4571)
* Implement 64-bit version of clockARB * Fix capability versions * Corrections to capabilities --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang20
-rw-r--r--source/slang/slang-capabilities.capdef4
2 files changed, 23 insertions, 1 deletions
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;