Module: Mesa Branch: master Commit: c72d99550c88434243c4ea58b777ff52f8b58fe1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c72d99550c88434243c4ea58b777ff52f8b58fe1
Author: Iago Toral Quiroga <ito...@igalia.com> Date: Fri Feb 5 11:36:42 2021 +0100 v3dv: allow a component swizzle in copy_buffer_to_image_shader This is trivial because this path relies on our blit_shader interface which supports this already, so it just needs to pass it along. I don't think this is ever triggered practice, since we should be able to handle any case that could require this with the texel buffer path, but at least it allows us to simplify a bit the code. Tested by manually disabling the priority paths to ensure we exercise component swizzles with this path. Reviewed-by: Alejandro PiƱeiro <apinhe...@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8875> --- src/broadcom/vulkan/v3dv_meta_copy.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index cedc5cd26dc..08d6ca1278c 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -3597,6 +3597,7 @@ copy_buffer_to_image_blit(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_buffer *buffer, uint32_t buffer_bpp, VkColorComponentFlags cmask, + VkComponentMapping *cswizzle, uint32_t region_count, const VkBufferImageCopy *regions) { @@ -3804,7 +3805,7 @@ copy_buffer_to_image_blit(struct v3dv_cmd_buffer *cmd_buffer, handled = blit_shader(cmd_buffer, image, dst_format, v3dv_image_from_handle(buffer_image), src_format, - cmask, NULL, + cmask, cswizzle, &blit_region, VK_FILTER_NEAREST, true); if (!handled) { /* This is unexpected, we should have a supported blit spec */ @@ -3940,18 +3941,10 @@ copy_buffer_to_image_shader(struct v3dv_cmd_buffer *cmd_buffer, cmask, &cswizzle, region_count, regions); } else { - /* This path doesn't know about source swizzling. It should be easy - * to add since it ends up using the blit shader interface, which - * has support for that, but we only require this for combined D/S - * copies and we can handle that with the texel buffer path, so - * there is really no need to support it here. - */ - if (memcmp(&cswizzle, &ident_swizzle, sizeof(cswizzle))) - return false; - return copy_buffer_to_image_blit(cmd_buffer, aspect, image, dst_format, src_format, - buffer, buf_bpp, cmask, + buffer, buf_bpp, + cmask, &cswizzle, region_count, regions); } } _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit