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
|
static int
|
||||||
gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib,
|
gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib,
|
||||||
ADDR2_COMPUTE_SURFACE_INFO_INPUT *in,
|
ADDR2_COMPUTE_SURFACE_INFO_INPUT *in,
|
||||||
bool is_fmask, AddrSwizzleMode *swizzle_mode)
|
bool is_fmask, unsigned flags,
|
||||||
|
AddrSwizzleMode *swizzle_mode)
|
||||||
{
|
{
|
||||||
ADDR_E_RETURNCODE ret;
|
ADDR_E_RETURNCODE ret;
|
||||||
ADDR2_GET_PREFERRED_SURF_SETTING_INPUT sin = {0};
|
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.numSamples = in->numSamples;
|
||||||
sin.numFrags = in->numFrags;
|
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) {
|
if (is_fmask) {
|
||||||
sin.flags.color = 0;
|
sin.flags.color = 0;
|
||||||
sin.flags.fmask = 1;
|
sin.flags.fmask = 1;
|
||||||
|
|
@ -1036,7 +1044,9 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib,
|
||||||
fin.size = sizeof(ADDR2_COMPUTE_FMASK_INFO_INPUT);
|
fin.size = sizeof(ADDR2_COMPUTE_FMASK_INFO_INPUT);
|
||||||
fout.size = sizeof(ADDR2_COMPUTE_FMASK_INFO_OUTPUT);
|
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)
|
if (ret != ADDR_OK)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|
@ -1232,7 +1242,8 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, false,
|
r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn,
|
||||||
|
false, surf->flags,
|
||||||
&AddrSurfInfoIn.swizzleMode);
|
&AddrSurfInfoIn.swizzleMode);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
|
@ -1268,7 +1279,8 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib,
|
||||||
AddrSurfInfoIn.format = ADDR_FMT_8;
|
AddrSurfInfoIn.format = ADDR_FMT_8;
|
||||||
|
|
||||||
if (!AddrSurfInfoIn.flags.depth) {
|
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);
|
&AddrSurfInfoIn.swizzleMode);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue