diff options
author | Marek Olšák <marek.olsak@amd.com> | 2017-07-28 23:53:19 +0200 |
---|---|---|
committer | Marek Olšák <marek.olsak@amd.com> | 2017-08-04 02:10:04 +0200 |
commit | 6fb382d9fbbdb2ac20adadd7ef305f9d8f8b4cad (patch) | |
tree | d1f9a6c3b595d764611a9c8a8176258ee0319a78 /src/amd | |
parent | 59144d4bf5e49cb4085ae723b7e77715922abd61 (diff) |
ac/surface: set structure size and handle errors for AddrComputeBaseSwizzle
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Diffstat (limited to 'src/amd')
-rw-r--r-- | src/amd/common/ac_surface.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index 68700f4102..1eff4e51dd 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -714,12 +714,19 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib, ADDR_COMPUTE_BASE_SWIZZLE_INPUT AddrBaseSwizzleIn = {0}; ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT AddrBaseSwizzleOut = {0}; + AddrBaseSwizzleIn.size = sizeof(ADDR_COMPUTE_BASE_SWIZZLE_INPUT); + AddrBaseSwizzleOut.size = sizeof(ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT); + AddrBaseSwizzleIn.surfIndex = p_atomic_inc_return(config->info.surf_index) - 1; AddrBaseSwizzleIn.tileIndex = AddrSurfInfoIn.tileIndex; AddrBaseSwizzleIn.macroModeIndex = AddrSurfInfoOut.macroModeIndex; AddrBaseSwizzleIn.pTileInfo = AddrSurfInfoOut.pTileInfo; AddrBaseSwizzleIn.tileMode = AddrSurfInfoOut.tileMode; - AddrComputeBaseSwizzle(addrlib, &AddrBaseSwizzleIn, &AddrBaseSwizzleOut); + + r = AddrComputeBaseSwizzle(addrlib, &AddrBaseSwizzleIn, + &AddrBaseSwizzleOut); + if (r != ADDR_OK) + return r; assert(AddrBaseSwizzleOut.tileSwizzle <= u_bit_consecutive(0, sizeof(surf->tile_swizzle) * 8)); |