summaryrefslogtreecommitdiff
path: root/source/slang
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/hlsl.meta.slang12
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";