nvk/image: Prefer vk_image values over pCreateInfo

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33785>
This commit is contained in:
Faith Ekstrand
2025-02-27 13:47:40 -06:00
committed by Marge Bot
parent 02341733df
commit af406dccfd
+30 -30
View File
@@ -757,11 +757,11 @@ nvk_image_init(struct nvk_device *dev,
image->vk.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
nil_image_usage_flags usage = 0;
if (pCreateInfo->tiling == VK_IMAGE_TILING_LINEAR)
if (image->vk.tiling == VK_IMAGE_TILING_LINEAR)
usage |= NIL_IMAGE_USAGE_LINEAR_BIT;
if (pCreateInfo->flags & VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT)
if (image->vk.create_flags & VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT)
usage |= NIL_IMAGE_USAGE_2D_VIEW_BIT;
if (pCreateInfo->flags & VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT)
if (image->vk.create_flags & VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT)
usage |= NIL_IMAGE_USAGE_2D_VIEW_BIT;
/* In order to be able to clear 3D depth/stencil images, we need to bind
@@ -769,12 +769,12 @@ nvk_image_init(struct nvk_device *dev,
*/
if ((image->vk.aspects & (VK_IMAGE_ASPECT_DEPTH_BIT |
VK_IMAGE_ASPECT_STENCIL_BIT)) &&
pCreateInfo->imageType == VK_IMAGE_TYPE_3D)
image->vk.image_type == VK_IMAGE_TYPE_3D)
usage |= NIL_IMAGE_USAGE_2D_VIEW_BIT;
image->plane_count = vk_format_get_plane_count(pCreateInfo->format);
image->plane_count = vk_format_get_plane_count(image->vk.format);
image->disjoint = image->plane_count > 1 &&
(pCreateInfo->flags & VK_IMAGE_CREATE_DISJOINT_BIT);
(image->vk.create_flags & VK_IMAGE_CREATE_DISJOINT_BIT);
if (image->vk.create_flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) {
/* Sparse multiplane is not supported */
@@ -835,7 +835,7 @@ nvk_image_init(struct nvk_device *dev,
IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT);
enum pipe_format p_format =
nvk_format_to_pipe_format(pCreateInfo->format);
nvk_format_to_pipe_format(image->vk.format);
image->vk.drm_format_mod =
nil_select_best_drm_format_mod(&pdev->info, nil_format(p_format),
mod_list_info->drmFormatModifierCount,
@@ -848,17 +848,17 @@ nvk_image_init(struct nvk_device *dev,
assert(image->plane_count == 1);
struct nil_image_init_info tiled_shadow_nil_info = {
.dim = vk_image_type_to_nil_dim(pCreateInfo->imageType),
.dim = vk_image_type_to_nil_dim(image->vk.image_type),
.format = nil_format(nvk_format_to_pipe_format(image->vk.format)),
.modifier = DRM_FORMAT_MOD_INVALID,
.extent_px = {
.width = pCreateInfo->extent.width,
.height = pCreateInfo->extent.height,
.depth = pCreateInfo->extent.depth,
.array_len = pCreateInfo->arrayLayers,
.width = image->vk.extent.width,
.height = image->vk.extent.height,
.depth = image->vk.extent.depth,
.array_len = image->vk.array_layers,
},
.levels = pCreateInfo->mipLevels,
.samples = pCreateInfo->samples,
.levels = image->vk.mip_levels,
.samples = image->vk.samples,
.usage = usage & ~NIL_IMAGE_USAGE_LINEAR_BIT,
.explicit_row_stride_B = 0,
.max_alignment_B = 0,
@@ -874,28 +874,28 @@ nvk_image_init(struct nvk_device *dev,
* use the smallest block size for all planes.
*/
const struct vk_format_ycbcr_info *ycbcr_info =
vk_format_get_ycbcr_info(pCreateInfo->format);
vk_format_get_ycbcr_info(image->vk.format);
struct nil_image_init_info nil_info[NVK_MAX_IMAGE_PLANES];
for (uint8_t plane = 0; plane < image->plane_count; plane++) {
VkFormat format = ycbcr_info ?
ycbcr_info->planes[plane].format : pCreateInfo->format;
ycbcr_info->planes[plane].format : image->vk.format;
const uint8_t width_scale = ycbcr_info ?
ycbcr_info->planes[plane].denominator_scales[0] : 1;
const uint8_t height_scale = ycbcr_info ?
ycbcr_info->planes[plane].denominator_scales[1] : 1;
nil_info[plane] = (struct nil_image_init_info) {
.dim = vk_image_type_to_nil_dim(pCreateInfo->imageType),
.dim = vk_image_type_to_nil_dim(image->vk.image_type),
.format = nil_format(nvk_format_to_pipe_format(format)),
.modifier = image->vk.drm_format_mod,
.extent_px = {
.width = pCreateInfo->extent.width / width_scale,
.height = pCreateInfo->extent.height / height_scale,
.depth = pCreateInfo->extent.depth,
.array_len = pCreateInfo->arrayLayers,
.width = image->vk.extent.width / width_scale,
.height = image->vk.extent.height / height_scale,
.depth = image->vk.extent.depth,
.array_len = image->vk.array_layers,
},
.levels = pCreateInfo->mipLevels,
.samples = pCreateInfo->samples,
.levels = image->vk.mip_levels,
.samples = image->vk.samples,
.usage = usage,
.explicit_row_stride_B = explicit_row_stride_B,
.max_alignment_B = max_alignment_B,
@@ -917,17 +917,17 @@ nvk_image_init(struct nvk_device *dev,
if (image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
struct nil_image_init_info stencil_nil_info = {
.dim = vk_image_type_to_nil_dim(pCreateInfo->imageType),
.dim = vk_image_type_to_nil_dim(image->vk.image_type),
.format = nil_format(PIPE_FORMAT_R32_UINT),
.modifier = DRM_FORMAT_MOD_INVALID,
.extent_px = {
.width = pCreateInfo->extent.width,
.height = pCreateInfo->extent.height,
.depth = pCreateInfo->extent.depth,
.array_len = pCreateInfo->arrayLayers,
.width = image->vk.extent.width,
.height = image->vk.extent.height,
.depth = image->vk.extent.depth,
.array_len = image->vk.array_layers,
},
.levels = pCreateInfo->mipLevels,
.samples = pCreateInfo->samples,
.levels = image->vk.mip_levels,
.samples = image->vk.samples,
.usage = usage,
.explicit_row_stride_B = 0,
.max_alignment_B = 0,