Module: Mesa Branch: master Commit: 103ad427bc7f61015cea65f71486355644c276b3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=103ad427bc7f61015cea65f71486355644c276b3
Author: Kenneth Graunke <kenn...@whitecape.org> Date: Wed Sep 30 15:05:54 2020 -0700 anv: Set only one ISL usage bit (RT/texture) for CopyBuffer sources Most uses of this function deal with destination buffers, but for copy_buffer_to_image, the buffer is the source, and isn't rendered to. We should avoid setting ISL_SURF_USAGE_RENDER_TARGET_BIT. Also, we should avoid setting ISL_SURF_USAGE_TEXTURE_BIT for the destination, which isn't sampled from. Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7104> --- src/intel/vulkan/anv_blorp.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index 953596cb015..0025e36ad3c 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -132,6 +132,7 @@ get_blorp_surf_for_anv_buffer(struct anv_device *device, struct anv_buffer *buffer, uint64_t offset, uint32_t width, uint32_t height, uint32_t row_pitch, enum isl_format format, + bool is_dest, struct blorp_surf *blorp_surf, struct isl_surf *isl_surf) { @@ -171,8 +172,8 @@ get_blorp_surf_for_anv_buffer(struct anv_device *device, .array_len = 1, .samples = 1, .row_pitch_B = row_pitch, - .usage = ISL_SURF_USAGE_TEXTURE_BIT | - ISL_SURF_USAGE_RENDER_TARGET_BIT, + .usage = is_dest ? ISL_SURF_USAGE_RENDER_TARGET_BIT + : ISL_SURF_USAGE_TEXTURE_BIT, .tiling_flags = ISL_TILING_LINEAR_BIT); assert(ok); } @@ -567,7 +568,7 @@ copy_buffer_to_image(struct anv_cmd_buffer *cmd_buffer, get_blorp_surf_for_anv_buffer(cmd_buffer->device, anv_buffer, region->bufferOffset, buffer_extent.width, buffer_extent.height, - buffer_row_pitch, buffer_format, + buffer_row_pitch, buffer_format, false, &buffer.surf, &buffer_isl_surf); bool dst_has_shadow = false; @@ -1111,7 +1112,7 @@ void anv_CmdFillBuffer( get_blorp_surf_for_anv_buffer(cmd_buffer->device, dst_buffer, dstOffset, MAX_SURFACE_DIM, MAX_SURFACE_DIM, - MAX_SURFACE_DIM * bs, isl_format, + MAX_SURFACE_DIM * bs, isl_format, true, &surf, &isl_surf); blorp_clear(&batch, &surf, isl_format, ISL_SWIZZLE_IDENTITY, @@ -1128,7 +1129,7 @@ void anv_CmdFillBuffer( get_blorp_surf_for_anv_buffer(cmd_buffer->device, dst_buffer, dstOffset, MAX_SURFACE_DIM, height, - MAX_SURFACE_DIM * bs, isl_format, + MAX_SURFACE_DIM * bs, isl_format, true, &surf, &isl_surf); blorp_clear(&batch, &surf, isl_format, ISL_SWIZZLE_IDENTITY, @@ -1143,7 +1144,7 @@ void anv_CmdFillBuffer( get_blorp_surf_for_anv_buffer(cmd_buffer->device, dst_buffer, dstOffset, width, 1, - width * bs, isl_format, + width * bs, isl_format, true, &surf, &isl_surf); blorp_clear(&batch, &surf, isl_format, ISL_SWIZZLE_IDENTITY, _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit