[Mesa-dev] [PATCH] tgsi: skip texture query opcodes when examining texture targets

Brian Paul brianp at vmware.com
Wed Mar 30 15:58:43 UTC 2016


Should fix the assertion in piglit
spec at arb_gpu_shader5@texturegather at fs-r-none-shadow-2d when the
TXQ instruction specifies a 2D target but the sampler view was
declared as SHADOW2D.
---
 src/gallium/auxiliary/tgsi/tgsi_scan.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 76a6fef..d90fb1d 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -54,6 +54,20 @@ is_memory_file(unsigned file)
 }
 
 
+/**
+ * Is the opcode a "true" texture instruction which samples from a
+ * texture map?
+ */
+static bool
+is_texture_inst(unsigned opcode)
+{
+   return (opcode != TGSI_OPCODE_TXQ &&
+           opcode != TGSI_OPCODE_TXQS &&
+           opcode != TGSI_OPCODE_TXQ_LZ &&
+           opcode != TGSI_OPCODE_LODQ &&
+           tgsi_get_opcode_info(opcode)->is_tex);
+}
+
 static void
 scan_instruction(struct tgsi_shader_info *info,
                  const struct tgsi_full_instruction *fullinst,
@@ -189,7 +203,7 @@ scan_instruction(struct tgsi_shader_info *info,
          assert(index < Elements(info->is_msaa_sampler));
          assert(index < PIPE_MAX_SAMPLERS);
 
-         if (tgsi_get_opcode_info(fullinst->Instruction.Opcode)->is_tex) {
+         if (is_texture_inst(fullinst->Instruction.Opcode)) {
             const unsigned target = fullinst->Texture.Texture;
             assert(target < TGSI_TEXTURE_UNKNOWN);
             /* for texture instructions, check that the texture instruction
-- 
1.9.1



More information about the mesa-dev mailing list