From 8a6dbd70459e816e48890e6fe8e424ec53a6b48c Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 8 Apr 2020 13:21:32 +0100 Subject: [PATCH] Implement OpDot --- .../driver/shaders/spirv/spirv_debug.cpp | 19 +++++++++++++++++++ util/test/demos/vk/vk_shader_debug_zoo.cpp | 7 +++++++ 2 files changed, 26 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp index 908ba4f9c..c13429660 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp @@ -1168,6 +1168,25 @@ void ThreadState::StepNext(ShaderDebugState *state, SetDst(state, math.result, var); break; } + case Op::Dot: + { + OpDot dot(it); + + ShaderVariable var = GetSrc(dot.vector1); + ShaderVariable b = GetSrc(dot.vector2); + + RDCASSERTEQUAL(var.columns, b.columns); + + float ret = 0; + for(uint8_t c = 0; c < var.columns; c++) + ret += var.value.fv[c] * b.value.fv[c]; + + var.columns = 1; + var.value.f.x = ret; + + SetDst(state, dot.result, var); + break; + } case Op::VectorTimesScalar: { OpVectorTimesScalar mul(it); diff --git a/util/test/demos/vk/vk_shader_debug_zoo.cpp b/util/test/demos/vk/vk_shader_debug_zoo.cpp index 18cf18eba..822e46387 100644 --- a/util/test/demos/vk/vk_shader_debug_zoo.cpp +++ b/util/test/demos/vk/vk_shader_debug_zoo.cpp @@ -264,6 +264,13 @@ void main() Color = vec4(cross(a, b), 1.0f); break; } + case 25: + { + vec4 a = vec4(posone*2.5f, negone*1.8f, posone*8.5f, posone*3.9f); + vec4 b = vec4(negone*6.3f, posone*3.2f, negone*0.4f, zerof); + Color = vec4(dot(a.xyz, b.xyz), dot(a.w, b.w), dot(a, b), dot(a.wz, b.ww)); + break; + } default: break; } }