zink: ensure layout is reasonable before copying

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Erik Faye-Lund
2019-07-15 12:16:25 +02:00
parent c947aee63b
commit c96963a8d1
+14
View File
@@ -1338,6 +1338,20 @@ zink_resource_copy_region(struct pipe_context *pctx,
zink_batch_reference_resoure(batch, src);
zink_batch_reference_resoure(batch, dst);
if (src->layout != VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL &&
src->layout != VK_IMAGE_LAYOUT_GENERAL) {
zink_resource_barrier(batch->cmdbuf, src, src->aspect,
VK_IMAGE_LAYOUT_GENERAL);
src->layout = VK_IMAGE_LAYOUT_GENERAL;
}
if (dst->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL &&
dst->layout != VK_IMAGE_LAYOUT_GENERAL) {
zink_resource_barrier(batch->cmdbuf, dst, dst->aspect,
VK_IMAGE_LAYOUT_GENERAL);
dst->layout = VK_IMAGE_LAYOUT_GENERAL;
}
vkCmdCopyImage(batch->cmdbuf, src->image, src->layout,
dst->image, dst->layout,
1, &region);