Merge pull request #251 from amdrexu/bugfix
SPV: Use OpLogicalEqual/OpLogicalNotEqual for boolean type comparison.
This commit is contained in:
commit
ba00f67d2f
@ -2633,6 +2633,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
|
|||||||
{
|
{
|
||||||
bool isUnsigned = typeProxy == glslang::EbtUint;
|
bool isUnsigned = typeProxy == glslang::EbtUint;
|
||||||
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
|
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
|
||||||
|
bool isBool = typeProxy == glslang::EbtBool;
|
||||||
|
|
||||||
spv::Op binOp = spv::OpNop;
|
spv::Op binOp = spv::OpNop;
|
||||||
bool needMatchingVectors = true; // for non-matrix ops, would a scalar need to smear to match a vector?
|
bool needMatchingVectors = true; // for non-matrix ops, would a scalar need to smear to match a vector?
|
||||||
@ -2820,6 +2821,8 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
|
|||||||
case glslang::EOpVectorEqual:
|
case glslang::EOpVectorEqual:
|
||||||
if (isFloat)
|
if (isFloat)
|
||||||
binOp = spv::OpFOrdEqual;
|
binOp = spv::OpFOrdEqual;
|
||||||
|
else if (isBool)
|
||||||
|
binOp = spv::OpLogicalEqual;
|
||||||
else
|
else
|
||||||
binOp = spv::OpIEqual;
|
binOp = spv::OpIEqual;
|
||||||
break;
|
break;
|
||||||
@ -2827,6 +2830,8 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
|
|||||||
case glslang::EOpVectorNotEqual:
|
case glslang::EOpVectorNotEqual:
|
||||||
if (isFloat)
|
if (isFloat)
|
||||||
binOp = spv::OpFOrdNotEqual;
|
binOp = spv::OpFOrdNotEqual;
|
||||||
|
else if (isBool)
|
||||||
|
binOp = spv::OpLogicalNotEqual;
|
||||||
else
|
else
|
||||||
binOp = spv::OpINotEqual;
|
binOp = spv::OpINotEqual;
|
||||||
break;
|
break;
|
||||||
|
@ -470,7 +470,7 @@ Linked fragment stage:
|
|||||||
339: Label
|
339: Label
|
||||||
341: 179(bvec4) Load 181(ub41)
|
341: 179(bvec4) Load 181(ub41)
|
||||||
343: 179(bvec4) Load 342(ub42)
|
343: 179(bvec4) Load 342(ub42)
|
||||||
344: 179(bvec4) IEqual 341 343
|
344: 179(bvec4) LogicalEqual 341 343
|
||||||
345: 178(bool) Any 344
|
345: 178(bool) Any 344
|
||||||
Branch 340
|
Branch 340
|
||||||
340: Label
|
340: Label
|
||||||
@ -482,7 +482,7 @@ Linked fragment stage:
|
|||||||
348: Label
|
348: Label
|
||||||
350: 179(bvec4) Load 181(ub41)
|
350: 179(bvec4) Load 181(ub41)
|
||||||
351: 179(bvec4) Load 342(ub42)
|
351: 179(bvec4) Load 342(ub42)
|
||||||
352: 179(bvec4) INotEqual 350 351
|
352: 179(bvec4) LogicalNotEqual 350 351
|
||||||
353: 178(bool) Any 352
|
353: 178(bool) Any 352
|
||||||
Branch 349
|
Branch 349
|
||||||
349: Label
|
349: Label
|
||||||
|
@ -91,6 +91,6 @@ Linked vertex stage:
|
|||||||
9(b): 7(ptr) FunctionParameter
|
9(b): 7(ptr) FunctionParameter
|
||||||
11: Label
|
11: Label
|
||||||
12: 6(bool) Load 9(b)
|
12: 6(bool) Load 9(b)
|
||||||
14: 6(bool) INotEqual 12 13
|
14: 6(bool) LogicalNotEqual 12 13
|
||||||
ReturnValue 14
|
ReturnValue 14
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
Loading…
x
Reference in New Issue
Block a user