Merge pull request #81 from amdrexu/myfix

Generate correct image operand mask for Offset and ConstOffset(#77) and correct arg # for rect. texelFetchOffset.
This commit is contained in:
John Kessenich 2015-10-13 10:04:26 -06:00
commit d4a7a8e721
7 changed files with 489 additions and 451 deletions

View File

@ -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

View File

@ -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); }

View File

@ -52,22 +52,21 @@ Shader version: 430
0:43 Constant:
0:43 3 (const int)
0:43 3 (const int)
0:44 add second child into first child (temp float)
0:44 direct index (temp float)
0:44 'v' (temp 4-component vector of float)
0:44 add second child into first child (temp 4-component vector of float)
0:44 'v' (temp 4-component vector of float)
0:44 textureFetchOffset (global 4-component vector of float)
0:44 'sr' (uniform sampler2DRect)
0:44 'ic2D' (flat in 2-component vector of int)
0:44 Constant:
0:44 1 (const int)
0:44 textureLodOffset (global float)
0:44 's2DShadow' (uniform sampler2DShadow)
0:44 'c3D' (smooth in 3-component vector of float)
0:44 'c1D' (smooth in float)
0:44 Constant:
0:44 3 (const int)
0:44 3 (const int)
0:45 add second child into first child (temp 4-component vector of float)
0:45 'v' (temp 4-component vector of float)
0:45 textureProjLodOffset (global 4-component vector of float)
0:45 's2D' (uniform sampler2D)
0:44 4 (const int)
0:44 4 (const int)
0:45 add second child into first child (temp float)
0:45 direct index (temp float)
0:45 'v' (temp 4-component vector of float)
0:45 Constant:
0:45 1 (const int)
0:45 textureLodOffset (global float)
0:45 's2DShadow' (uniform sampler2DShadow)
0:45 'c3D' (smooth in 3-component vector of float)
0:45 'c1D' (smooth in float)
0:45 Constant:
@ -75,115 +74,124 @@ Shader version: 430
0:45 3 (const int)
0:46 add second child into first child (temp 4-component vector of float)
0:46 'v' (temp 4-component vector of float)
0:46 textureGrad (global 4-component vector of float)
0:46 'sCube' (uniform samplerCube)
0:46 textureProjLodOffset (global 4-component vector of float)
0:46 's2D' (uniform sampler2D)
0:46 'c3D' (smooth in 3-component vector of float)
0:46 'c3D' (smooth in 3-component vector of float)
0:46 'c3D' (smooth in 3-component vector of float)
0:47 add second child into first child (temp float)
0:47 direct index (temp float)
0:47 'v' (temp 4-component vector of float)
0:47 Constant:
0:47 0 (const int)
0:47 textureGradOffset (global float)
0:47 's2DArrayShadow' (uniform sampler2DArrayShadow)
0:47 'c4D' (smooth in 4-component vector of float)
0:47 'c2D' (smooth in 2-component vector of float)
0:47 'c2D' (smooth in 2-component vector of float)
0:47 Constant:
0:47 3 (const int)
0:47 3 (const int)
0:48 add second child into first child (temp 4-component vector of float)
0:48 'v' (temp 4-component vector of float)
0:48 textureProjGrad (global 4-component vector of float)
0:48 's3D' (uniform sampler3D)
0:46 'c1D' (smooth in float)
0:46 Constant:
0:46 3 (const int)
0:46 3 (const int)
0:47 add second child into first child (temp 4-component vector of float)
0:47 'v' (temp 4-component vector of float)
0:47 textureGrad (global 4-component vector of float)
0:47 'sCube' (uniform samplerCube)
0:47 'c3D' (smooth in 3-component vector of float)
0:47 'c3D' (smooth in 3-component vector of float)
0:47 'c3D' (smooth in 3-component vector of float)
0:48 add second child into first child (temp float)
0:48 direct index (temp float)
0:48 'v' (temp 4-component vector of float)
0:48 Constant:
0:48 0 (const int)
0:48 textureGradOffset (global float)
0:48 's2DArrayShadow' (uniform sampler2DArrayShadow)
0:48 'c4D' (smooth in 4-component vector of float)
0:48 'c3D' (smooth in 3-component vector of float)
0:48 'c3D' (smooth in 3-component vector of float)
0:48 'c2D' (smooth in 2-component vector of float)
0:48 'c2D' (smooth in 2-component vector of float)
0:48 Constant:
0:48 3 (const int)
0:48 3 (const int)
0:49 add second child into first child (temp 4-component vector of float)
0:49 'v' (temp 4-component vector of float)
0:49 textureProjGradOffset (global 4-component vector of float)
0:49 's2D' (uniform sampler2D)
0:49 textureProjGrad (global 4-component vector of float)
0:49 's3D' (uniform sampler3D)
0:49 'c4D' (smooth in 4-component vector of float)
0:49 'c3D' (smooth in 3-component vector of float)
0:49 'c2D' (smooth in 2-component vector of float)
0:49 'c2D' (smooth in 2-component vector of float)
0:49 Constant:
0:49 3 (const int)
0:49 3 (const int)
0:51 Sequence
0:51 move second child to first child (temp 4-component vector of int)
0:51 'iv' (temp 4-component vector of int)
0:51 texture (global 4-component vector of int)
0:51 'is2D' (uniform isampler2D)
0:51 'c2D' (smooth in 2-component vector of float)
0:52 add second child into first child (temp 4-component vector of float)
0:52 'v' (temp 4-component vector of float)
0:52 Convert int to float (temp 4-component vector of float)
0:49 'c3D' (smooth in 3-component vector of float)
0:50 add second child into first child (temp 4-component vector of float)
0:50 'v' (temp 4-component vector of float)
0:50 textureProjGradOffset (global 4-component vector of float)
0:50 's2D' (uniform sampler2D)
0:50 'c3D' (smooth in 3-component vector of float)
0:50 'c2D' (smooth in 2-component vector of float)
0:50 'c2D' (smooth in 2-component vector of float)
0:50 Constant:
0:50 3 (const int)
0:50 3 (const int)
0:52 Sequence
0:52 move second child to first child (temp 4-component vector of int)
0:52 'iv' (temp 4-component vector of int)
0:53 move second child to first child (temp 4-component vector of int)
0:53 'iv' (temp 4-component vector of int)
0:53 textureProjOffset (global 4-component vector of int)
0:53 'is2D' (uniform isampler2D)
0:53 'c4D' (smooth in 4-component vector of float)
0:53 Constant:
0:53 3 (const int)
0:53 3 (const int)
0:54 add second child into first child (temp 4-component vector of float)
0:54 'v' (temp 4-component vector of float)
0:54 Convert int to float (temp 4-component vector of float)
0:54 'iv' (temp 4-component vector of int)
0:55 move second child to first child (temp 4-component vector of int)
0:55 'iv' (temp 4-component vector of int)
0:55 textureProjLod (global 4-component vector of int)
0:55 'is2D' (uniform isampler2D)
0:55 'c3D' (smooth in 3-component vector of float)
0:55 'c1D' (smooth in float)
0:56 add second child into first child (temp 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:56 Convert int to float (temp 4-component vector of float)
0:56 'iv' (temp 4-component vector of int)
0:57 move second child to first child (temp 4-component vector of int)
0:57 'iv' (temp 4-component vector of int)
0:57 textureProjGrad (global 4-component vector of int)
0:57 'is2D' (uniform isampler2D)
0:57 'c3D' (smooth in 3-component vector of float)
0:57 'c2D' (smooth in 2-component vector of float)
0:57 'c2D' (smooth in 2-component vector of float)
0:58 add second child into first child (temp 4-component vector of float)
0:58 'v' (temp 4-component vector of float)
0:58 Convert int to float (temp 4-component vector of float)
0:58 'iv' (temp 4-component vector of int)
0:59 move second child to first child (temp 4-component vector of int)
0:59 'iv' (temp 4-component vector of int)
0:59 texture (global 4-component vector of int)
0:59 'is3D' (uniform isampler3D)
0:59 'c3D' (smooth in 3-component vector of float)
0:59 Constant:
0:59 4.200000
0:60 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float)
0:60 Convert int to float (temp 4-component vector of float)
0:60 'iv' (temp 4-component vector of int)
0:61 move second child to first child (temp 4-component vector of int)
0:61 'iv' (temp 4-component vector of int)
0:61 textureLod (global 4-component vector of int)
0:61 'isCube' (uniform isamplerCube)
0:61 'c3D' (smooth in 3-component vector of float)
0:61 'c1D' (smooth in float)
0:62 add second child into first child (temp 4-component vector of float)
0:62 'v' (temp 4-component vector of float)
0:62 Convert int to float (temp 4-component vector of float)
0:62 'iv' (temp 4-component vector of int)
0:63 move second child to first child (temp 4-component vector of int)
0:63 'iv' (temp 4-component vector of int)
0:63 textureFetch (global 4-component vector of int)
0:63 'is2DArray' (uniform isampler2DArray)
0:63 'ic3D' (flat in 3-component vector of int)
0:63 'ic1D' (flat in int)
0:64 add second child into first child (temp 4-component vector of float)
0:64 'v' (temp 4-component vector of float)
0:64 Convert int to float (temp 4-component vector of float)
0:64 'iv' (temp 4-component vector of int)
0:52 texture (global 4-component vector of int)
0:52 'is2D' (uniform isampler2D)
0:52 'c2D' (smooth in 2-component vector of float)
0:53 add second child into first child (temp 4-component vector of float)
0:53 'v' (temp 4-component vector of float)
0:53 Convert int to float (temp 4-component vector of float)
0:53 'iv' (temp 4-component vector of int)
0:54 move second child to first child (temp 4-component vector of int)
0:54 'iv' (temp 4-component vector of int)
0:54 textureProjOffset (global 4-component vector of int)
0:54 'is2D' (uniform isampler2D)
0:54 'c4D' (smooth in 4-component vector of float)
0:54 Constant:
0:54 3 (const int)
0:54 3 (const int)
0:55 add second child into first child (temp 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:55 Convert int to float (temp 4-component vector of float)
0:55 'iv' (temp 4-component vector of int)
0:56 move second child to first child (temp 4-component vector of int)
0:56 'iv' (temp 4-component vector of int)
0:56 textureProjLod (global 4-component vector of int)
0:56 'is2D' (uniform isampler2D)
0:56 'c3D' (smooth in 3-component vector of float)
0:56 'c1D' (smooth in float)
0:57 add second child into first child (temp 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:57 Convert int to float (temp 4-component vector of float)
0:57 'iv' (temp 4-component vector of int)
0:58 move second child to first child (temp 4-component vector of int)
0:58 'iv' (temp 4-component vector of int)
0:58 textureProjGrad (global 4-component vector of int)
0:58 'is2D' (uniform isampler2D)
0:58 'c3D' (smooth in 3-component vector of float)
0:58 'c2D' (smooth in 2-component vector of float)
0:58 'c2D' (smooth in 2-component vector of float)
0:59 add second child into first child (temp 4-component vector of float)
0:59 'v' (temp 4-component vector of float)
0:59 Convert int to float (temp 4-component vector of float)
0:59 'iv' (temp 4-component vector of int)
0:60 move second child to first child (temp 4-component vector of int)
0:60 'iv' (temp 4-component vector of int)
0:60 texture (global 4-component vector of int)
0:60 'is3D' (uniform isampler3D)
0:60 'c3D' (smooth in 3-component vector of float)
0:60 Constant:
0:60 4.200000
0:61 add second child into first child (temp 4-component vector of float)
0:61 'v' (temp 4-component vector of float)
0:61 Convert int to float (temp 4-component vector of float)
0:61 'iv' (temp 4-component vector of int)
0:62 move second child to first child (temp 4-component vector of int)
0:62 'iv' (temp 4-component vector of int)
0:62 textureLod (global 4-component vector of int)
0:62 'isCube' (uniform isamplerCube)
0:62 'c3D' (smooth in 3-component vector of float)
0:62 'c1D' (smooth in float)
0:63 add second child into first child (temp 4-component vector of float)
0:63 'v' (temp 4-component vector of float)
0:63 Convert int to float (temp 4-component vector of float)
0:63 'iv' (temp 4-component vector of int)
0:64 move second child to first child (temp 4-component vector of int)
0:64 'iv' (temp 4-component vector of int)
0:64 textureFetch (global 4-component vector of int)
0:64 'is2DArray' (uniform isampler2DArray)
0:64 'ic3D' (flat in 3-component vector of int)
0:64 'ic1D' (flat in int)
0:65 add second child into first child (temp 4-component vector of float)
0:65 'v' (temp 4-component vector of float)
0:65 Convert int to float (temp 4-component vector of float)
0:65 'iv' (temp 4-component vector of int)
0:66 add second child into first child (temp 4-component vector of int)
0:66 'iv' (temp 4-component vector of int)
0:66 textureFetch (global 4-component vector of int)
@ -306,22 +314,21 @@ Shader version: 430
0:43 Constant:
0:43 3 (const int)
0:43 3 (const int)
0:44 add second child into first child (temp float)
0:44 direct index (temp float)
0:44 'v' (temp 4-component vector of float)
0:44 add second child into first child (temp 4-component vector of float)
0:44 'v' (temp 4-component vector of float)
0:44 textureFetchOffset (global 4-component vector of float)
0:44 'sr' (uniform sampler2DRect)
0:44 'ic2D' (flat in 2-component vector of int)
0:44 Constant:
0:44 1 (const int)
0:44 textureLodOffset (global float)
0:44 's2DShadow' (uniform sampler2DShadow)
0:44 'c3D' (smooth in 3-component vector of float)
0:44 'c1D' (smooth in float)
0:44 Constant:
0:44 3 (const int)
0:44 3 (const int)
0:45 add second child into first child (temp 4-component vector of float)
0:45 'v' (temp 4-component vector of float)
0:45 textureProjLodOffset (global 4-component vector of float)
0:45 's2D' (uniform sampler2D)
0:44 4 (const int)
0:44 4 (const int)
0:45 add second child into first child (temp float)
0:45 direct index (temp float)
0:45 'v' (temp 4-component vector of float)
0:45 Constant:
0:45 1 (const int)
0:45 textureLodOffset (global float)
0:45 's2DShadow' (uniform sampler2DShadow)
0:45 'c3D' (smooth in 3-component vector of float)
0:45 'c1D' (smooth in float)
0:45 Constant:
@ -329,115 +336,124 @@ Shader version: 430
0:45 3 (const int)
0:46 add second child into first child (temp 4-component vector of float)
0:46 'v' (temp 4-component vector of float)
0:46 textureGrad (global 4-component vector of float)
0:46 'sCube' (uniform samplerCube)
0:46 textureProjLodOffset (global 4-component vector of float)
0:46 's2D' (uniform sampler2D)
0:46 'c3D' (smooth in 3-component vector of float)
0:46 'c3D' (smooth in 3-component vector of float)
0:46 'c3D' (smooth in 3-component vector of float)
0:47 add second child into first child (temp float)
0:47 direct index (temp float)
0:47 'v' (temp 4-component vector of float)
0:47 Constant:
0:47 0 (const int)
0:47 textureGradOffset (global float)
0:47 's2DArrayShadow' (uniform sampler2DArrayShadow)
0:47 'c4D' (smooth in 4-component vector of float)
0:47 'c2D' (smooth in 2-component vector of float)
0:47 'c2D' (smooth in 2-component vector of float)
0:47 Constant:
0:47 3 (const int)
0:47 3 (const int)
0:48 add second child into first child (temp 4-component vector of float)
0:48 'v' (temp 4-component vector of float)
0:48 textureProjGrad (global 4-component vector of float)
0:48 's3D' (uniform sampler3D)
0:46 'c1D' (smooth in float)
0:46 Constant:
0:46 3 (const int)
0:46 3 (const int)
0:47 add second child into first child (temp 4-component vector of float)
0:47 'v' (temp 4-component vector of float)
0:47 textureGrad (global 4-component vector of float)
0:47 'sCube' (uniform samplerCube)
0:47 'c3D' (smooth in 3-component vector of float)
0:47 'c3D' (smooth in 3-component vector of float)
0:47 'c3D' (smooth in 3-component vector of float)
0:48 add second child into first child (temp float)
0:48 direct index (temp float)
0:48 'v' (temp 4-component vector of float)
0:48 Constant:
0:48 0 (const int)
0:48 textureGradOffset (global float)
0:48 's2DArrayShadow' (uniform sampler2DArrayShadow)
0:48 'c4D' (smooth in 4-component vector of float)
0:48 'c3D' (smooth in 3-component vector of float)
0:48 'c3D' (smooth in 3-component vector of float)
0:48 'c2D' (smooth in 2-component vector of float)
0:48 'c2D' (smooth in 2-component vector of float)
0:48 Constant:
0:48 3 (const int)
0:48 3 (const int)
0:49 add second child into first child (temp 4-component vector of float)
0:49 'v' (temp 4-component vector of float)
0:49 textureProjGradOffset (global 4-component vector of float)
0:49 's2D' (uniform sampler2D)
0:49 textureProjGrad (global 4-component vector of float)
0:49 's3D' (uniform sampler3D)
0:49 'c4D' (smooth in 4-component vector of float)
0:49 'c3D' (smooth in 3-component vector of float)
0:49 'c2D' (smooth in 2-component vector of float)
0:49 'c2D' (smooth in 2-component vector of float)
0:49 Constant:
0:49 3 (const int)
0:49 3 (const int)
0:51 Sequence
0:51 move second child to first child (temp 4-component vector of int)
0:51 'iv' (temp 4-component vector of int)
0:51 texture (global 4-component vector of int)
0:51 'is2D' (uniform isampler2D)
0:51 'c2D' (smooth in 2-component vector of float)
0:52 add second child into first child (temp 4-component vector of float)
0:52 'v' (temp 4-component vector of float)
0:52 Convert int to float (temp 4-component vector of float)
0:49 'c3D' (smooth in 3-component vector of float)
0:50 add second child into first child (temp 4-component vector of float)
0:50 'v' (temp 4-component vector of float)
0:50 textureProjGradOffset (global 4-component vector of float)
0:50 's2D' (uniform sampler2D)
0:50 'c3D' (smooth in 3-component vector of float)
0:50 'c2D' (smooth in 2-component vector of float)
0:50 'c2D' (smooth in 2-component vector of float)
0:50 Constant:
0:50 3 (const int)
0:50 3 (const int)
0:52 Sequence
0:52 move second child to first child (temp 4-component vector of int)
0:52 'iv' (temp 4-component vector of int)
0:53 move second child to first child (temp 4-component vector of int)
0:53 'iv' (temp 4-component vector of int)
0:53 textureProjOffset (global 4-component vector of int)
0:53 'is2D' (uniform isampler2D)
0:53 'c4D' (smooth in 4-component vector of float)
0:53 Constant:
0:53 3 (const int)
0:53 3 (const int)
0:54 add second child into first child (temp 4-component vector of float)
0:54 'v' (temp 4-component vector of float)
0:54 Convert int to float (temp 4-component vector of float)
0:54 'iv' (temp 4-component vector of int)
0:55 move second child to first child (temp 4-component vector of int)
0:55 'iv' (temp 4-component vector of int)
0:55 textureProjLod (global 4-component vector of int)
0:55 'is2D' (uniform isampler2D)
0:55 'c3D' (smooth in 3-component vector of float)
0:55 'c1D' (smooth in float)
0:56 add second child into first child (temp 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:56 Convert int to float (temp 4-component vector of float)
0:56 'iv' (temp 4-component vector of int)
0:57 move second child to first child (temp 4-component vector of int)
0:57 'iv' (temp 4-component vector of int)
0:57 textureProjGrad (global 4-component vector of int)
0:57 'is2D' (uniform isampler2D)
0:57 'c3D' (smooth in 3-component vector of float)
0:57 'c2D' (smooth in 2-component vector of float)
0:57 'c2D' (smooth in 2-component vector of float)
0:58 add second child into first child (temp 4-component vector of float)
0:58 'v' (temp 4-component vector of float)
0:58 Convert int to float (temp 4-component vector of float)
0:58 'iv' (temp 4-component vector of int)
0:59 move second child to first child (temp 4-component vector of int)
0:59 'iv' (temp 4-component vector of int)
0:59 texture (global 4-component vector of int)
0:59 'is3D' (uniform isampler3D)
0:59 'c3D' (smooth in 3-component vector of float)
0:59 Constant:
0:59 4.200000
0:60 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float)
0:60 Convert int to float (temp 4-component vector of float)
0:60 'iv' (temp 4-component vector of int)
0:61 move second child to first child (temp 4-component vector of int)
0:61 'iv' (temp 4-component vector of int)
0:61 textureLod (global 4-component vector of int)
0:61 'isCube' (uniform isamplerCube)
0:61 'c3D' (smooth in 3-component vector of float)
0:61 'c1D' (smooth in float)
0:62 add second child into first child (temp 4-component vector of float)
0:62 'v' (temp 4-component vector of float)
0:62 Convert int to float (temp 4-component vector of float)
0:62 'iv' (temp 4-component vector of int)
0:63 move second child to first child (temp 4-component vector of int)
0:63 'iv' (temp 4-component vector of int)
0:63 textureFetch (global 4-component vector of int)
0:63 'is2DArray' (uniform isampler2DArray)
0:63 'ic3D' (flat in 3-component vector of int)
0:63 'ic1D' (flat in int)
0:64 add second child into first child (temp 4-component vector of float)
0:64 'v' (temp 4-component vector of float)
0:64 Convert int to float (temp 4-component vector of float)
0:64 'iv' (temp 4-component vector of int)
0:52 texture (global 4-component vector of int)
0:52 'is2D' (uniform isampler2D)
0:52 'c2D' (smooth in 2-component vector of float)
0:53 add second child into first child (temp 4-component vector of float)
0:53 'v' (temp 4-component vector of float)
0:53 Convert int to float (temp 4-component vector of float)
0:53 'iv' (temp 4-component vector of int)
0:54 move second child to first child (temp 4-component vector of int)
0:54 'iv' (temp 4-component vector of int)
0:54 textureProjOffset (global 4-component vector of int)
0:54 'is2D' (uniform isampler2D)
0:54 'c4D' (smooth in 4-component vector of float)
0:54 Constant:
0:54 3 (const int)
0:54 3 (const int)
0:55 add second child into first child (temp 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:55 Convert int to float (temp 4-component vector of float)
0:55 'iv' (temp 4-component vector of int)
0:56 move second child to first child (temp 4-component vector of int)
0:56 'iv' (temp 4-component vector of int)
0:56 textureProjLod (global 4-component vector of int)
0:56 'is2D' (uniform isampler2D)
0:56 'c3D' (smooth in 3-component vector of float)
0:56 'c1D' (smooth in float)
0:57 add second child into first child (temp 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:57 Convert int to float (temp 4-component vector of float)
0:57 'iv' (temp 4-component vector of int)
0:58 move second child to first child (temp 4-component vector of int)
0:58 'iv' (temp 4-component vector of int)
0:58 textureProjGrad (global 4-component vector of int)
0:58 'is2D' (uniform isampler2D)
0:58 'c3D' (smooth in 3-component vector of float)
0:58 'c2D' (smooth in 2-component vector of float)
0:58 'c2D' (smooth in 2-component vector of float)
0:59 add second child into first child (temp 4-component vector of float)
0:59 'v' (temp 4-component vector of float)
0:59 Convert int to float (temp 4-component vector of float)
0:59 'iv' (temp 4-component vector of int)
0:60 move second child to first child (temp 4-component vector of int)
0:60 'iv' (temp 4-component vector of int)
0:60 texture (global 4-component vector of int)
0:60 'is3D' (uniform isampler3D)
0:60 'c3D' (smooth in 3-component vector of float)
0:60 Constant:
0:60 4.200000
0:61 add second child into first child (temp 4-component vector of float)
0:61 'v' (temp 4-component vector of float)
0:61 Convert int to float (temp 4-component vector of float)
0:61 'iv' (temp 4-component vector of int)
0:62 move second child to first child (temp 4-component vector of int)
0:62 'iv' (temp 4-component vector of int)
0:62 textureLod (global 4-component vector of int)
0:62 'isCube' (uniform isamplerCube)
0:62 'c3D' (smooth in 3-component vector of float)
0:62 'c1D' (smooth in float)
0:63 add second child into first child (temp 4-component vector of float)
0:63 'v' (temp 4-component vector of float)
0:63 Convert int to float (temp 4-component vector of float)
0:63 'iv' (temp 4-component vector of int)
0:64 move second child to first child (temp 4-component vector of int)
0:64 'iv' (temp 4-component vector of int)
0:64 textureFetch (global 4-component vector of int)
0:64 'is2DArray' (uniform isampler2DArray)
0:64 'ic3D' (flat in 3-component vector of int)
0:64 'ic1D' (flat in int)
0:65 add second child into first child (temp 4-component vector of float)
0:65 'v' (temp 4-component vector of float)
0:65 Convert int to float (temp 4-component vector of float)
0:65 'iv' (temp 4-component vector of int)
0:66 add second child into first child (temp 4-component vector of int)
0:66 'iv' (temp 4-component vector of int)
0:66 textureFetch (global 4-component vector of int)

View File

@ -7,7 +7,7 @@ Linked fragment stage:
// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 255
// Id's are bound by 265
Source GLSL 430
Capability Shader
@ -28,22 +28,23 @@ Linked fragment stage:
Name 67 "ic3D"
Name 70 "ic1D"
Name 77 "ic2D"
Name 102 "sCube"
Name 113 "s2DArrayShadow"
Name 141 "iv"
Name 145 "is2D"
Name 180 "is3D"
Name 192 "isCube"
Name 204 "is2DArray"
Name 214 "iv2"
Name 218 "sCubeShadow"
Name 223 "FragData"
Name 235 "is2Dms"
Name 240 "us2D"
Name 244 "us3D"
Name 248 "usCube"
Name 252 "us2DArray"
Name 254 "ic4D"
Name 86 "sr"
Name 112 "sCube"
Name 123 "s2DArrayShadow"
Name 151 "iv"
Name 155 "is2D"
Name 190 "is3D"
Name 202 "isCube"
Name 214 "is2DArray"
Name 224 "iv2"
Name 228 "sCubeShadow"
Name 233 "FragData"
Name 245 "is2Dms"
Name 250 "us2D"
Name 254 "us3D"
Name 258 "usCube"
Name 262 "us2DArray"
Name 264 "ic4D"
Decorate 17(c2D) Smooth
Decorate 26(c4D) Smooth
Decorate 38(c3D) Smooth
@ -51,13 +52,13 @@ Linked fragment stage:
Decorate 67(ic3D) Flat
Decorate 70(ic1D) Flat
Decorate 77(ic2D) Flat
Decorate 235(is2Dms) NoStaticUse
Decorate 240(us2D) NoStaticUse
Decorate 244(us3D) NoStaticUse
Decorate 248(usCube) NoStaticUse
Decorate 252(us2DArray) NoStaticUse
Decorate 254(ic4D) Flat
Decorate 254(ic4D) NoStaticUse
Decorate 245(is2Dms) NoStaticUse
Decorate 250(us2D) NoStaticUse
Decorate 254(us3D) NoStaticUse
Decorate 258(usCube) NoStaticUse
Decorate 262(us2DArray) NoStaticUse
Decorate 264(ic4D) Flat
Decorate 264(ic4D) NoStaticUse
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -102,70 +103,75 @@ Linked fragment stage:
76: TypePointer Input 51(ivec2)
77(ic2D): 76(ptr) Variable Input
79: 50(int) Constant 4
99: TypeImage 6(float) Cube sampled format:Unknown
100: TypeSampledImage 99
101: TypePointer UniformConstant 100
102(sCube): 101(ptr) Variable UniformConstant
110: TypeImage 6(float) 2D depth array sampled format:Unknown
111: TypeSampledImage 110
112: TypePointer UniformConstant 111
113(s2DArrayShadow): 112(ptr) Variable UniformConstant
139: TypeVector 50(int) 4
140: TypePointer Function 139(ivec4)
142: TypeImage 50(int) 2D sampled format:Unknown
143: TypeSampledImage 142
144: TypePointer UniformConstant 143
145(is2D): 144(ptr) Variable UniformConstant
177: TypeImage 50(int) 3D sampled format:Unknown
178: TypeSampledImage 177
179: TypePointer UniformConstant 178
180(is3D): 179(ptr) Variable UniformConstant
183: 6(float) Constant 1082549862
189: TypeImage 50(int) Cube sampled format:Unknown
190: TypeSampledImage 189
191: TypePointer UniformConstant 190
192(isCube): 191(ptr) Variable UniformConstant
201: TypeImage 50(int) 2D array sampled format:Unknown
202: TypeSampledImage 201
203: TypePointer UniformConstant 202
204(is2DArray): 203(ptr) Variable UniformConstant
213: TypePointer Function 51(ivec2)
215: TypeImage 6(float) Cube depth sampled format:Unknown
216: TypeSampledImage 215
217: TypePointer UniformConstant 216
218(sCubeShadow): 217(ptr) Variable UniformConstant
220: 50(int) Constant 2
222: TypePointer Output 7(fvec4)
223(FragData): 222(ptr) Variable Output
227: 6(float) Constant 0
232: TypeImage 50(int) 2D multi-sampled sampled format:Unknown
233: TypeSampledImage 232
234: TypePointer UniformConstant 233
235(is2Dms): 234(ptr) Variable UniformConstant
236: TypeInt 32 0
237: TypeImage 236(int) 2D sampled format:Unknown
238: TypeSampledImage 237
239: TypePointer UniformConstant 238
240(us2D): 239(ptr) Variable UniformConstant
241: TypeImage 236(int) 3D sampled format:Unknown
242: TypeSampledImage 241
243: TypePointer UniformConstant 242
244(us3D): 243(ptr) Variable UniformConstant
245: TypeImage 236(int) Cube sampled format:Unknown
246: TypeSampledImage 245
247: TypePointer UniformConstant 246
248(usCube): 247(ptr) Variable UniformConstant
249: TypeImage 236(int) 2D array sampled format:Unknown
250: TypeSampledImage 249
251: TypePointer UniformConstant 250
252(us2DArray): 251(ptr) Variable UniformConstant
253: TypePointer Input 139(ivec4)
254(ic4D): 253(ptr) Variable Input
83: TypeImage 6(float) Rect sampled format:Unknown
84: TypeSampledImage 83
85: TypePointer UniformConstant 84
86(sr): 85(ptr) Variable UniformConstant
89: 51(ivec2) ConstantComposite 79 79
109: TypeImage 6(float) Cube sampled format:Unknown
110: TypeSampledImage 109
111: TypePointer UniformConstant 110
112(sCube): 111(ptr) Variable UniformConstant
120: TypeImage 6(float) 2D depth array sampled format:Unknown
121: TypeSampledImage 120
122: TypePointer UniformConstant 121
123(s2DArrayShadow): 122(ptr) Variable UniformConstant
149: TypeVector 50(int) 4
150: TypePointer Function 149(ivec4)
152: TypeImage 50(int) 2D sampled format:Unknown
153: TypeSampledImage 152
154: TypePointer UniformConstant 153
155(is2D): 154(ptr) Variable UniformConstant
187: TypeImage 50(int) 3D sampled format:Unknown
188: TypeSampledImage 187
189: TypePointer UniformConstant 188
190(is3D): 189(ptr) Variable UniformConstant
193: 6(float) Constant 1082549862
199: TypeImage 50(int) Cube sampled format:Unknown
200: TypeSampledImage 199
201: TypePointer UniformConstant 200
202(isCube): 201(ptr) Variable UniformConstant
211: TypeImage 50(int) 2D array sampled format:Unknown
212: TypeSampledImage 211
213: TypePointer UniformConstant 212
214(is2DArray): 213(ptr) Variable UniformConstant
223: TypePointer Function 51(ivec2)
225: TypeImage 6(float) Cube depth sampled format:Unknown
226: TypeSampledImage 225
227: TypePointer UniformConstant 226
228(sCubeShadow): 227(ptr) Variable UniformConstant
230: 50(int) Constant 2
232: TypePointer Output 7(fvec4)
233(FragData): 232(ptr) Variable Output
237: 6(float) Constant 0
242: TypeImage 50(int) 2D multi-sampled sampled format:Unknown
243: TypeSampledImage 242
244: TypePointer UniformConstant 243
245(is2Dms): 244(ptr) Variable UniformConstant
246: TypeInt 32 0
247: TypeImage 246(int) 2D sampled format:Unknown
248: TypeSampledImage 247
249: TypePointer UniformConstant 248
250(us2D): 249(ptr) Variable UniformConstant
251: TypeImage 246(int) 3D sampled format:Unknown
252: TypeSampledImage 251
253: TypePointer UniformConstant 252
254(us3D): 253(ptr) Variable UniformConstant
255: TypeImage 246(int) Cube sampled format:Unknown
256: TypeSampledImage 255
257: TypePointer UniformConstant 256
258(usCube): 257(ptr) Variable UniformConstant
259: TypeImage 246(int) 2D array sampled format:Unknown
260: TypeSampledImage 259
261: TypePointer UniformConstant 260
262(us2DArray): 261(ptr) Variable UniformConstant
263: TypePointer Input 149(ivec4)
264(ic4D): 263(ptr) Variable Input
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
141(iv): 140(ptr) Variable Function
214(iv2): 213(ptr) Variable Function
151(iv): 150(ptr) Variable Function
224(iv2): 223(ptr) Variable Function
14: 11 Load 13(s2D)
18: 15(fvec2) Load 17(c2D)
19: 7(fvec4) ImageSampleImplicitLod 14 18
@ -206,138 +212,144 @@ Linked fragment stage:
81: 7(fvec4) Load 9(v)
82: 7(fvec4) FAdd 81 80
Store 9(v) 82
83: 45 Load 47(s2DShadow)
84: 36(fvec3) Load 38(c3D)
85: 6(float) Load 55(c1D)
86: 6(float) CompositeExtract 84 2
87: 6(float) ImageSampleDrefExplicitLod 83 84 86 85 53
88: 7(fvec4) Load 9(v)
89: 6(float) CompositeExtract 88 1
90: 6(float) FAdd 89 87
87: 84 Load 86(sr)
88: 51(ivec2) Load 77(ic2D)
90: 7(fvec4) ImageFetch 87 88 89
91: 7(fvec4) Load 9(v)
92: 7(fvec4) CompositeInsert 90 91 1
92: 7(fvec4) FAdd 91 90
Store 9(v) 92
93: 11 Load 13(s2D)
93: 45 Load 47(s2DShadow)
94: 36(fvec3) Load 38(c3D)
95: 6(float) Load 55(c1D)
96: 7(fvec4) ImageSampleProjExplicitLod 93 94 95 53
97: 7(fvec4) Load 9(v)
98: 7(fvec4) FAdd 97 96
Store 9(v) 98
103: 100 Load 102(sCube)
96: 6(float) CompositeExtract 94 2
97: 6(float) ImageSampleDrefExplicitLod 93 94 96 95 53
98: 7(fvec4) Load 9(v)
99: 6(float) CompositeExtract 98 1
100: 6(float) FAdd 99 97
101: 7(fvec4) Load 9(v)
102: 7(fvec4) CompositeInsert 100 101 1
Store 9(v) 102
103: 11 Load 13(s2D)
104: 36(fvec3) Load 38(c3D)
105: 36(fvec3) Load 38(c3D)
106: 36(fvec3) Load 38(c3D)
107: 7(fvec4) ImageSampleExplicitLod 103 104 105 106
108: 7(fvec4) Load 9(v)
109: 7(fvec4) FAdd 108 107
Store 9(v) 109
114: 111 Load 113(s2DArrayShadow)
115: 7(fvec4) Load 26(c4D)
116: 15(fvec2) Load 17(c2D)
117: 15(fvec2) Load 17(c2D)
118: 6(float) CompositeExtract 115 3
119: 6(float) ImageSampleDrefExplicitLod 114 115 118 116 117 53
120: 7(fvec4) Load 9(v)
121: 6(float) CompositeExtract 120 0
122: 6(float) FAdd 121 119
123: 7(fvec4) Load 9(v)
124: 7(fvec4) CompositeInsert 122 123 0
Store 9(v) 124
125: 21 Load 23(s3D)
126: 7(fvec4) Load 26(c4D)
127: 36(fvec3) Load 38(c3D)
128: 36(fvec3) Load 38(c3D)
129: 7(fvec4) ImageSampleProjExplicitLod 125 126 127 128
105: 6(float) Load 55(c1D)
106: 7(fvec4) ImageSampleProjExplicitLod 103 104 105 53
107: 7(fvec4) Load 9(v)
108: 7(fvec4) FAdd 107 106
Store 9(v) 108
113: 110 Load 112(sCube)
114: 36(fvec3) Load 38(c3D)
115: 36(fvec3) Load 38(c3D)
116: 36(fvec3) Load 38(c3D)
117: 7(fvec4) ImageSampleExplicitLod 113 114 115 116
118: 7(fvec4) Load 9(v)
119: 7(fvec4) FAdd 118 117
Store 9(v) 119
124: 121 Load 123(s2DArrayShadow)
125: 7(fvec4) Load 26(c4D)
126: 15(fvec2) Load 17(c2D)
127: 15(fvec2) Load 17(c2D)
128: 6(float) CompositeExtract 125 3
129: 6(float) ImageSampleDrefExplicitLod 124 125 128 126 127 53
130: 7(fvec4) Load 9(v)
131: 7(fvec4) FAdd 130 129
Store 9(v) 131
132: 11 Load 13(s2D)
133: 36(fvec3) Load 38(c3D)
134: 15(fvec2) Load 17(c2D)
135: 15(fvec2) Load 17(c2D)
136: 7(fvec4) ImageSampleProjExplicitLod 132 133 134 135 53
137: 7(fvec4) Load 9(v)
138: 7(fvec4) FAdd 137 136
Store 9(v) 138
146: 143 Load 145(is2D)
147: 15(fvec2) Load 17(c2D)
148: 139(ivec4) ImageSampleImplicitLod 146 147
Store 141(iv) 148
149: 139(ivec4) Load 141(iv)
150: 7(fvec4) ConvertSToF 149
151: 7(fvec4) Load 9(v)
152: 7(fvec4) FAdd 151 150
Store 9(v) 152
153: 143 Load 145(is2D)
154: 7(fvec4) Load 26(c4D)
155: 139(ivec4) ImageSampleProjImplicitLod 153 154 53
Store 141(iv) 155
156: 139(ivec4) Load 141(iv)
157: 7(fvec4) ConvertSToF 156
158: 7(fvec4) Load 9(v)
159: 7(fvec4) FAdd 158 157
Store 9(v) 159
160: 143 Load 145(is2D)
161: 36(fvec3) Load 38(c3D)
162: 6(float) Load 55(c1D)
163: 139(ivec4) ImageSampleProjExplicitLod 160 161 162
Store 141(iv) 163
164: 139(ivec4) Load 141(iv)
165: 7(fvec4) ConvertSToF 164
166: 7(fvec4) Load 9(v)
167: 7(fvec4) FAdd 166 165
Store 9(v) 167
168: 143 Load 145(is2D)
169: 36(fvec3) Load 38(c3D)
170: 15(fvec2) Load 17(c2D)
171: 15(fvec2) Load 17(c2D)
172: 139(ivec4) ImageSampleProjExplicitLod 168 169 170 171
Store 141(iv) 172
173: 139(ivec4) Load 141(iv)
174: 7(fvec4) ConvertSToF 173
175: 7(fvec4) Load 9(v)
176: 7(fvec4) FAdd 175 174
Store 9(v) 176
181: 178 Load 180(is3D)
182: 36(fvec3) Load 38(c3D)
184: 139(ivec4) ImageSampleImplicitLod 181 182 183
Store 141(iv) 184
185: 139(ivec4) Load 141(iv)
186: 7(fvec4) ConvertSToF 185
187: 7(fvec4) Load 9(v)
188: 7(fvec4) FAdd 187 186
Store 9(v) 188
193: 190 Load 192(isCube)
194: 36(fvec3) Load 38(c3D)
195: 6(float) Load 55(c1D)
196: 139(ivec4) ImageSampleExplicitLod 193 194 195
Store 141(iv) 196
197: 139(ivec4) Load 141(iv)
198: 7(fvec4) ConvertSToF 197
199: 7(fvec4) Load 9(v)
200: 7(fvec4) FAdd 199 198
Store 9(v) 200
205: 202 Load 204(is2DArray)
206: 65(ivec3) Load 67(ic3D)
207: 50(int) Load 70(ic1D)
208: 139(ivec4) ImageFetch 205 206 207
Store 141(iv) 208
209: 139(ivec4) Load 141(iv)
210: 7(fvec4) ConvertSToF 209
211: 7(fvec4) Load 9(v)
212: 7(fvec4) FAdd 211 210
Store 9(v) 212
219: 216 Load 218(sCubeShadow)
221: 51(ivec2) ImageQuerySizeLod 219 220
Store 214(iv2) 221
224: 7(fvec4) Load 9(v)
225: 51(ivec2) Load 214(iv2)
226: 15(fvec2) ConvertSToF 225
228: 6(float) CompositeExtract 226 0
229: 6(float) CompositeExtract 226 1
230: 7(fvec4) CompositeConstruct 228 229 227 227
231: 7(fvec4) FAdd 224 230
Store 223(FragData) 231
131: 6(float) CompositeExtract 130 0
132: 6(float) FAdd 131 129
133: 7(fvec4) Load 9(v)
134: 7(fvec4) CompositeInsert 132 133 0
Store 9(v) 134
135: 21 Load 23(s3D)
136: 7(fvec4) Load 26(c4D)
137: 36(fvec3) Load 38(c3D)
138: 36(fvec3) Load 38(c3D)
139: 7(fvec4) ImageSampleProjExplicitLod 135 136 137 138
140: 7(fvec4) Load 9(v)
141: 7(fvec4) FAdd 140 139
Store 9(v) 141
142: 11 Load 13(s2D)
143: 36(fvec3) Load 38(c3D)
144: 15(fvec2) Load 17(c2D)
145: 15(fvec2) Load 17(c2D)
146: 7(fvec4) ImageSampleProjExplicitLod 142 143 144 145 53
147: 7(fvec4) Load 9(v)
148: 7(fvec4) FAdd 147 146
Store 9(v) 148
156: 153 Load 155(is2D)
157: 15(fvec2) Load 17(c2D)
158: 149(ivec4) ImageSampleImplicitLod 156 157
Store 151(iv) 158
159: 149(ivec4) Load 151(iv)
160: 7(fvec4) ConvertSToF 159
161: 7(fvec4) Load 9(v)
162: 7(fvec4) FAdd 161 160
Store 9(v) 162
163: 153 Load 155(is2D)
164: 7(fvec4) Load 26(c4D)
165: 149(ivec4) ImageSampleProjImplicitLod 163 164 53
Store 151(iv) 165
166: 149(ivec4) Load 151(iv)
167: 7(fvec4) ConvertSToF 166
168: 7(fvec4) Load 9(v)
169: 7(fvec4) FAdd 168 167
Store 9(v) 169
170: 153 Load 155(is2D)
171: 36(fvec3) Load 38(c3D)
172: 6(float) Load 55(c1D)
173: 149(ivec4) ImageSampleProjExplicitLod 170 171 172
Store 151(iv) 173
174: 149(ivec4) Load 151(iv)
175: 7(fvec4) ConvertSToF 174
176: 7(fvec4) Load 9(v)
177: 7(fvec4) FAdd 176 175
Store 9(v) 177
178: 153 Load 155(is2D)
179: 36(fvec3) Load 38(c3D)
180: 15(fvec2) Load 17(c2D)
181: 15(fvec2) Load 17(c2D)
182: 149(ivec4) ImageSampleProjExplicitLod 178 179 180 181
Store 151(iv) 182
183: 149(ivec4) Load 151(iv)
184: 7(fvec4) ConvertSToF 183
185: 7(fvec4) Load 9(v)
186: 7(fvec4) FAdd 185 184
Store 9(v) 186
191: 188 Load 190(is3D)
192: 36(fvec3) Load 38(c3D)
194: 149(ivec4) ImageSampleImplicitLod 191 192 193
Store 151(iv) 194
195: 149(ivec4) Load 151(iv)
196: 7(fvec4) ConvertSToF 195
197: 7(fvec4) Load 9(v)
198: 7(fvec4) FAdd 197 196
Store 9(v) 198
203: 200 Load 202(isCube)
204: 36(fvec3) Load 38(c3D)
205: 6(float) Load 55(c1D)
206: 149(ivec4) ImageSampleExplicitLod 203 204 205
Store 151(iv) 206
207: 149(ivec4) Load 151(iv)
208: 7(fvec4) ConvertSToF 207
209: 7(fvec4) Load 9(v)
210: 7(fvec4) FAdd 209 208
Store 9(v) 210
215: 212 Load 214(is2DArray)
216: 65(ivec3) Load 67(ic3D)
217: 50(int) Load 70(ic1D)
218: 149(ivec4) ImageFetch 215 216 217
Store 151(iv) 218
219: 149(ivec4) Load 151(iv)
220: 7(fvec4) ConvertSToF 219
221: 7(fvec4) Load 9(v)
222: 7(fvec4) FAdd 221 220
Store 9(v) 222
229: 226 Load 228(sCubeShadow)
231: 51(ivec2) ImageQuerySizeLod 229 230
Store 224(iv2) 231
234: 7(fvec4) Load 9(v)
235: 51(ivec2) Load 224(iv2)
236: 15(fvec2) ConvertSToF 235
238: 6(float) CompositeExtract 236 0
239: 6(float) CompositeExtract 236 1
240: 7(fvec4) CompositeConstruct 238 239 237 237
241: 7(fvec4) FAdd 234 240
Store 233(FragData) 241
Return
FunctionEnd

View File

@ -41,6 +41,7 @@ void main()
v.y += textureOffset(s2DShadow, c3D, ivec2(3), c1D);
v += texelFetch(s3D, ic3D, ic1D);
v += texelFetchOffset(s2D, ic2D, 4, ivec2(3));
v += texelFetchOffset(sr, ic2D, ivec2(4));
v.y += textureLodOffset(s2DShadow, c3D, c1D, ivec2(3));
v += textureProjLodOffset(s2D, c3D, c1D, ivec2(3));
v += textureGrad(sCube, c3D, c3D, c3D);
@ -62,7 +63,6 @@ void main()
v += vec4(iv);
iv = texelFetch(is2DArray, ic3D, ic1D);
v += vec4(iv);
iv += texelFetch(is2Dms, ic2D, ic1D);
v += vec4(iv);
v += texelFetch(sb, ic1D);

View File

@ -1,6 +1,7 @@
#version 430
uniform sampler2D s2D;
uniform sampler2DRect sr;
uniform sampler3D s3D;
uniform samplerCube sCube;
uniform samplerCubeShadow sCubeShadow;
@ -39,6 +40,7 @@ void main()
v.y += textureOffset(s2DShadow, c3D, ivec2(3), c1D);
v += texelFetch(s3D, ic3D, ic1D);
v += texelFetchOffset(s2D, ic2D, 4, ivec2(3));
v += texelFetchOffset(sr, ic2D, ivec2(4));
v.y += textureLodOffset(s2DShadow, c3D, c1D, ivec2(3));
v += textureProjLodOffset(s2D, c3D, c1D, ivec2(3));
v += textureGrad(sCube, c3D, c3D, c3D);

View File

@ -1431,7 +1431,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
int arg = -1;
switch (callNode.getOp()) {
case EOpTextureOffset: arg = 2; break;
case EOpTextureFetchOffset: arg = 3; break;
case EOpTextureFetchOffset: arg = (arg0->getType().getSampler().dim != EsdRect) ? 3 : 2; break;
case EOpTextureProjOffset: arg = 2; break;
case EOpTextureLodOffset: arg = 3; break;
case EOpTextureProjLodOffset: arg = 3; break;