freedreno/a5xx: Fix up border color pointers.
authorEric Anholt <eric@anholt.net>
Mon, 29 Mar 2021 21:11:28 +0000 (14:11 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 5 May 2021 21:28:03 +0000 (21:28 +0000)
We were forgetting to increment in the loop, but also it looks from blob
dumps on Pixel 2 like all the pointers it emitted were shifted up by 3
compared to our xml, and that's the same shift that a6xx uses for its
pointers.  None of the tests seem to use more than one
border-color-requiring texture, so it's hard to tell.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9904>

src/freedreno/registers/adreno/a5xx.xml
src/gallium/drivers/freedreno/a5xx/fd5_emit.c

index aea0096..b340ee7 100644 (file)
@@ -2882,7 +2882,7 @@ different border-color states per texture..  Looks something like:
 0340: 3c003c00 3c003c00 00000000 00000000 00000000 00000000 00000000 00000000
 
                 -->
-               <bitfield name="BCOLOR_OFFSET" low="4" high="31"/>
+               <bitfield name="BCOLOR_OFFSET" low="7" high="31"/>
        </reg32>
        <reg32 offset="3" name="3"/>
 </domain>
index dc04d42..8f41504 100644 (file)
@@ -366,7 +366,7 @@ emit_textures(struct fd_context *ctx, struct fd_ringbuffer *ring,
          OUT_RING(ring, sampler->texsamp0);
          OUT_RING(ring, sampler->texsamp1);
          OUT_RING(ring, sampler->texsamp2 |
-                           A5XX_TEX_SAMP_2_BCOLOR_OFFSET(bcolor_offset));
+                           A5XX_TEX_SAMP_2_BCOLOR_OFFSET(bcolor_offset + i));
          OUT_RING(ring, sampler->texsamp3);
 
          needs_border |= sampler->needs_border;