pan/bi: Add texture indices to IR
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Thu, 30 Apr 2020 20:08:01 +0000 (16:08 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 1 May 2020 00:27:23 +0000 (00:27 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4844>

src/panfrost/bifrost/bi_print.c
src/panfrost/bifrost/compiler.h

index f1e42db26d24273f0860fe7f489d5fc1a25dafa4..08237b6354dc871b9ac555ce3df0efde17e24f57 100644 (file)
@@ -319,6 +319,13 @@ bi_print_branch(struct bi_branch *branch, FILE *fp)
         fprintf(fp, ".%s", bi_cond_name(branch->cond));
 }
 
+static void
+bi_print_texture(struct bi_texture *tex, FILE *fp)
+{
+        fprintf(fp, " - texture %u, sampler %u",
+                        tex->texture_index, tex->sampler_index);
+}
+
 void
 bi_print_instruction(bi_instruction *ins, FILE *fp)
 {
@@ -350,9 +357,9 @@ bi_print_instruction(bi_instruction *ins, FILE *fp)
                 fprintf(fp, ".%s", bi_cond_name(ins->cond));
         else if (ins->type == BI_BLEND)
                 fprintf(fp, ".loc%u", ins->blend_location);
-        else if (ins->type == BI_TEX)
+        else if (ins->type == BI_TEX) {
                 fprintf(fp, ".%s", bi_tex_op_name(ins->op.texture));
-        else if (ins->type == BI_BITWISE)
+        else if (ins->type == BI_BITWISE)
                 fprintf(fp, ".%cshift", ins->bitwise.rshift ? 'r' : 'l');
 
         if (ins->vector_channels)
@@ -393,6 +400,8 @@ bi_print_instruction(bi_instruction *ins, FILE *fp)
                         fprintf(fp, "-> block%u", ins->branch.target->base.name);
                 else
                         fprintf(fp, "-> blockhole");
+        } else if (ins->type == BI_TEX) {
+                bi_print_texture(&ins->texture, fp);
         }
 
         fprintf(fp, "\n");
index 9776164396674da06d07534648e9eb46025c17ad..f33595dfe402a44cc9dba034832d3e665f2613bf 100644 (file)
@@ -219,6 +219,12 @@ struct bi_bitwise {
         bool rshift; /* false for lshift */
 };
 
+struct bi_texture {
+        /* Constant indices. Indirect would need to be in src[..] like normal,
+         * we can reserve some sentinels there for that for future. */
+        unsigned texture_index, sampler_index;
+};
+
 typedef struct {
         struct list_head link; /* Must be first */
         enum bi_class type;
@@ -297,6 +303,7 @@ typedef struct {
                 unsigned blend_location;
 
                 struct bi_bitwise bitwise;
+                struct bi_texture texture;
         };
 } bi_instruction;