From 0b3e344212698296d448a757aa5ca776b6cd3a42 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 11 Jun 2020 05:00:44 -0400 Subject: [PATCH] ac/surface: don't free dcc_retile_map on failure because the hash table now owns it. Fixes: bd553f0546d - ac/surface: cache DCC retile maps (v2) Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/amd/common/ac_surface.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index 206cdd2..905f33c 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -1907,7 +1907,7 @@ static int gfx9_compute_surface(struct ac_addrlib *addrlib, r = gfx9_compute_miptree(addrlib, info, config, surf, compressed, &AddrSurfInfoIn); if (r) - goto error; + return r; /* Calculate texture layout information for stencil. */ if (surf->flags & RADEON_SURF_SBUFFER) { @@ -1919,14 +1919,14 @@ static int gfx9_compute_surface(struct ac_addrlib *addrlib, r = gfx9_get_preferred_swizzle_mode(addrlib->handle, surf, &AddrSurfInfoIn, false, &AddrSurfInfoIn.swizzleMode); if (r) - goto error; + return r; } else AddrSurfInfoIn.flags.depth = 0; r = gfx9_compute_miptree(addrlib, info, config, surf, compressed, &AddrSurfInfoIn); if (r) - goto error; + return r; } surf->is_linear = surf->u.gfx9.surf.swizzle_mode == ADDR_SW_LINEAR; @@ -1938,7 +1938,7 @@ static int gfx9_compute_surface(struct ac_addrlib *addrlib, r = Addr2IsValidDisplaySwizzleMode(addrlib->handle, surf->u.gfx9.surf.swizzle_mode, surf->bpe * 8, &displayable); if (r) - goto error; + return r; /* Display needs unaligned DCC. */ if (surf->num_dcc_levels && @@ -2049,11 +2049,6 @@ static int gfx9_compute_surface(struct ac_addrlib *addrlib, } return 0; - -error: - free(surf->u.gfx9.dcc_retile_map); - surf->u.gfx9.dcc_retile_map = NULL; - return r; } int ac_compute_surface(struct ac_addrlib *addrlib, const struct radeon_info *info, -- 2.7.4