mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-22 06:20:22 +01:00
freedreno/a6xx: un-swap X24S8_UINT
The stencil is actually in the .w component, but we used to use SWAP to remap the channels. This doesn't work when tiled/ubwc. Fixes: dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_2d_array dEQP-GLES31.functional.stencil_texturing.format.depth24_stencil8_cube dEQP-GLES31.functional.stencil_texturing.format.stencil_index8_2d_array dEQP-GLES31.functional.stencil_texturing.format.stencil_index8_cube dEQP-GLES31.functional.stencil_texturing.misc.base_level dEQP-GLES31.functional.texture.border_clamp.formats.stencil_index8.nearest_size_pot dEQP-GLES31.functional.texture.border_clamp.formats.stencil_index8.nearest_size_npot dEQP-GLES31.functional.texture.border_clamp.formats.depth24_stencil8_sample_stencil.nearest_size_pot dEQP-GLES31.functional.texture.border_clamp.formats.depth24_stencil8_sample_stencil.nearest_size_npot dEQP-GLES31.functional.texture.border_clamp.sampler.uint_stencil Signed-off-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:
parent
6e3aee4630
commit
4e72abcd97
2 changed files with 6 additions and 5 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue