Module: Mesa Branch: main Commit: 8e358a74d0820e8f0735083b406b02741cf93822 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e358a74d0820e8f0735083b406b02741cf93822
Author: Iago Toral Quiroga <[email protected]> Date: Thu Jun 17 10:06:33 2021 +0200 v3dv: implement vkCmdCopyImage2KHR The common Vulkan code will call this to implement vkCmdCopyImage. Reviewed-by: Alejandro PiƱeiro <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11443> --- src/broadcom/vulkan/v3dv_meta_copy.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index a9d33f4539d..38af7738fd8 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -1374,7 +1374,7 @@ emit_copy_image_layer_per_tile_list(struct v3dv_job *job, struct v3dv_image *dst, struct v3dv_image *src, uint32_t layer_offset, - const VkImageCopy *region) + const VkImageCopy2KHR *region) { struct v3dv_cl *cl = &job->indirect; v3dv_cl_ensure_space(cl, 200, 1); @@ -1432,7 +1432,7 @@ emit_copy_image_layer(struct v3dv_job *job, struct v3dv_image *src, struct framebuffer_data *framebuffer, uint32_t layer, - const VkImageCopy *region) + const VkImageCopy2KHR *region) { emit_frame_setup(job, layer, NULL); emit_copy_image_layer_per_tile_list(job, framebuffer, dst, src, layer, region); @@ -1444,7 +1444,7 @@ emit_copy_image_rcl(struct v3dv_job *job, struct v3dv_image *dst, struct v3dv_image *src, struct framebuffer_data *framebuffer, - const VkImageCopy *region) + const VkImageCopy2KHR *region) { struct v3dv_cl *rcl = emit_rcl_prologue(job, framebuffer, NULL); v3dv_return_if_oom(NULL, job); @@ -1565,7 +1565,7 @@ static bool copy_image_tfu(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_image *dst, struct v3dv_image *src, - const VkImageCopy *region) + const VkImageCopy2KHR *region) { /* Destination can't be raster format */ if (dst->tiling == VK_IMAGE_TILING_LINEAR) @@ -1674,7 +1674,7 @@ static bool copy_image_tlb(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_image *dst, struct v3dv_image *src, - const VkImageCopy *region) + const VkImageCopy2KHR *region) { VkFormat fb_format; if (!can_use_tlb(src, ®ion->srcOffset, &fb_format) || @@ -1799,7 +1799,7 @@ static bool copy_image_blit(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_image *dst, struct v3dv_image *src, - const VkImageCopy *region) + const VkImageCopy2KHR *region) { const uint32_t src_block_w = vk_format_get_blockwidth(src->vk_format); const uint32_t src_block_h = vk_format_get_blockheight(src->vk_format); @@ -1938,26 +1938,22 @@ copy_image_blit(struct v3dv_cmd_buffer *cmd_buffer, } VKAPI_ATTR void VKAPI_CALL -v3dv_CmdCopyImage(VkCommandBuffer commandBuffer, - VkImage srcImage, - VkImageLayout srcImageLayout, - VkImage dstImage, - VkImageLayout dstImageLayout, - uint32_t regionCount, - const VkImageCopy *pRegions) +v3dv_CmdCopyImage2KHR(VkCommandBuffer commandBuffer, + const VkCopyImageInfo2KHR *info) + { V3DV_FROM_HANDLE(v3dv_cmd_buffer, cmd_buffer, commandBuffer); - V3DV_FROM_HANDLE(v3dv_image, src, srcImage); - V3DV_FROM_HANDLE(v3dv_image, dst, dstImage); + V3DV_FROM_HANDLE(v3dv_image, src, info->srcImage); + V3DV_FROM_HANDLE(v3dv_image, dst, info->dstImage); assert(src->samples == dst->samples); - for (uint32_t i = 0; i < regionCount; i++) { - if (copy_image_tfu(cmd_buffer, dst, src, &pRegions[i])) + for (uint32_t i = 0; i < info->regionCount; i++) { + if (copy_image_tfu(cmd_buffer, dst, src, &info->pRegions[i])) continue; - if (copy_image_tlb(cmd_buffer, dst, src, &pRegions[i])) + if (copy_image_tlb(cmd_buffer, dst, src, &info->pRegions[i])) continue; - if (copy_image_blit(cmd_buffer, dst, src, &pRegions[i])) + if (copy_image_blit(cmd_buffer, dst, src, &info->pRegions[i])) continue; unreachable("Image copy not supported"); } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
