Commit 1eadcfb3 by Sean Risser

Accept Sign/Zero Extend operands in OpImageRead

SwiftShader already extends unsigned texels with 0s and signed texels with the sign bit. So all that's needed is for all operations to accept the operands. Unless a stakeholder specifies that dEQP is undertesting these operands. This is tracked by b/174475384. Tests: dEQP-VK.image.extend_operands_spirv1p4.* Bug: b/173046235 Change-Id: Ib7024b533cefd52957bc7275a041e06ec179c829 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/50768Tested-by: 's avatarSean Risser <srisser@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Kokoro-Result: kokoro <noreply+kokoro@google.com>
parent 9d654343
...@@ -622,6 +622,15 @@ SpirvShader::EmitResult SpirvShader::EmitImageRead(InsnIterator insn, EmitState ...@@ -622,6 +622,15 @@ SpirvShader::EmitResult SpirvShader::EmitImageRead(InsnIterator insn, EmitState
sampleId = insn.word(operand++); sampleId = insn.word(operand++);
imageOperands &= ~spv::ImageOperandsSampleMask; imageOperands &= ~spv::ImageOperandsSampleMask;
} }
// TODO(b/174475384)
if(imageOperands & spv::ImageOperandsZeroExtendMask)
{
imageOperands &= ~spv::ImageOperandsZeroExtendMask;
}
else if(imageOperands & spv::ImageOperandsSignExtendMask)
{
imageOperands &= ~spv::ImageOperandsSignExtendMask;
}
// Should be no remaining image operands. // Should be no remaining image operands.
if(imageOperands != 0) if(imageOperands != 0)
...@@ -1015,6 +1024,15 @@ SpirvShader::EmitResult SpirvShader::EmitImageWrite(InsnIterator insn, EmitState ...@@ -1015,6 +1024,15 @@ SpirvShader::EmitResult SpirvShader::EmitImageWrite(InsnIterator insn, EmitState
sampleId = insn.word(operand++); sampleId = insn.word(operand++);
imageOperands &= ~spv::ImageOperandsSampleMask; imageOperands &= ~spv::ImageOperandsSampleMask;
} }
// TODO(b/174475384)
if(imageOperands & spv::ImageOperandsZeroExtendMask)
{
imageOperands &= ~spv::ImageOperandsZeroExtendMask;
}
else if(imageOperands & spv::ImageOperandsSignExtendMask)
{
imageOperands &= ~spv::ImageOperandsSignExtendMask;
}
// Should be no remaining image operands. // Should be no remaining image operands.
if(imageOperands != 0) if(imageOperands != 0)
......
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