Browse Source

shaderpipeline: Update SPIR-V headers

rdb 1 year ago
parent
commit
f82f8fb4c2

+ 1 - 0
panda/src/shaderpipeline/spirVFlattenStructPass.cxx

@@ -231,6 +231,7 @@ transform_function_op(Instruction op, uint32_t function_id) {
     break;
 
   case spv::OpCopyObject:
+  case spv::OpExpectKHR:
     if (_deleted_access_chains.count(op.args[2])) {
       op.args[2] = _deleted_access_chains[op.args[2]];
 

+ 1 - 0
panda/src/shaderpipeline/spirVHoistStructResourcesPass.cxx

@@ -456,6 +456,7 @@ transform_function_op(Instruction op, uint32_t function_id) {
 
   case spv::OpCopyObject:
   case spv::OpCopyLogical:
+  case spv::OpExpectKHR:
     // Not allowed to copy structs containing resources.
     nassertr(!_affected_types.count(op.args[0]), false);
     nassertr(!_affected_pointer_types.count(op.args[0]), false);

+ 1 - 0
panda/src/shaderpipeline/spirVReplaceVariableTypePass.cxx

@@ -95,6 +95,7 @@ transform_function_op(Instruction op, uint32_t function_id) {
     break;
 
   case spv::OpCopyObject:
+  case spv::OpExpectKHR:
     // This clones a pointer or object verbatim, so keep following the chain.
     if (_pointer_ids.count(op.args[2])) {
       Definition &def = _db.modify_definition(op.args[1]);

+ 5 - 0
panda/src/shaderpipeline/spirVResultDatabase.cxx

@@ -546,6 +546,7 @@ parse_instruction(spv::Op opcode, uint32_t *args, uint32_t nargs, uint32_t &curr
   case spv::OpAtomicFMinEXT:
   case spv::OpAtomicFMaxEXT:
   case spv::OpAtomicFAddEXT:
+  case spv::OpCooperativeMatrixLoadKHR:
     record_temporary(args[1], args[0], args[2], current_function_id);
 
     // A load from the pointer is enough for us to consider it "used", for now.
@@ -555,6 +556,7 @@ parse_instruction(spv::Op opcode, uint32_t *args, uint32_t nargs, uint32_t &curr
   case spv::OpStore:
   case spv::OpAtomicStore:
   case spv::OpAtomicFlagClear:
+  case spv::OpCooperativeMatrixStoreKHR:
     // An atomic write creates no result ID, but we do consider the var "used".
     mark_used(args[0]);
     break;
@@ -673,6 +675,7 @@ parse_instruction(spv::Op opcode, uint32_t *args, uint32_t nargs, uint32_t &curr
     break;
 
   case spv::OpCopyObject:
+  case spv::OpExpectKHR:
     record_temporary(args[1], args[0], args[2], current_function_id);
     // fall through
 
@@ -752,6 +755,8 @@ parse_instruction(spv::Op opcode, uint32_t *args, uint32_t nargs, uint32_t &curr
   case spv::OpIsNormal:
   case spv::OpSignBitSet:
   case spv::OpNot:
+  case spv::OpConvertFToBF16INTEL:
+  case spv::OpConvertBF16ToFINTEL:
     if ((_defs[args[2]]._flags & DF_constant_expression) != 0) {
       _defs[args[1]]._flags |= DF_constant_expression;
     }

+ 1 - 0
panda/src/shaderpipeline/spirVTransformPass.cxx

@@ -315,6 +315,7 @@ transform_function_op(Instruction op, uint32_t function_id) {
   case spv::OpPtrAccessChain:
   case spv::OpInBoundsPtrAccessChain:
   case spv::OpCopyObject:
+  case spv::OpExpectKHR:
   case spv::OpBitcast:
   case spv::OpCopyLogical:
     // Delete these uses of a deleted variable, presumably the result is also

+ 1 - 0
panda/src/shaderpipeline/spirVTransformer.cxx

@@ -495,6 +495,7 @@ make_block(const ShaderType::Struct *block_type, const pvector<int> &member_loca
     case spv::OpImageTexelPointer:
     case spv::OpLoad:
     case spv::OpCopyObject:
+    case spv::OpExpectKHR:
       // Add access chains before all loads to access the right block member.
       if (member_indices.count(op.args[2])) {
         uint32_t member_index = member_indices[op.args[2]];

File diff suppressed because it is too large
+ 2117 - 9
panda/src/shaderpipeline/spirv.hpp


Some files were not shown because too many files changed in this diff