panfrost/midgard/disasm: LOD immediate/register select
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 10 Jun 2019 18:51:54 +0000 (11:51 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 11 Jun 2019 15:44:19 +0000 (08:44 -0700)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/midgard/disassemble.c
src/gallium/drivers/panfrost/midgard/midgard.h

index 49e2042f7fdbd6f373926e5941e51c3dfab9300d..0007c01e3d04b40c5367287f139304a1ac0cc3c2 100644 (file)
@@ -1137,8 +1137,12 @@ print_texture_word(uint32_t *word, unsigned tabs)
                 printf(",");
         }
 
-        if (texture->bias)
-                printf("%f, ", texture->bias / 256.0f);
+        if (texture->lod_register) {
+                /* TODO: Decode */
+                printf("lod/bias/grad reg 0x%X, ", texture->bias);
+        } else if (texture->bias) {
+                printf("%f /* %d */, ", texture->bias / 256.0f, texture->bias);
+        }
 
         printf("\n");
 
index bc283bb365197dbba3d0687b632052153633d1c4..354d611e9df239db4e9f748802b428638bb6e3a1 100644 (file)
@@ -520,7 +520,13 @@ __attribute__((__packed__))
         unsigned cont  : 1;
         unsigned last  : 1;
 
-        unsigned format    : 5;
+        unsigned format    : 4;
+
+        /* Is a register used to specify the
+         * LOD/bias/offset? If set, use the `bias` field as
+         * a register index. If clear, use the `bias` field
+         * as an immediate. */
+        unsigned lod_register : 1;
 
         /* Is a register used to specify an offset? If set, use the
          * offset_reg_* fields to encode this, duplicated for each of the