mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 19:50:11 +01:00
ac/surface/gfx9: request desired micro tile mode explicitly
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
This commit is contained in:
parent
5dd02123a0
commit
b64b712558
1 changed files with 16 additions and 4 deletions
|
|
@ -814,7 +814,8 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib,
|
|||
static int
|
||||
gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib,
|
||||
ADDR2_COMPUTE_SURFACE_INFO_INPUT *in,
|
||||
bool is_fmask, AddrSwizzleMode *swizzle_mode)
|
||||
bool is_fmask, unsigned flags,
|
||||
AddrSwizzleMode *swizzle_mode)
|
||||
{
|
||||
ADDR_E_RETURNCODE ret;
|
||||
ADDR2_GET_PREFERRED_SURF_SETTING_INPUT sin = {0};
|
||||
|
|
@ -839,6 +840,13 @@ gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib,
|
|||
sin.numSamples = in->numSamples;
|
||||
sin.numFrags = in->numFrags;
|
||||
|
||||
if (flags & RADEON_SURF_SCANOUT)
|
||||
sin.preferredSwSet.sw_D = 1;
|
||||
else if (in->flags.depth || in->flags.stencil || is_fmask)
|
||||
sin.preferredSwSet.sw_Z = 1;
|
||||
else
|
||||
sin.preferredSwSet.sw_S = 1;
|
||||
|
||||
if (is_fmask) {
|
||||
sin.flags.color = 0;
|
||||
sin.flags.fmask = 1;
|
||||
|
|
@ -1036,7 +1044,9 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib,
|
|||
fin.size = sizeof(ADDR2_COMPUTE_FMASK_INFO_INPUT);
|
||||
fout.size = sizeof(ADDR2_COMPUTE_FMASK_INFO_OUTPUT);
|
||||
|
||||
ret = gfx9_get_preferred_swizzle_mode(addrlib, in, true, &fin.swizzleMode);
|
||||
ret = gfx9_get_preferred_swizzle_mode(addrlib, in,
|
||||
true, surf->flags,
|
||||
&fin.swizzleMode);
|
||||
if (ret != ADDR_OK)
|
||||
return ret;
|
||||
|
||||
|
|
@ -1232,7 +1242,8 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib,
|
|||
break;
|
||||
}
|
||||
|
||||
r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, false,
|
||||
r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn,
|
||||
false, surf->flags,
|
||||
&AddrSurfInfoIn.swizzleMode);
|
||||
if (r)
|
||||
return r;
|
||||
|
|
@ -1268,7 +1279,8 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib,
|
|||
AddrSurfInfoIn.format = ADDR_FMT_8;
|
||||
|
||||
if (!AddrSurfInfoIn.flags.depth) {
|
||||
r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, false,
|
||||
r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn,
|
||||
false, surf->flags,
|
||||
&AddrSurfInfoIn.swizzleMode);
|
||||
if (r)
|
||||
return r;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue