summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaio Oliveira <caio.oliveira@intel.com>2023-05-11 14:33:46 -0700
committerMarge Bot <emma+marge@anholt.net>2023-05-17 18:27:41 +0000
commit1b31d528b9c5cc1bc17af0f58d9c314b74f8e8b3 (patch)
tree8baeb0c7f959fd7bcf5cf710e47d7284233a456f
parenta32f97530a3874d4b3933c591683c3b4a60306f5 (diff)
downloadmesa-1b31d528b9c5cc1bc17af0f58d9c314b74f8e8b3.tar.gz
spirv: Fix gl_spirv_validation when OpLine with strings is present
Fix issue by handling the OpString instructions when walking through the preamble for validation. The gl_spirv_validation() creates a vtn_builder() and walks the instructions looking for a subset of the information. However our current way to walk the instructions will also perform tracking of OpLine/OpNoLine, that may make references to OpString instructions that were being previously ignored by gl_spirv_validation(). This would cause the parsing to fail. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9004 Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22973>
-rw-r--r--src/compiler/spirv/gl_spirv.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/compiler/spirv/gl_spirv.c b/src/compiler/spirv/gl_spirv.c
index 5ef38928edd..9b5e351c6c0 100644
--- a/src/compiler/spirv/gl_spirv.c
+++ b/src/compiler/spirv/gl_spirv.c
@@ -33,14 +33,22 @@ vtn_validate_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
const uint32_t *w, unsigned count)
{
switch (opcode) {
+ case SpvOpString:
case SpvOpSource:
case SpvOpSourceExtension:
case SpvOpSourceContinued:
+ case SpvOpModuleProcessed:
+ /* We need this since vtn_foreach_instruction automatically handles
+ * OpLine / OpNoLine and relies on the SpvOpString from preamble being
+ * handled.
+ */
+ vtn_handle_debug_text(b, opcode, w, count);
+ break;
+
case SpvOpExtension:
case SpvOpCapability:
case SpvOpExtInstImport:
case SpvOpMemoryModel:
- case SpvOpString:
case SpvOpName:
case SpvOpMemberName:
case SpvOpExecutionMode: