summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_emit.c7
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_format.c4
2 files changed, 6 insertions, 5 deletions
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c
index 10ebc045503..1240786e4dd 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c
@@ -209,15 +209,16 @@ setup_border_colors(struct fd_texture_stateobj *tex, struct bcolor_entry *entrie
/*
* HACK: for PIPE_FORMAT_X24S8_UINT we end up w/ the
* stencil border color value in bc->ui[0] but according
- * to desc->swizzle and desc->channel, the .x component
+ * to desc->swizzle and desc->channel, the .x/.w component
* is NONE and the stencil value is in the y component.
- * Meanwhile the hardware wants this in the .x componetn.
+ * Meanwhile the hardware wants this in the .w component
+ * for x24s8 and the .x component for x32_s8x24.
*/
if ((format == PIPE_FORMAT_X24S8_UINT) ||
(format == PIPE_FORMAT_X32_S8X24_UINT)) {
if (j == 0) {
c = 1;
- cd = 0;
+ cd = (format == PIPE_FORMAT_X32_S8X24_UINT) ? 0 : 3;
} else {
continue;
}
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_format.c b/src/gallium/drivers/freedreno/a6xx/fd6_format.c
index 492de2edfcd..5748017633a 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_format.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_format.c
@@ -216,7 +216,7 @@ static struct fd6_format formats[PIPE_FORMAT_COUNT] = {
_T(R9G9B9E5_FLOAT, 9_9_9_E5_FLOAT, NONE, WZYX),
_T(Z24X8_UNORM, X8Z24_UNORM, X8Z24_UNORM, WZYX),
- _T(X24S8_UINT, 8_8_8_8_UINT, X8Z24_UNORM, XYZW), // XXX
+ _T(X24S8_UINT, 8_8_8_8_UINT, X8Z24_UNORM, WZYX),
_T(Z24_UNORM_S8_UINT, X8Z24_UNORM, X8Z24_UNORM, WZYX),
_T(Z32_FLOAT, 32_FLOAT, R32_FLOAT, WZYX),
_T(Z32_FLOAT_S8X24_UINT, 32_FLOAT, R32_FLOAT, WZYX),
@@ -453,7 +453,7 @@ fd6_tex_swiz(enum pipe_format format, unsigned char *swiz,
*/
if (format == PIPE_FORMAT_X24S8_UINT) {
const unsigned char stencil_swiz[4] = {
- PIPE_SWIZZLE_X, PIPE_SWIZZLE_X, PIPE_SWIZZLE_X, PIPE_SWIZZLE_X
+ PIPE_SWIZZLE_W, PIPE_SWIZZLE_W, PIPE_SWIZZLE_W, PIPE_SWIZZLE_W
};
util_format_compose_swizzles(stencil_swiz, uswiz, swiz);
} else if (fd6_pipe2swap(format) != WZYX) {