Commit cd631595 by Chris Forbes

Implement OpImageFetch

Bug: b/129523279 Test: dEQP-VK.image.* Test: dEQP-VK.texture* Change-Id: I70a5d6b53d4df09757b092d239b8c7b31bfcecd7 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/30068Reviewed-by: 's avatarBen Clayton <bclayton@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
parent fa82c34f
...@@ -842,6 +842,7 @@ namespace sw ...@@ -842,6 +842,7 @@ namespace sw
case spv::OpPhi: case spv::OpPhi:
case spv::OpImageSampleImplicitLod: case spv::OpImageSampleImplicitLod:
case spv::OpImageSampleExplicitLod: case spv::OpImageSampleExplicitLod:
case spv::OpImageFetch:
case spv::OpImageQuerySize: case spv::OpImageQuerySize:
case spv::OpImageRead: case spv::OpImageRead:
case spv::OpImageTexelPointer: case spv::OpImageTexelPointer:
...@@ -2390,6 +2391,9 @@ namespace sw ...@@ -2390,6 +2391,9 @@ namespace sw
case spv::OpImageSampleExplicitLod: case spv::OpImageSampleExplicitLod:
return EmitImageSampleExplicitLod(insn, state); return EmitImageSampleExplicitLod(insn, state);
case spv::OpImageFetch:
return EmitImageFetch(insn, state);
case spv::OpImageQuerySize: case spv::OpImageQuerySize:
return EmitImageQuerySize(insn, state); return EmitImageQuerySize(insn, state);
...@@ -4474,6 +4478,11 @@ namespace sw ...@@ -4474,6 +4478,11 @@ namespace sw
return EmitResult::Continue; return EmitResult::Continue;
} }
SpirvShader::EmitResult SpirvShader::EmitImageFetch(InsnIterator insn, EmitState *state) const
{
return EmitImageSample({Fetch}, insn, state);
}
SpirvShader::EmitResult SpirvShader::EmitImageSample(ImageInstruction instruction, InsnIterator insn, EmitState *state) const SpirvShader::EmitResult SpirvShader::EmitImageSample(ImageInstruction instruction, InsnIterator insn, EmitState *state) const
{ {
Type::ID resultTypeId = insn.word(1); Type::ID resultTypeId = insn.word(1);
......
...@@ -869,6 +869,7 @@ namespace sw ...@@ -869,6 +869,7 @@ namespace sw
EmitResult EmitPhi(InsnIterator insn, EmitState *state) const; EmitResult EmitPhi(InsnIterator insn, EmitState *state) const;
EmitResult EmitImageSampleImplicitLod(InsnIterator insn, EmitState *state) const; EmitResult EmitImageSampleImplicitLod(InsnIterator insn, EmitState *state) const;
EmitResult EmitImageSampleExplicitLod(InsnIterator insn, EmitState *state) const; EmitResult EmitImageSampleExplicitLod(InsnIterator insn, EmitState *state) const;
EmitResult EmitImageFetch(InsnIterator insn, EmitState *state) const;
EmitResult EmitImageSample(ImageInstruction instruction, InsnIterator insn, EmitState *state) const; EmitResult EmitImageSample(ImageInstruction instruction, InsnIterator insn, EmitState *state) const;
EmitResult EmitImageQuerySize(InsnIterator insn, EmitState *state) const; EmitResult EmitImageQuerySize(InsnIterator insn, EmitState *state) const;
EmitResult EmitImageRead(InsnIterator insn, EmitState *state) const; EmitResult EmitImageRead(InsnIterator insn, EmitState *state) const;
......
...@@ -277,4 +277,4 @@ sw::AddressingMode SpirvShader::convertAddressingMode(int coordinateIndex, VkSam ...@@ -277,4 +277,4 @@ sw::AddressingMode SpirvShader::convertAddressingMode(int coordinateIndex, VkSam
} }
} }
} // namespace sw } // namespace sw
\ No newline at end of file
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