diff --git a/src/amd/vulkan/meta/radv_meta_clear.c b/src/amd/vulkan/meta/radv_meta_clear.c index c42badd8566..2d0ab579bba 100644 --- a/src/amd/vulkan/meta/radv_meta_clear.c +++ b/src/amd/vulkan/meta/radv_meta_clear.c @@ -1234,7 +1234,7 @@ radv_clear_cmask(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, unsigned slice_size = image->planes[0].surface.cmask_slice_size; offset += slice_size * range->baseArrayLayer; - size = slice_size * radv_get_layerCount(image, range); + size = slice_size * vk_image_subresource_layer_count(&image->vk, range); } return radv_fill_buffer(cmd_buffer, image, image->bindings[0].bo, @@ -1253,7 +1253,7 @@ radv_clear_fmask(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, assert(range->baseMipLevel == 0 && radv_get_levelCount(image, range) == 1); offset += slice_size * range->baseArrayLayer; - size = slice_size * radv_get_layerCount(image, range); + size = slice_size * vk_image_subresource_layer_count(&image->vk, range); return radv_fill_buffer(cmd_buffer, image, image->bindings[0].bo, radv_buffer_get_va(image->bindings[0].bo) + offset, size, value); @@ -1264,7 +1264,7 @@ radv_clear_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, const VkImageSubresourceRange *range, uint32_t value) { uint32_t level_count = radv_get_levelCount(image, range); - uint32_t layer_count = radv_get_layerCount(image, range); + uint32_t layer_count = vk_image_subresource_layer_count(&image->vk, range); uint32_t flush_bits = 0; /* Mark the image as being compressed. */ @@ -1296,7 +1296,7 @@ radv_clear_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, */ offset += dcc_level->dcc_offset + dcc_level->dcc_slice_fast_clear_size * range->baseArrayLayer; - size = dcc_level->dcc_slice_fast_clear_size * radv_get_layerCount(image, range); + size = dcc_level->dcc_slice_fast_clear_size * vk_image_subresource_layer_count(&image->vk, range); } /* Do not clear this level if it can't be compressed. */ @@ -1319,7 +1319,7 @@ radv_clear_dcc_comp_to_single(struct radv_cmd_buffer *cmd_buffer, { struct radv_device *device = cmd_buffer->device; unsigned bytes_per_pixel = vk_format_get_blocksize(image->vk.format); - unsigned layer_count = radv_get_layerCount(image, range); + unsigned layer_count = vk_image_subresource_layer_count(&image->vk, range); struct radv_meta_saved_state saved_state; bool is_msaa = image->info.samples > 1; struct radv_image_view iview; @@ -1460,7 +1460,7 @@ radv_clear_htile(struct radv_cmd_buffer *cmd_buffer, const struct radv_image *im } } } else { - unsigned layer_count = radv_get_layerCount(image, range); + unsigned layer_count = vk_image_subresource_layer_count(&image->vk, range); uint64_t size = image->planes[0].surface.meta_slice_size * layer_count; uint64_t offset = image->bindings[0].offset + image->planes[0].surface.meta_offset + image->planes[0].surface.meta_slice_size * range->baseArrayLayer; @@ -2115,7 +2115,7 @@ radv_fast_clear_range(struct radv_cmd_buffer *cmd_buffer, struct radv_image *ima .baseMipLevel = range->baseMipLevel, .levelCount = radv_get_levelCount(image, range), .baseArrayLayer = range->baseArrayLayer, - .layerCount = radv_get_layerCount(image, range), + .layerCount = vk_image_subresource_layer_count(&image->vk, range), }, }, 0, NULL); @@ -2131,7 +2131,7 @@ radv_fast_clear_range(struct radv_cmd_buffer *cmd_buffer, struct radv_image *ima }, }, .baseArrayLayer = range->baseArrayLayer, - .layerCount = radv_get_layerCount(image, range->layerCount), + .layerCount = vk_image_subresource_layer_count(&image->vk, range), }; VkClearAttachment clear_att = { @@ -2220,7 +2220,7 @@ radv_cmd_clear_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image *imag for (uint32_t l = 0; l < radv_get_levelCount(image, range); ++l) { const uint32_t layer_count = image->vk.image_type == VK_IMAGE_TYPE_3D ? radv_minify(image->info.depth, range->baseMipLevel + l) - : radv_get_layerCount(image, range); + : vk_image_subresource_layer_count(&image->vk, range); if (cs) { for (uint32_t s = 0; s < layer_count; ++s) { diff --git a/src/amd/vulkan/meta/radv_meta_decompress.c b/src/amd/vulkan/meta/radv_meta_decompress.c index 74374a39960..7812c8bdd49 100644 --- a/src/amd/vulkan/meta/radv_meta_decompress.c +++ b/src/amd/vulkan/meta/radv_meta_decompress.c @@ -515,7 +515,7 @@ radv_process_depth_stencil(struct radv_cmd_buffer *cmd_buffer, struct radv_image .extent = {width, height}, }); - for (uint32_t s = 0; s < radv_get_layerCount(image, subresourceRange); s++) { + for (uint32_t s = 0; s < vk_image_subresource_layer_count(&image->vk, subresourceRange); s++) { radv_process_depth_image_layer(cmd_buffer, image, subresourceRange, l, s); } } @@ -553,7 +553,7 @@ radv_expand_depth_stencil_compute(struct radv_cmd_buffer *cmd_buffer, struct rad width = radv_minify(image->info.width, subresourceRange->baseMipLevel + l); height = radv_minify(image->info.height, subresourceRange->baseMipLevel + l); - for (uint32_t s = 0; s < radv_get_layerCount(image, subresourceRange); s++) { + for (uint32_t s = 0; s < vk_image_subresource_layer_count(&image->vk, subresourceRange); s++) { radv_image_view_init( &load_iview, cmd_buffer->device, &(VkImageViewCreateInfo){ diff --git a/src/amd/vulkan/meta/radv_meta_fast_clear.c b/src/amd/vulkan/meta/radv_meta_fast_clear.c index f7747424257..c9b156505a3 100644 --- a/src/amd/vulkan/meta/radv_meta_fast_clear.c +++ b/src/amd/vulkan/meta/radv_meta_fast_clear.c @@ -571,7 +571,7 @@ radv_process_color_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image * } if (radv_dcc_enabled(image, subresourceRange->baseMipLevel) && - (image->info.array_size != radv_get_layerCount(image, subresourceRange) || + (image->info.array_size != vk_image_subresource_layer_count(&image->vk, subresourceRange) || subresourceRange->baseArrayLayer != 0)) { /* Only use predication if the image has DCC with mipmaps or * if the range of layers covers the whole image because the @@ -629,7 +629,7 @@ radv_process_color_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image * .extent = {width, height}, }); - for (uint32_t s = 0; s < radv_get_layerCount(image, subresourceRange); s++) { + for (uint32_t s = 0; s < vk_image_subresource_layer_count(&image->vk, subresourceRange); s++) { radv_process_color_image_layer(cmd_buffer, image, subresourceRange, l, s, flush_cb); } } @@ -746,7 +746,7 @@ radv_decompress_dcc_compute(struct radv_cmd_buffer *cmd_buffer, struct radv_imag width = radv_minify(image->info.width, subresourceRange->baseMipLevel + l); height = radv_minify(image->info.height, subresourceRange->baseMipLevel + l); - for (uint32_t s = 0; s < radv_get_layerCount(image, subresourceRange); s++) { + for (uint32_t s = 0; s < vk_image_subresource_layer_count(&image->vk, subresourceRange); s++) { radv_image_view_init( &load_iview, cmd_buffer->device, &(VkImageViewCreateInfo){ diff --git a/src/amd/vulkan/meta/radv_meta_fmask_expand.c b/src/amd/vulkan/meta/radv_meta_fmask_expand.c index 6c1f83469dc..e8b61a48a48 100644 --- a/src/amd/vulkan/meta/radv_meta_fmask_expand.c +++ b/src/amd/vulkan/meta/radv_meta_fmask_expand.c @@ -80,7 +80,7 @@ radv_expand_fmask_image_inplace(struct radv_cmd_buffer *cmd_buffer, struct radv_ struct radv_meta_saved_state saved_state; const uint32_t samples = image->info.samples; const uint32_t samples_log2 = ffs(samples) - 1; - unsigned layer_count = radv_get_layerCount(image, subresourceRange); + unsigned layer_count = vk_image_subresource_layer_count(&image->vk, subresourceRange); struct radv_image_view iview; VkResult result = radv_device_init_meta_fmask_expand_state_internal(device, samples_log2); diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 4b11c6ebf90..952ad6c8735 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -2202,11 +2202,11 @@ radv_image_view_init(struct radv_image_view *iview, struct radv_device *device, switch (image->vk.image_type) { case VK_IMAGE_TYPE_1D: case VK_IMAGE_TYPE_2D: - assert(range->baseArrayLayer + radv_get_layerCount(image, range) - 1 <= + assert(range->baseArrayLayer + vk_image_subresource_layer_count(&image->vk, range) - 1 <= image->info.array_size); break; case VK_IMAGE_TYPE_3D: - assert(range->baseArrayLayer + radv_get_layerCount(image, range) - 1 <= + assert(range->baseArrayLayer + vk_image_subresource_layer_count(&image->vk, range) - 1 <= radv_minify(image->info.depth, range->baseMipLevel)); break; default: diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index be6d721a4af..93c8954f998 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -2798,14 +2798,6 @@ unsigned radv_image_queue_family_mask(const struct radv_image *image, enum radv_queue_family family, enum radv_queue_family queue_family); -static inline uint32_t -radv_get_layerCount(const struct radv_image *image, const VkImageSubresourceRange *range) -{ - return range->layerCount == VK_REMAINING_ARRAY_LAYERS - ? image->info.array_size - range->baseArrayLayer - : range->layerCount; -} - static inline uint32_t radv_get_levelCount(const struct radv_image *image, const VkImageSubresourceRange *range) {