diff options
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 86e77c650..73bdee96e 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -8884,6 +8884,12 @@ __generic<T : __BuiltinFloatingPointType, let N : int> [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, sm_4_0_version)] T dot(vector<T, N> x, vector<T, N> y) { + // Handle 1-vector case explicitly since many backends don't support it natively + if (N == 1) + { + return x[0] * y[0]; + } + __target_switch { case glsl: __intrinsic_asm "dot"; @@ -8906,6 +8912,12 @@ __generic<T : __BuiltinIntegerType, let N : int> [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, sm_4_0_version)] T dot(vector<T, N> x, vector<T, N> y) { + // Handle 1-vector case explicitly since many backends don't support it natively + if (N == 1) + { + return x[0] * y[0]; + } + __target_switch { case hlsl: __intrinsic_asm "dot"; |
