mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-10 04:20:06 +00:00
HLSL: fix invalid spir-v vector * scalar for float1
Missing check for float results in always emitting OpIMul even for float types
This commit is contained in:
parent
7274bbc27c
commit
697fdf015f
@ -4633,7 +4633,9 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, OpD
|
||||
assert(builder.isScalar(right));
|
||||
needMatchingVectors = false;
|
||||
binOp = spv::OpVectorTimesScalar;
|
||||
} else
|
||||
} else if (isFloat)
|
||||
binOp = spv::OpFMul;
|
||||
else
|
||||
binOp = spv::OpIMul;
|
||||
break;
|
||||
case glslang::EOpVectorTimesMatrix:
|
||||
|
@ -64,10 +64,6 @@ gl_FragCoord origin is upper left
|
||||
0:? 'f1' ( global 1-component vector of 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
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 27
|
||||
@ -106,10 +102,10 @@ error: Expected int scalar or vector type as Result Type: IMul
|
||||
12: Label
|
||||
18: 6(float) Load 14(f1)
|
||||
19: 6(float) Load 16(scalar)
|
||||
20: 6(float) IMul 18 19
|
||||
20: 6(float) FMul 18 19
|
||||
21: 6(float) Load 9(inFloat1)
|
||||
22: 6(float) Load 10(inScalar)
|
||||
23: 6(float) IMul 21 22
|
||||
23: 6(float) FMul 21 22
|
||||
24: 6(float) FAdd 20 23
|
||||
ReturnValue 24
|
||||
FunctionEnd
|
||||
|
Loading…
Reference in New Issue
Block a user