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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user