mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 00:38:48 +02:00
radv: fix image view creation for depth and stencil only
This fixes the image view for sampling just the depth.
It removes some pointless swizzle code, and adds
a missing case for the x8_d24 format.
Fixes:
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.*
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.*
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.*
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 6d7be52d90)
This commit is contained in:
parent
7e9bdb40f3
commit
32adfd509d
2 changed files with 9 additions and 13 deletions
|
|
@ -154,6 +154,7 @@ uint32_t radv_translate_tex_dataformat(VkFormat format,
|
|||
case VK_FORMAT_D16_UNORM:
|
||||
return V_008F14_IMG_DATA_FORMAT_16;
|
||||
case VK_FORMAT_D24_UNORM_S8_UINT:
|
||||
case VK_FORMAT_X8_D24_UNORM_PACK32:
|
||||
return V_008F14_IMG_DATA_FORMAT_8_24;
|
||||
case VK_FORMAT_S8_UINT:
|
||||
return V_008F14_IMG_DATA_FORMAT_8;
|
||||
|
|
|
|||
|
|
@ -267,17 +267,7 @@ si_make_texture_descriptor(struct radv_device *device,
|
|||
|
||||
if (desc->colorspace == VK_FORMAT_COLORSPACE_ZS) {
|
||||
const unsigned char swizzle_xxxx[4] = {0, 0, 0, 0};
|
||||
const unsigned char swizzle_yyyy[4] = {1, 1, 1, 1};
|
||||
|
||||
switch (vk_format) {
|
||||
case VK_FORMAT_X8_D24_UNORM_PACK32:
|
||||
case VK_FORMAT_D24_UNORM_S8_UINT:
|
||||
case VK_FORMAT_D32_SFLOAT_S8_UINT:
|
||||
vk_format_compose_swizzles(mapping, swizzle_yyyy, swizzle);
|
||||
break;
|
||||
default:
|
||||
vk_format_compose_swizzles(mapping, swizzle_xxxx, swizzle);
|
||||
}
|
||||
vk_format_compose_swizzles(mapping, swizzle_xxxx, swizzle);
|
||||
} else {
|
||||
vk_format_compose_swizzles(mapping, desc->swizzle, swizzle);
|
||||
}
|
||||
|
|
@ -775,8 +765,13 @@ radv_image_view_init(struct radv_image_view *iview,
|
|||
iview->vk_format = pCreateInfo->format;
|
||||
iview->aspect_mask = pCreateInfo->subresourceRange.aspectMask;
|
||||
|
||||
if (iview->aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT)
|
||||
if (iview->aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT) {
|
||||
is_stencil = true;
|
||||
iview->vk_format = vk_format_stencil_only(iview->vk_format);
|
||||
} else if (iview->aspect_mask == VK_IMAGE_ASPECT_DEPTH_BIT) {
|
||||
iview->vk_format = vk_format_depth_only(iview->vk_format);
|
||||
}
|
||||
|
||||
iview->extent = (VkExtent3D) {
|
||||
.width = radv_minify(image->extent.width , range->baseMipLevel),
|
||||
.height = radv_minify(image->extent.height, range->baseMipLevel),
|
||||
|
|
@ -794,7 +789,7 @@ radv_image_view_init(struct radv_image_view *iview,
|
|||
|
||||
si_make_texture_descriptor(device, image, false,
|
||||
iview->type,
|
||||
pCreateInfo->format,
|
||||
iview->vk_format,
|
||||
&pCreateInfo->components,
|
||||
0, radv_get_levelCount(image, range) - 1,
|
||||
range->baseArrayLayer,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue