mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
radv: do not resolve all image layers with compute inside a subpass
When resolving inside a subpass, we should rely on the framebuffer layer count instead of resolving all images layers. This should improve performance of layered resolves a bit. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-By: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
a8588f512b
commit
92fa6264cb
1 changed files with 8 additions and 4 deletions
|
|
@ -508,6 +508,10 @@ radv_cmd_buffer_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer)
|
|||
struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
|
||||
const struct radv_subpass *subpass = cmd_buffer->state.subpass;
|
||||
struct radv_subpass_barrier barrier;
|
||||
uint32_t layer_count = fb->layers;
|
||||
|
||||
if (subpass->view_mask)
|
||||
layer_count = util_last_bit(subpass->view_mask);
|
||||
|
||||
/* Resolves happen before the end-of-subpass barriers get executed, so
|
||||
* we have to make the attachment shader-readable.
|
||||
|
|
@ -531,14 +535,14 @@ radv_cmd_buffer_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer)
|
|||
.srcSubresource = (VkImageSubresourceLayers) {
|
||||
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
||||
.mipLevel = src_iview->base_mip,
|
||||
.baseArrayLayer = 0,
|
||||
.layerCount = src_iview->image->info.array_size
|
||||
.baseArrayLayer = src_iview->base_layer,
|
||||
.layerCount = layer_count,
|
||||
},
|
||||
.dstSubresource = (VkImageSubresourceLayers) {
|
||||
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
||||
.mipLevel = dst_iview->base_mip,
|
||||
.baseArrayLayer = 0,
|
||||
.layerCount = dst_iview->image->info.array_size
|
||||
.baseArrayLayer = dst_iview->base_layer,
|
||||
.layerCount = layer_count,
|
||||
},
|
||||
.srcOffset = (VkOffset3D){ 0, 0, 0 },
|
||||
.dstOffset = (VkOffset3D){ 0, 0, 0 },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue