lavapipe: fix subresource layers asserts

dEQP-VK.api.copy_and_blit.copy_commands2.blit_image.simple_tests.array.all_remaining_layers

Fixes: 35c02f79c9 ("lavapipe: add some asserts for blit region extents")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25609>
This commit is contained in:
Dave Airlie
2023-10-06 10:49:29 +10:00
committed by Marge Bot
parent 05047ceced
commit 21a79acaa7

View File

@@ -226,7 +226,9 @@ get_buffer_resource(struct pipe_context *ctx, void *mem)
}
ALWAYS_INLINE static void
assert_subresource_layers(const struct pipe_resource *pres, const VkImageSubresourceLayers *layers, const VkOffset3D *offsets)
assert_subresource_layers(const struct pipe_resource *pres,
const struct lvp_image *image,
const VkImageSubresourceLayers *layers, const VkOffset3D *offsets)
{
#ifndef NDEBUG
if (pres->target == PIPE_TEXTURE_3D) {
@@ -236,7 +238,7 @@ assert_subresource_layers(const struct pipe_resource *pres, const VkImageSubreso
assert(offsets[1].z <= pres->depth0);
} else {
assert(layers->baseArrayLayer < pres->array_size);
assert(layers->baseArrayLayer + layers->layerCount <= pres->array_size);
assert(layers->baseArrayLayer + vk_image_subresource_layer_count(&image->vk, layers) <= pres->array_size);
assert(offsets[0].z == 0);
assert(offsets[1].z == 1);
}
@@ -2426,8 +2428,8 @@ static void handle_blit_image(struct vk_cmd_queue_entry *cmd,
info.src.box.height = srcY0 - srcY1;
}
assert_subresource_layers(info.src.resource, &blitcmd->pRegions[i].srcSubresource, blitcmd->pRegions[i].srcOffsets);
assert_subresource_layers(info.dst.resource, &blitcmd->pRegions[i].dstSubresource, blitcmd->pRegions[i].dstOffsets);
assert_subresource_layers(info.src.resource, src_image, &blitcmd->pRegions[i].srcSubresource, blitcmd->pRegions[i].srcOffsets);
assert_subresource_layers(info.dst.resource, dst_image, &blitcmd->pRegions[i].dstSubresource, blitcmd->pRegions[i].dstOffsets);
if (src_image->bo->target == PIPE_TEXTURE_3D) {
if (dstZ0 < dstZ1) {
info.dst.box.z = dstZ0;