Module: Mesa Branch: staging/21.1 Commit: 846139e4eacd27cefcd937c68f166c217dc6a6b0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=846139e4eacd27cefcd937c68f166c217dc6a6b0
Author: Bas Nieuwenhuizen <[email protected]> Date: Sun Mar 21 00:27:17 2021 +0100 radv: Use correct border swizzle on GFX9+. We only need the format swizzle, not the full swizzle. Fixes: 57e796a12a8 ("radv: Implement VK_EXT_custom_border_color") Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4020 Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9731> (cherry picked from commit 74d36c4f986c7bd38390d0803074e97057fd4a71) --- .pick_status.json | 2 +- src/amd/vulkan/radv_image.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 96e83d7afdd..0b39533c2cf 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -283,7 +283,7 @@ "description": "radv: Use correct border swizzle on GFX9+.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "57e796a12a883f5845c8e0ed05ec6bdb6d055b53" }, diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index c7d102882a6..aa76d1e2674 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -824,29 +824,29 @@ radv_tex_dim(VkImageType image_type, VkImageViewType view_type, unsigned nr_laye } static unsigned -gfx9_border_color_swizzle(const enum pipe_swizzle swizzle[4]) +gfx9_border_color_swizzle(const struct util_format_description *desc) { unsigned bc_swizzle = V_008F20_BC_SWIZZLE_XYZW; - if (swizzle[3] == PIPE_SWIZZLE_X) { + if (desc->swizzle[3] == PIPE_SWIZZLE_X) { /* For the pre-defined border color values (white, opaque * black, transparent black), the only thing that matters is * that the alpha channel winds up in the correct place * (because the RGB channels are all the same) so either of * these enumerations will work. */ - if (swizzle[2] == PIPE_SWIZZLE_Y) + if (desc->swizzle[2] == PIPE_SWIZZLE_Y) bc_swizzle = V_008F20_BC_SWIZZLE_WZYX; else bc_swizzle = V_008F20_BC_SWIZZLE_WXYZ; - } else if (swizzle[0] == PIPE_SWIZZLE_X) { - if (swizzle[1] == PIPE_SWIZZLE_Y) + } else if (desc->swizzle[0] == PIPE_SWIZZLE_X) { + if (desc->swizzle[1] == PIPE_SWIZZLE_Y) bc_swizzle = V_008F20_BC_SWIZZLE_XYZW; else bc_swizzle = V_008F20_BC_SWIZZLE_XWYZ; - } else if (swizzle[1] == PIPE_SWIZZLE_X) { + } else if (desc->swizzle[1] == PIPE_SWIZZLE_X) { bc_swizzle = V_008F20_BC_SWIZZLE_YXWZ; - } else if (swizzle[2] == PIPE_SWIZZLE_X) { + } else if (desc->swizzle[2] == PIPE_SWIZZLE_X) { bc_swizzle = V_008F20_BC_SWIZZLE_ZYXW; } @@ -906,7 +906,7 @@ gfx10_make_texture_descriptor(struct radv_device *device, struct radv_image *ima S_00A00C_BASE_LEVEL(image->info.samples > 1 ? 0 : first_level) | S_00A00C_LAST_LEVEL(image->info.samples > 1 ? util_logbase2(image->info.samples) : last_level) | - S_00A00C_BC_SWIZZLE(gfx9_border_color_swizzle(swizzle)) | S_00A00C_TYPE(type); + S_00A00C_BC_SWIZZLE(gfx9_border_color_swizzle(desc)) | S_00A00C_TYPE(type); /* Depth is the the last accessible layer on gfx9+. The hw doesn't need * to know the total number of layers. */ @@ -1051,7 +1051,7 @@ si_make_texture_descriptor(struct radv_device *device, struct radv_image *image, state[7] = 0; if (device->physical_device->rad_info.chip_class == GFX9) { - unsigned bc_swizzle = gfx9_border_color_swizzle(swizzle); + unsigned bc_swizzle = gfx9_border_color_swizzle(desc); /* Depth is the last accessible layer on Gfx9. * The hw doesn't need to know the total number of layers. _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
