Add supprot for the SPV_QCOM_image_processing extension

This commit is contained in:
Wooyoung Kim 2024-01-08 09:58:27 -08:00
parent 8028f75685
commit 1efe04cfce

View File

@ -14159,20 +14159,20 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
string expr; string expr;
switch (opcode) switch (opcode)
{ {
case OpImageSampleWeightedQCOM: case OpImageSampleWeightedQCOM:
expr = std::move("textureWeightedQCOM"); expr = "textureWeightedQCOM";
break; break;
case OpImageBoxFilterQCOM: case OpImageBoxFilterQCOM:
expr = std::move("textureBoxFilterQCOM"); expr = "textureBoxFilterQCOM";
break; break;
case OpImageBlockMatchSSDQCOM: case OpImageBlockMatchSSDQCOM:
expr = std::move("textureBlockMatchSSDQCOM"); expr = "textureBlockMatchSSDQCOM";
break; break;
case OpImageBlockMatchSADQCOM: case OpImageBlockMatchSADQCOM:
expr = std::move("textureBlockMatchSADQCOM"); expr = "textureBlockMatchSADQCOM";
break; break;
default: default:
SPIRV_CROSS_THROW("Invalid opcode for QCOM_image_processing."); SPIRV_CROSS_THROW("Invalid opcode for QCOM_image_processing.");
} }
expr += "("; expr += "(";
@ -14182,27 +14182,27 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
switch (opcode) switch (opcode)
{ {
case OpImageSampleWeightedQCOM: case OpImageSampleWeightedQCOM:
expr += ", " + to_non_uniform_aware_expression(ops[4]); expr += ", " + to_non_uniform_aware_expression(ops[4]);
break; break;
case OpImageBoxFilterQCOM: case OpImageBoxFilterQCOM:
expr += ", " + to_expression(ops[4]); expr += ", " + to_expression(ops[4]);
break; break;
case OpImageBlockMatchSSDQCOM: case OpImageBlockMatchSSDQCOM:
case OpImageBlockMatchSADQCOM: case OpImageBlockMatchSADQCOM:
expr += ", " + to_non_uniform_aware_expression(ops[4]); expr += ", " + to_non_uniform_aware_expression(ops[4]);
expr += ", " + to_expression(ops[5]); expr += ", " + to_expression(ops[5]);
expr += ", " + to_expression(ops[6]); expr += ", " + to_expression(ops[6]);
break; break;
default: default:
SPIRV_CROSS_THROW("Invalid opcode for QCOM_image_processing."); SPIRV_CROSS_THROW("Invalid opcode for QCOM_image_processing.");
} }
expr += ")"; expr += ")";
emit_op(result_type_id, id, expr, forward); emit_op(result_type_id, id, expr, forward);
inherit_expression_dependencies(id, ops[3]); inherit_expression_dependencies(id, ops[3]);
if (opcode == OpImageBlockMatchSSDQCOM || opcode == OpImageBlockMatchSADQCOM ) if (opcode == OpImageBlockMatchSSDQCOM || opcode == OpImageBlockMatchSADQCOM)
inherit_expression_dependencies(id, ops[5]); inherit_expression_dependencies(id, ops[5]);
break; break;