From 7e6159d10c1cec21fc26c1f59101d2a8960c6595 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 15 Jan 2025 03:53:17 -0800 Subject: [PATCH] ac/surface: honor RADEON_SURF_PREFER_xxx_ALIGNMENT on GFX12 This allows to select a better alignment to not waste memory. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/common/ac_surface.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index efe96a58265..219ec5ffcc2 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -2780,7 +2780,14 @@ static unsigned gfx12_select_swizzle_mode(struct ac_addrlib *addrlib, get_in.numSlices = in->numSlices; get_in.numMipLevels = in->numMipLevels; get_in.numSamples = in->numSamples; - get_in.maxAlign = info->has_dedicated_vram ? (256 * 1024) : (64 * 1024); + + if (surf->flags & RADEON_SURF_PREFER_4K_ALIGNMENT) { + get_in.maxAlign = 4 * 1024; + } else if (surf->flags & RADEON_SURF_PREFER_64K_ALIGNMENT) { + get_in.maxAlign = 64 * 1024; + } else { + get_in.maxAlign = info->has_dedicated_vram ? (256 * 1024) : (64 * 1024); + } if (Addr3GetPossibleSwizzleModes(addrlib->handle, &get_in, &get_out) != ADDR_OK) { assert(!"Addr3GetPossibleSwizzleModes failed");