X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fzink%2Fzink_resource.c;h=b12d38ec7841f9e1372fa565c55920c53ea6f334;hb=d2bb63c8d4cdc02b1c33afadea5becd58fb7286c;hp=dccbe827f6396c7a59443db1ba2931ad8e4c76e5;hpb=aaf1b0927069d0724cdc157584464b866dab9d9d;p=mesa.git diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index dccbe827f63..b12d38ec784 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -368,11 +368,16 @@ zink_transfer_copy_bufimage(struct zink_context *ctx, { struct zink_batch *batch = zink_batch_no_rp(ctx); - if (res->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL && - res->layout != VK_IMAGE_LAYOUT_GENERAL) { - zink_resource_barrier(batch->cmdbuf, res, res->aspect, - VK_IMAGE_LAYOUT_GENERAL); - res->layout = VK_IMAGE_LAYOUT_GENERAL; + if (buf2img) { + if (res->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) { + zink_resource_barrier(batch->cmdbuf, res, res->aspect, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); + } + } else { + if (res->layout != VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) { + zink_resource_barrier(batch->cmdbuf, res, res->aspect, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); + } } VkBufferImageCopy copyRegion = {};