mirror of
https://github.com/libretro/glslang.git
synced 2025-02-03 13:52:01 +00:00
Generate correct image operand mask for Offset and ConstOffset(#77)
This commit is contained in:
parent
820a22fcc8
commit
86e608133c
@ -1188,7 +1188,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool fetch, b
|
||||
xplicit = true;
|
||||
}
|
||||
if (parameters.offset) {
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask);
|
||||
if (isConstant(parameters.offset))
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetMask);
|
||||
else
|
||||
mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask);
|
||||
texArgs[numArgs++] = parameters.offset;
|
||||
}
|
||||
// TBD: if Offset is constant, use ImageOperandsConstOffsetMask
|
||||
|
@ -136,6 +136,11 @@ public:
|
||||
bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; }
|
||||
bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
|
||||
|
||||
bool isConstant(Id resultId) const
|
||||
{
|
||||
Op opCode = getOpCode(resultId);
|
||||
return opCode == OpConstantTrue || opCode == OpConstantFalse || opCode == OpConstant || opCode == OpConstantComposite || opCode == OpConstantNull;
|
||||
}
|
||||
bool isConstantScalar(Id resultId) const { return getOpCode(resultId) == OpConstant; }
|
||||
unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user