layer_count = region->extent.depth;
} else {
dst_base_layer = region->dstSubresource.baseArrayLayer;
- layer_count =
- anv_get_layerCount(dst_image, ®ion->dstSubresource);
+ layer_count = vk_image_subresource_layer_count(&dst_image->vk,
+ ®ion->dstSubresource);
}
const uint32_t src_level = region->srcSubresource.mipLevel;
} else {
src_base_layer = region->srcSubresource.baseArrayLayer;
assert(layer_count ==
- anv_get_layerCount(src_image, ®ion->srcSubresource));
+ vk_image_subresource_layer_count(&src_image->vk,
+ ®ion->srcSubresource));
}
VkImageAspectFlags src_mask = region->srcSubresource.aspectMask,
anv_sanitize_image_extent(anv_image->vk.image_type, region->imageExtent);
if (anv_image->vk.image_type != VK_IMAGE_TYPE_3D) {
image.offset.z = region->imageSubresource.baseArrayLayer;
- extent.depth = anv_get_layerCount(anv_image, ®ion->imageSubresource);
+ extent.depth =
+ vk_image_subresource_layer_count(&anv_image->vk,
+ ®ion->imageSubresource);
}
const enum isl_format linear_format =
dst_end = region->dstOffsets[1].z;
} else {
dst_start = dst_res->baseArrayLayer;
- dst_end = dst_start + anv_get_layerCount(dst_image, dst_res);
+ dst_end = dst_start +
+ vk_image_subresource_layer_count(&dst_image->vk, dst_res);
}
unsigned src_start, src_end;
src_end = region->srcOffsets[1].z;
} else {
src_start = src_res->baseArrayLayer;
- src_end = src_start + anv_get_layerCount(src_image, src_res);
+ src_end = src_start +
+ vk_image_subresource_layer_count(&src_image->vk, src_res);
}
bool flip_z = flip_coords(&src_start, &src_end, &dst_start, &dst_end);
VK_IMAGE_ASPECT_COLOR_BIT, image->vk.tiling);
unsigned base_layer = pRanges[r].baseArrayLayer;
- unsigned layer_count = anv_get_layerCount(image, &pRanges[r]);
+ uint32_t layer_count =
+ vk_image_subresource_layer_count(&image->vk, &pRanges[r]);
+ uint32_t level_count =
+ vk_image_subresource_level_count(&image->vk, &pRanges[r]);
- for (unsigned i = 0; i < anv_get_levelCount(image, &pRanges[r]); i++) {
+ for (uint32_t i = 0; i < level_count; i++) {
const unsigned level = pRanges[r].baseMipLevel + i;
const unsigned level_width = anv_minify(image->vk.extent.width, level);
const unsigned level_height = anv_minify(image->vk.extent.height, level);
bool clear_stencil = pRanges[r].aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT;
unsigned base_layer = pRanges[r].baseArrayLayer;
- unsigned layer_count = anv_get_layerCount(image, &pRanges[r]);
+ uint32_t layer_count =
+ vk_image_subresource_layer_count(&image->vk, &pRanges[r]);
+ uint32_t level_count =
+ vk_image_subresource_level_count(&image->vk, &pRanges[r]);
- for (unsigned i = 0; i < anv_get_levelCount(image, &pRanges[r]); i++) {
+ for (uint32_t i = 0; i < level_count; i++) {
const unsigned level = pRanges[r].baseMipLevel + i;
const unsigned level_width = anv_minify(image->vk.extent.width, level);
const unsigned level_height = anv_minify(image->vk.extent.height, level);
const VkImageResolve2KHR *region)
{
assert(region->srcSubresource.aspectMask == region->dstSubresource.aspectMask);
- assert(anv_get_layerCount(src_image, ®ion->srcSubresource) ==
- anv_get_layerCount(dst_image, ®ion->dstSubresource));
+ assert(vk_image_subresource_layer_count(&src_image->vk, ®ion->srcSubresource) ==
+ vk_image_subresource_layer_count(&dst_image->vk, ®ion->dstSubresource));
const uint32_t layer_count =
- anv_get_layerCount(dst_image, ®ion->dstSubresource);
+ vk_image_subresource_layer_count(&dst_image->vk, ®ion->dstSubresource);
anv_foreach_image_aspect_bit(aspect_bit, src_image,
region->srcSubresource.aspectMask) {
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT |
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT));
+ uint32_t layer_count = vk_image_subresource_layer_count(&image->vk, range);
switch (image->vk.image_type) {
default:
unreachable("bad VkImageType");
case VK_IMAGE_TYPE_1D:
case VK_IMAGE_TYPE_2D:
- assert(range->baseArrayLayer + anv_get_layerCount(image, range) - 1 <=
- image->vk.array_layers);
+ assert(range->baseArrayLayer + layer_count - 1
+ <= image->vk.array_layers);
break;
case VK_IMAGE_TYPE_3D:
- assert(range->baseArrayLayer + anv_get_layerCount(image, range) - 1
+ assert(range->baseArrayLayer + layer_count - 1
<= anv_minify(image->vk.extent.depth, range->baseMipLevel));
break;
}
iview->planes[vplane].isl = (struct isl_view) {
.format = format.isl_format,
.base_level = range->baseMipLevel,
- .levels = anv_get_levelCount(image, range),
+ .levels = vk_image_subresource_level_count(&image->vk, range),
.base_array_layer = range->baseArrayLayer,
- .array_len = anv_get_layerCount(image, range),
+ .array_len = layer_count,
.swizzle = {
.r = remap_swizzle(pCreateInfo->components.r,
VK_COMPONENT_SWIZZLE_R, format.swizzle),
const VkImageAspectFlagBits aspect,
const VkImageLayout layout);
-/* This is defined as a macro so that it works for both
- * VkImageSubresourceRange and VkImageSubresourceLayers
- */
-#define anv_get_layerCount(_image, _range) \
- ((_range)->layerCount == VK_REMAINING_ARRAY_LAYERS ? \
- (_image)->vk.array_layers - (_range)->baseArrayLayer : (_range)->layerCount)
-
-static inline uint32_t
-anv_get_levelCount(const struct anv_image *image,
- const VkImageSubresourceRange *range)
-{
- return range->levelCount == VK_REMAINING_MIP_LEVELS ?
- image->vk.mip_levels - range->baseMipLevel : range->levelCount;
-}
-
static inline bool
anv_image_aspects_compatible(VkImageAspectFlags aspects1,
VkImageAspectFlags aspects2)
layer_count = anv_minify(image->vk.extent.depth, range->baseMipLevel);
} else {
base_layer = range->baseArrayLayer;
- layer_count = anv_get_layerCount(image, range);
+ layer_count = vk_image_subresource_layer_count(&image->vk, range);
}
+ const uint32_t level_count =
+ vk_image_subresource_level_count(&image->vk, range);
if (range->aspectMask & VK_IMAGE_ASPECT_DEPTH_BIT) {
transition_depth_buffer(cmd_buffer, image,
if (range->aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT) {
transition_stencil_buffer(cmd_buffer, image,
- range->baseMipLevel,
- anv_get_levelCount(image, range),
+ range->baseMipLevel, level_count,
base_layer, layer_count,
pImageMemoryBarriers[i].oldLayout,
pImageMemoryBarriers[i].newLayout,
vk_image_expand_aspect_mask(&image->vk, range->aspectMask);
anv_foreach_image_aspect_bit(aspect_bit, image, color_aspects) {
transition_color_buffer(cmd_buffer, image, 1UL << aspect_bit,
- range->baseMipLevel,
- anv_get_levelCount(image, range),
+ range->baseMipLevel, level_count,
base_layer, layer_count,
pImageMemoryBarriers[i].oldLayout,
pImageMemoryBarriers[i].newLayout,
return extent;
}
+/* This is defined as a macro so that it works for both
+ * VkImageSubresourceRange and VkImageSubresourceLayers
+ */
+#define vk_image_subresource_layer_count(_image, _range) \
+ ((_range)->layerCount == VK_REMAINING_ARRAY_LAYERS ? \
+ (_image)->array_layers - (_range)->baseArrayLayer : (_range)->layerCount)
+
+static inline uint32_t
+vk_image_subresource_level_count(const struct vk_image *image,
+ const VkImageSubresourceRange *range)
+{
+ return range->levelCount == VK_REMAINING_MIP_LEVELS ?
+ image->mip_levels - range->baseMipLevel : range->levelCount;
+}
+
#ifdef __cplusplus
}
#endif