mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 13:20:14 +01:00
radv/meta: simplify barriers for resolves
This is equivalent. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37300>
This commit is contained in:
parent
e673ccfcb5
commit
39725fc935
3 changed files with 11 additions and 27 deletions
|
|
@ -537,6 +537,17 @@ radv_cmd_buffer_resolve_rendering(struct radv_cmd_buffer *cmd_buffer)
|
|||
|
||||
radv_describe_begin_render_pass_resolve(cmd_buffer);
|
||||
|
||||
/* Resolves happen before the end-of-subpass barriers get executed, so we have to make the
|
||||
* attachment shader-readable.
|
||||
*/
|
||||
struct radv_resolve_barrier barrier;
|
||||
barrier.src_stage_mask = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
barrier.dst_stage_mask = VK_PIPELINE_STAGE_2_RESOLVE_BIT;
|
||||
barrier.src_access_mask = (has_color_resolve ? VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT : 0) |
|
||||
(has_ds_resolve ? VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT : 0);
|
||||
barrier.dst_access_mask = VK_ACCESS_2_SHADER_READ_BIT;
|
||||
radv_emit_resolve_barrier(cmd_buffer, &barrier);
|
||||
|
||||
if (render->ds_att.resolve_iview != NULL) {
|
||||
struct radv_image_view *src_iview = render->ds_att.iview;
|
||||
struct radv_image_view *dst_iview = render->ds_att.resolve_iview;
|
||||
|
|
@ -590,20 +601,10 @@ radv_cmd_buffer_resolve_rendering(struct radv_cmd_buffer *cmd_buffer)
|
|||
if (has_color_resolve) {
|
||||
uint32_t layer_count = render->layer_count;
|
||||
VkRect2D resolve_area = render->area;
|
||||
struct radv_resolve_barrier barrier;
|
||||
|
||||
if (render->view_mask)
|
||||
layer_count = util_last_bit(render->view_mask);
|
||||
|
||||
/* Resolves happen before the end-of-subpass barriers get executed, so we have to make the
|
||||
* attachment shader-readable.
|
||||
*/
|
||||
barrier.src_stage_mask = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
barrier.dst_stage_mask = VK_PIPELINE_STAGE_2_RESOLVE_BIT;
|
||||
barrier.src_access_mask = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
barrier.dst_access_mask = VK_ACCESS_2_SHADER_READ_BIT;
|
||||
radv_emit_resolve_barrier(cmd_buffer, &barrier);
|
||||
|
||||
for (uint32_t i = 0; i < render->color_att_count; ++i) {
|
||||
if (render->color_att[i].resolve_iview == NULL)
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -506,15 +506,6 @@ radv_depth_stencil_resolve_rendering_cs(struct radv_cmd_buffer *cmd_buffer, VkIm
|
|||
if (render->view_mask)
|
||||
layer_count = util_last_bit(render->view_mask);
|
||||
|
||||
/* Resolves happen before the end-of-subpass barriers get executed, so
|
||||
* we have to make the attachment shader-readable.
|
||||
*/
|
||||
cmd_buffer->state.flush_bits |=
|
||||
radv_src_access_flush(cmd_buffer, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
|
||||
VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, 0, NULL, NULL) |
|
||||
radv_dst_access_flush(cmd_buffer, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, VK_ACCESS_2_SHADER_READ_BIT, 0, NULL,
|
||||
NULL);
|
||||
|
||||
struct radv_image_view *src_iview = render->ds_att.iview;
|
||||
VkImageLayout src_image_layout =
|
||||
aspects & VK_IMAGE_ASPECT_DEPTH_BIT ? render->ds_att.layout : render->ds_att.stencil_layout;
|
||||
|
|
|
|||
|
|
@ -718,14 +718,6 @@ radv_depth_stencil_resolve_rendering_fs(struct radv_cmd_buffer *cmd_buffer, VkIm
|
|||
VkResolveModeFlagBits resolve_mode)
|
||||
{
|
||||
const struct radv_rendering_state *render = &cmd_buffer->state.render;
|
||||
struct radv_resolve_barrier barrier;
|
||||
|
||||
/* Resolves happen before rendering ends, so we have to make the attachment shader-readable */
|
||||
barrier.src_stage_mask = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
barrier.dst_stage_mask = VK_PIPELINE_STAGE_2_RESOLVE_BIT;
|
||||
barrier.src_access_mask = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||
barrier.dst_access_mask = VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT;
|
||||
radv_emit_resolve_barrier(cmd_buffer, &barrier);
|
||||
|
||||
struct radv_image_view *src_iview = render->ds_att.iview;
|
||||
VkImageLayout src_image_layout =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue