Commit 697fdf01 by t.jung

HLSL: fix invalid spir-v vector * scalar for float1

Missing check for float results in always emitting OpIMul even for float types
parent 7274bbc2
...@@ -4633,7 +4633,9 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, OpD ...@@ -4633,7 +4633,9 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, OpD
assert(builder.isScalar(right)); assert(builder.isScalar(right));
needMatchingVectors = false; needMatchingVectors = false;
binOp = spv::OpVectorTimesScalar; binOp = spv::OpVectorTimesScalar;
} else } else if (isFloat)
binOp = spv::OpFMul;
else
binOp = spv::OpIMul; binOp = spv::OpIMul;
break; break;
case glslang::EOpVectorTimesMatrix: case glslang::EOpVectorTimesMatrix:
......
...@@ -64,10 +64,6 @@ gl_FragCoord origin is upper left ...@@ -64,10 +64,6 @@ gl_FragCoord origin is upper left
0:? 'f1' ( global 1-component vector of float) 0:? 'f1' ( global 1-component vector of float)
0:? 'scalar' ( global float) 0:? 'scalar' ( global float)
error: SPIRV-Tools Validation Errors
error: Expected int scalar or vector type as Result Type: IMul
%20 = OpIMul %float %18 %19
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 27 // Id's are bound by 27
...@@ -106,10 +102,10 @@ error: Expected int scalar or vector type as Result Type: IMul ...@@ -106,10 +102,10 @@ error: Expected int scalar or vector type as Result Type: IMul
12: Label 12: Label
18: 6(float) Load 14(f1) 18: 6(float) Load 14(f1)
19: 6(float) Load 16(scalar) 19: 6(float) Load 16(scalar)
20: 6(float) IMul 18 19 20: 6(float) FMul 18 19
21: 6(float) Load 9(inFloat1) 21: 6(float) Load 9(inFloat1)
22: 6(float) Load 10(inScalar) 22: 6(float) Load 10(inScalar)
23: 6(float) IMul 21 22 23: 6(float) FMul 21 22
24: 6(float) FAdd 20 23 24: 6(float) FAdd 20 23
ReturnValue 24 ReturnValue 24
FunctionEnd FunctionEnd
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment