OSDN Git Service

Add support for OpInBoundsAccessChain
authorChris Forbes <chrisforbes@google.com>
Fri, 15 Mar 2019 19:27:34 +0000 (12:27 -0700)
committerChris Forbes <chrisforbes@google.com>
Sat, 16 Mar 2019 05:00:45 +0000 (05:00 +0000)
This can be treated exactly the same as OpAccessChain.

Bug: b/128690261
Bug: b/127950082
Test: dEQP-VK.spirv_assembly.instruction.compute.opinboundsaccesschain.*
Change-Id: I65312ad48e461ec83e6999c6a899820e91e2a68b
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27368
Tested-by: Chris Forbes <chrisforbes@google.com>
Presubmit-Ready: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>

src/Pipeline/SpirvShader.cpp

index 89be90e..cb7645d 100644 (file)
@@ -308,6 +308,7 @@ namespace sw
 
                        case spv::OpLoad:
                        case spv::OpAccessChain:
+                       case spv::OpInBoundsAccessChain:
                        case spv::OpCompositeConstruct:
                        case spv::OpCompositeInsert:
                        case spv::OpCompositeExtract:
@@ -386,7 +387,7 @@ namespace sw
                                object.kind = Object::Kind::Value;
                                object.definition = insn;
 
-                               if (insn.opcode() == spv::OpAccessChain)
+                               if (insn.opcode() == spv::OpAccessChain || insn.opcode() == spv::OpInBoundsAccessChain)
                                {
                                        // interior ptr has two parts:
                                        // - logical base ptr, common across all lanes and known at compile time
@@ -1083,6 +1084,7 @@ namespace sw
                        break;
 
                case spv::OpAccessChain:
+               case spv::OpInBoundsAccessChain:
                        EmitAccessChain(insn, routine);
                        break;