mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 11:38:05 +02:00
radv: Use correct border swizzle on GFX9+.
We only need the format swizzle, not the full swizzle. Fixes:57e796a12a("radv: Implement VK_EXT_custom_border_color") Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4020 Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9731> (cherry picked from commit74d36c4f98)
This commit is contained in:
parent
b22b11ffa4
commit
16c4d7357f
2 changed files with 10 additions and 10 deletions
|
|
@ -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"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue