aboutsummaryrefslogtreecommitdiff
path: root/third_party/vulkan-deps/spirv-tools/src/source
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/vulkan-deps/spirv-tools/src/source')
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/binary.cpp3
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/operand.cpp3
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp47
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp1
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp3
5 files changed, 54 insertions, 3 deletions
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp b/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp
index 3cfdee0434..cc7d242b97 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/binary.cpp
@@ -670,7 +670,8 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
case SPV_OPERAND_TYPE_QUANTIZATION_MODES:
case SPV_OPERAND_TYPE_OVERFLOW_MODES:
case SPV_OPERAND_TYPE_PACKED_VECTOR_FORMAT:
- case SPV_OPERAND_TYPE_OPTIONAL_PACKED_VECTOR_FORMAT: {
+ case SPV_OPERAND_TYPE_OPTIONAL_PACKED_VECTOR_FORMAT:
+ case SPV_OPERAND_TYPE_NAMED_MAXIMUM_NUMBER_OF_REGISTERS: {
// A single word that is a plain enum value.
// Map an optional operand type to its corresponding concrete type.
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp b/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp
index 6577f8f7db..1762e63568 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/operand.cpp
@@ -220,6 +220,8 @@ const char* spvOperandTypeStr(spv_operand_type_t type) {
return "load cache control";
case SPV_OPERAND_TYPE_STORE_CACHE_CONTROL:
return "store cache control";
+ case SPV_OPERAND_TYPE_NAMED_MAXIMUM_NUMBER_OF_REGISTERS:
+ return "named maximum number of registers";
case SPV_OPERAND_TYPE_IMAGE:
case SPV_OPERAND_TYPE_OPTIONAL_IMAGE:
return "image";
@@ -360,6 +362,7 @@ bool spvOperandIsConcrete(spv_operand_type_t type) {
case SPV_OPERAND_TYPE_HOST_ACCESS_QUALIFIER:
case SPV_OPERAND_TYPE_LOAD_CACHE_CONTROL:
case SPV_OPERAND_TYPE_STORE_CACHE_CONTROL:
+ case SPV_OPERAND_TYPE_NAMED_MAXIMUM_NUMBER_OF_REGISTERS:
return true;
default:
break;
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp b/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp
index 543f345ecd..f62c3a26c3 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/val/validate_image.cpp
@@ -982,6 +982,10 @@ bool IsAllowedSampledImageOperand(spv::Op opcode, ValidationState_t& _) {
case spv::Op::OpImageBoxFilterQCOM:
case spv::Op::OpImageBlockMatchSSDQCOM:
case spv::Op::OpImageBlockMatchSADQCOM:
+ case spv::Op::OpImageBlockMatchWindowSADQCOM:
+ case spv::Op::OpImageBlockMatchWindowSSDQCOM:
+ case spv::Op::OpImageBlockMatchGatherSADQCOM:
+ case spv::Op::OpImageBlockMatchGatherSSDQCOM:
return true;
case spv::Op::OpStore:
if (_.HasCapability(spv::Capability::BindlessTextureNV)) return true;
@@ -2168,7 +2172,7 @@ spv_result_t ValidateImageProcessingQCOMDecoration(ValidationState_t& _, int id,
int texture_id = ld_inst->GetOperandAs<int>(2); // variable to load
if (!_.HasDecoration(texture_id, decor)) {
return _.diag(SPV_ERROR_INVALID_DATA, ld_inst)
- << "Missing decoration WeightTextureQCOM/BlockMatchTextureQCOM";
+ << "Missing decoration " << _.SpvDecorationString(decor);
}
return SPV_SUCCESS;
@@ -2196,6 +2200,34 @@ spv_result_t ValidateImageProcessingQCOM(ValidationState_t& _,
_, ref_idx, spv::Decoration::BlockMatchTextureQCOM);
break;
}
+ case spv::Op::OpImageBlockMatchWindowSSDQCOM:
+ case spv::Op::OpImageBlockMatchWindowSADQCOM: {
+ int tgt_idx = inst->GetOperandAs<int>(2); // target
+ res = ValidateImageProcessingQCOMDecoration(
+ _, tgt_idx, spv::Decoration::BlockMatchTextureQCOM);
+ if (res != SPV_SUCCESS) break;
+ res = ValidateImageProcessingQCOMDecoration(
+ _, tgt_idx, spv::Decoration::BlockMatchSamplerQCOM);
+ if (res != SPV_SUCCESS) break;
+ int ref_idx = inst->GetOperandAs<int>(4); // reference
+ res = ValidateImageProcessingQCOMDecoration(
+ _, ref_idx, spv::Decoration::BlockMatchTextureQCOM);
+ if (res != SPV_SUCCESS) break;
+ res = ValidateImageProcessingQCOMDecoration(
+ _, ref_idx, spv::Decoration::BlockMatchSamplerQCOM);
+ break;
+ }
+ case spv::Op::OpImageBlockMatchGatherSSDQCOM:
+ case spv::Op::OpImageBlockMatchGatherSADQCOM: {
+ int tgt_idx = inst->GetOperandAs<int>(2); // target
+ res = ValidateImageProcessingQCOMDecoration(
+ _, tgt_idx, spv::Decoration::BlockMatchTextureQCOM);
+ if (res != SPV_SUCCESS) break;
+ int ref_idx = inst->GetOperandAs<int>(4); // reference
+ res = ValidateImageProcessingQCOMDecoration(
+ _, ref_idx, spv::Decoration::BlockMatchTextureQCOM);
+ break;
+ }
default:
break;
}
@@ -2326,6 +2358,10 @@ spv_result_t ImagePass(ValidationState_t& _, const Instruction* inst) {
case spv::Op::OpImageBoxFilterQCOM:
case spv::Op::OpImageBlockMatchSSDQCOM:
case spv::Op::OpImageBlockMatchSADQCOM:
+ case spv::Op::OpImageBlockMatchWindowSADQCOM:
+ case spv::Op::OpImageBlockMatchWindowSSDQCOM:
+ case spv::Op::OpImageBlockMatchGatherSADQCOM:
+ case spv::Op::OpImageBlockMatchGatherSSDQCOM:
return ValidateImageProcessingQCOM(_, inst);
default:
@@ -2378,6 +2414,10 @@ bool IsImageInstruction(const spv::Op opcode) {
case spv::Op::OpImageBoxFilterQCOM:
case spv::Op::OpImageBlockMatchSSDQCOM:
case spv::Op::OpImageBlockMatchSADQCOM:
+ case spv::Op::OpImageBlockMatchWindowSADQCOM:
+ case spv::Op::OpImageBlockMatchWindowSSDQCOM:
+ case spv::Op::OpImageBlockMatchGatherSADQCOM:
+ case spv::Op::OpImageBlockMatchGatherSSDQCOM:
return true;
default:
break;
@@ -2396,6 +2436,11 @@ spv_result_t ValidateQCOMImageProcessingTextureUsages(ValidationState_t& _,
case spv::Op::OpImageBlockMatchSSDQCOM:
case spv::Op::OpImageBlockMatchSADQCOM:
break;
+ case spv::Op::OpImageBlockMatchWindowSADQCOM:
+ case spv::Op::OpImageBlockMatchWindowSSDQCOM:
+ case spv::Op::OpImageBlockMatchGatherSADQCOM:
+ case spv::Op::OpImageBlockMatchGatherSSDQCOM:
+ break;
default:
for (size_t i = 0; i < inst->operands().size(); ++i) {
int id = inst->GetOperandAs<int>(i);
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp b/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp
index 82c6c3f0e8..199d8ed455 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/val/validate_mode_setting.cpp
@@ -346,6 +346,7 @@ spv_result_t ValidateExecutionMode(ValidationState_t& _,
case spv::ExecutionMode::LocalSizeHintId:
case spv::ExecutionMode::LocalSizeId:
case spv::ExecutionMode::FPFastMathDefault:
+ case spv::ExecutionMode::MaximumRegistersIdINTEL:
valid_mode = true;
break;
default:
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp b/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp
index fa5ae3e00f..896849930e 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/val/validation_state.cpp
@@ -615,7 +615,8 @@ void ValidationState_t::RegisterQCOMImageProcessingTextureConsumer(
uint32_t texture_id, const Instruction* consumer0,
const Instruction* consumer1) {
if (HasDecoration(texture_id, spv::Decoration::WeightTextureQCOM) ||
- HasDecoration(texture_id, spv::Decoration::BlockMatchTextureQCOM)) {
+ HasDecoration(texture_id, spv::Decoration::BlockMatchTextureQCOM) ||
+ HasDecoration(texture_id, spv::Decoration::BlockMatchSamplerQCOM)) {
qcom_image_processing_consumers_.insert(consumer0->id());
if (consumer1) {
qcom_image_processing_consumers_.insert(consumer1->id());