freedreno/a6xx: more bcolor fixes
authorRob Clark <robdclark@gmail.com>
Sun, 10 Mar 2019 15:08:10 +0000 (11:08 -0400)
committerRob Clark <robdclark@gmail.com>
Sun, 10 Mar 2019 15:40:06 +0000 (11:40 -0400)
Non-zero offset wasn't working, which breaks a bunch of
dEQP-GLES31.functional.texture.border_clamp.formats.* when doing sharded
deqp runs (because order of tests changes, resulting in different
texture state bound.. deqp doesn't really clean up it's gl state between
tests very well)

Previously, if additional textures were bound, due to using too small of
a bcolor_entry size, the last 32bytes of the bcolor_entry would be
overwritten.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/a6xx/fd6_emit.c

index 95ac616a76c39b7ba51d507e1e03cd91f049579b..b48a0d68fde81605f5db899155aabf49201db5f5 100644 (file)
@@ -162,10 +162,10 @@ struct PACKED bcolor_entry {
        uint32_t rgb10a2;
        uint32_t z24; /* also s8? */
        uint16_t srgb[4];      /* appears to duplicate fp16[], but clamped, used for srgb */
-       uint8_t  __pad1[24];
+       uint8_t  __pad1[56];
 };
 
-#define FD6_BORDER_COLOR_SIZE        0x60
+#define FD6_BORDER_COLOR_SIZE        sizeof(struct bcolor_entry)
 #define FD6_BORDER_COLOR_UPLOAD_SIZE (2 * PIPE_MAX_SAMPLERS * FD6_BORDER_COLOR_SIZE)
 
 static void