mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
freedreno: Disable UBWC on Z24S8 if not TEXTURE_2D.
Fixes two of our three remaining GLES CTS failures, and avoids more regressions once we enable UBWC mipmaps. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3059>
This commit is contained in:
parent
ddb0b35b76
commit
ecd62ff766
1 changed files with 11 additions and 3 deletions
|
|
@ -35,7 +35,7 @@
|
||||||
* it can be tiled doesn't mean it can be compressed.
|
* it can be tiled doesn't mean it can be compressed.
|
||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
ok_ubwc_format(enum pipe_format pfmt)
|
ok_ubwc_format(struct fd_resource *rsc, enum pipe_format pfmt)
|
||||||
{
|
{
|
||||||
/* NOTE: both x24s8 and z24s8 map to RB6_X8Z24_UNORM, but UBWC
|
/* NOTE: both x24s8 and z24s8 map to RB6_X8Z24_UNORM, but UBWC
|
||||||
* does not seem to work properly when sampling x24s8.. possibly
|
* does not seem to work properly when sampling x24s8.. possibly
|
||||||
|
|
@ -48,6 +48,14 @@ ok_ubwc_format(enum pipe_format pfmt)
|
||||||
if (pfmt == PIPE_FORMAT_X24S8_UINT)
|
if (pfmt == PIPE_FORMAT_X24S8_UINT)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* We don't fully understand what's going wrong with this combination, but
|
||||||
|
* we haven't been able to make it work. It's enough of a corner-case
|
||||||
|
* that we can just disable UBWC for these resources.
|
||||||
|
*/
|
||||||
|
if (rsc->base.target != PIPE_TEXTURE_2D &&
|
||||||
|
pfmt == PIPE_FORMAT_Z24_UNORM_S8_UINT)
|
||||||
|
return false;
|
||||||
|
|
||||||
switch (fd6_pipe2color(pfmt)) {
|
switch (fd6_pipe2color(pfmt)) {
|
||||||
case RB6_R10G10B10A2_UINT:
|
case RB6_R10G10B10A2_UINT:
|
||||||
case RB6_R10G10B10A2_UNORM:
|
case RB6_R10G10B10A2_UNORM:
|
||||||
|
|
@ -92,7 +100,7 @@ fd6_fill_ubwc_buffer_sizes(struct fd_resource *rsc)
|
||||||
uint32_t width = prsc->width0;
|
uint32_t width = prsc->width0;
|
||||||
uint32_t height = prsc->height0;
|
uint32_t height = prsc->height0;
|
||||||
|
|
||||||
if (!ok_ubwc_format(prsc->format))
|
if (!ok_ubwc_format(rsc, prsc->format))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* limit things to simple single level 2d for now: */
|
/* limit things to simple single level 2d for now: */
|
||||||
|
|
@ -154,7 +162,7 @@ fd6_validate_format(struct fd_context *ctx, struct fd_resource *rsc,
|
||||||
if (!rsc->layout.ubwc_layer_size)
|
if (!rsc->layout.ubwc_layer_size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ok_ubwc_format(format))
|
if (ok_ubwc_format(rsc, format))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fd_resource_uncompress(ctx, rsc);
|
fd_resource_uncompress(ctx, rsc);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue