Mesa (main): radv: convert the meta blit 2d path to dynamic rendering

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 1 07:01:29 UTC 2022


Module: Mesa
Branch: main
Commit: 42db5900061c80154652237347285fee703d4a7c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=42db5900061c80154652237347285fee703d4a7c

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Mar 16 17:38:27 2022 +0100

radv: convert the meta blit 2d path to dynamic rendering

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15612>

---

 src/amd/vulkan/radv_meta_blit2d.c | 371 ++++++++------------------------------
 src/amd/vulkan/radv_private.h     |   4 -
 2 files changed, 80 insertions(+), 295 deletions(-)

diff --git a/src/amd/vulkan/radv_meta_blit2d.c b/src/amd/vulkan/radv_meta_blit2d.c
index 0e081b57ffd..2753fb78784 100644
--- a/src/amd/vulkan/radv_meta_blit2d.c
+++ b/src/amd/vulkan/radv_meta_blit2d.c
@@ -163,27 +163,6 @@ struct blit2d_dst_temps {
    VkFramebuffer fb;
 };
 
-static void
-blit2d_bind_dst(struct radv_cmd_buffer *cmd_buffer, struct radv_meta_blit2d_surf *dst,
-                uint32_t width, uint32_t height, VkFormat depth_format,
-                struct blit2d_dst_temps *tmp, VkImageAspectFlagBits aspects)
-{
-   create_iview(cmd_buffer, dst, &tmp->iview, depth_format, aspects);
-
-   radv_CreateFramebuffer(
-      radv_device_to_handle(cmd_buffer->device),
-      &(VkFramebufferCreateInfo){.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
-                                 .attachmentCount = 1,
-                                 .pAttachments =
-                                    (VkImageView[]){
-                                       radv_image_view_to_handle(&tmp->iview),
-                                    },
-                                 .width = width,
-                                 .height = height,
-                                 .layers = 1},
-      &cmd_buffer->pool->vk.alloc, &tmp->fb);
-}
-
 static void
 bind_pipeline(struct radv_cmd_buffer *cmd_buffer, enum blit2d_src_type src_type, unsigned fs_key,
               uint32_t log2_samples)
@@ -245,8 +224,7 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer,
                          src_aspect_mask, log2_samples);
 
          struct blit2d_dst_temps dst_temps;
-         blit2d_bind_dst(cmd_buffer, dst, rects[r].dst_x + rects[r].width,
-                         rects[r].dst_y + rects[r].height, depth_format, &dst_temps, aspect_mask);
+         create_iview(cmd_buffer, dst, &dst_temps.iview, depth_format, aspect_mask);
 
          float vertex_push_constants[4] = {
             rects[r].src_x,
@@ -264,7 +242,6 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer,
              aspect_mask == VK_IMAGE_ASPECT_PLANE_1_BIT ||
              aspect_mask == VK_IMAGE_ASPECT_PLANE_2_BIT) {
             unsigned fs_key = radv_format_meta_fs_key(device, dst_temps.iview.vk_format);
-            unsigned dst_layout = radv_meta_dst_layout_from_layout(dst->current_layout);
 
             if (device->meta_state.blit2d[log2_samples].pipelines[src_type][fs_key] ==
                 VK_NULL_HANDLE) {
@@ -276,31 +253,29 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer,
                }
             }
 
-            radv_cmd_buffer_begin_render_pass(
-               cmd_buffer,
-               &(VkRenderPassBeginInfo){
-                  .sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
-                  .renderPass = device->meta_state.blit2d_render_passes[fs_key][dst_layout],
-                  .framebuffer = dst_temps.fb,
-                  .renderArea =
-                     {
-                        .offset =
-                           {
-                              rects[r].dst_x,
-                              rects[r].dst_y,
-                           },
-                        .extent = {rects[r].width, rects[r].height},
-                     },
-                  .clearValueCount = 0,
-                  .pClearValues = NULL,
-               });
-
-            radv_cmd_buffer_set_subpass(cmd_buffer, &cmd_buffer->state.pass->subpasses[0]);
+            const VkRenderingAttachmentInfo color_att_info = {
+               .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
+               .imageView = radv_image_view_to_handle(&dst_temps.iview),
+               .imageLayout = dst->current_layout,
+               .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
+               .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
+            };
+
+            const VkRenderingInfo rendering_info = {
+               .sType = VK_STRUCTURE_TYPE_RENDERING_INFO,
+               .renderArea = {
+                  .offset = { rects[r].dst_x, rects[r].dst_y },
+                  .extent = { rects[r].width, rects[r].height },
+               },
+               .layerCount = 1,
+               .colorAttachmentCount = 1,
+               .pColorAttachments = &color_att_info,
+            };
+
+            radv_CmdBeginRendering(radv_cmd_buffer_to_handle(cmd_buffer), &rendering_info);
 
             bind_pipeline(cmd_buffer, src_type, fs_key, log2_samples);
          } else if (aspect_mask == VK_IMAGE_ASPECT_DEPTH_BIT) {
-            enum radv_blit_ds_layout ds_layout = radv_meta_blit_ds_to_type(dst->current_layout);
-
             if (device->meta_state.blit2d[log2_samples].depth_only_pipeline[src_type] ==
                 VK_NULL_HANDLE) {
                VkResult ret = blit2d_init_depth_only_pipeline(device, src_type, log2_samples);
@@ -310,32 +285,29 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer,
                }
             }
 
-            radv_cmd_buffer_begin_render_pass(
-               cmd_buffer,
-               &(VkRenderPassBeginInfo){
-                  .sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
-                  .renderPass = device->meta_state.blit2d_depth_only_rp[ds_layout],
-                  .framebuffer = dst_temps.fb,
-                  .renderArea =
-                     {
-                        .offset =
-                           {
-                              rects[r].dst_x,
-                              rects[r].dst_y,
-                           },
-                        .extent = {rects[r].width, rects[r].height},
-                     },
-                  .clearValueCount = 0,
-                  .pClearValues = NULL,
-               });
-
-            radv_cmd_buffer_set_subpass(cmd_buffer, &cmd_buffer->state.pass->subpasses[0]);
+            const VkRenderingAttachmentInfo depth_att_info = {
+               .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
+               .imageView = radv_image_view_to_handle(&dst_temps.iview),
+               .imageLayout = dst->current_layout,
+               .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
+               .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
+            };
+
+            const VkRenderingInfo rendering_info = {
+               .sType = VK_STRUCTURE_TYPE_RENDERING_INFO,
+               .renderArea = {
+                  .offset = { rects[r].dst_x, rects[r].dst_y },
+                  .extent = { rects[r].width, rects[r].height },
+               },
+               .layerCount = 1,
+               .pDepthAttachment = &depth_att_info,
+            };
+
+            radv_CmdBeginRendering(radv_cmd_buffer_to_handle(cmd_buffer), &rendering_info);
 
             bind_depth_pipeline(cmd_buffer, src_type, log2_samples);
 
          } else if (aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT) {
-            enum radv_blit_ds_layout ds_layout = radv_meta_blit_ds_to_type(dst->current_layout);
-
             if (device->meta_state.blit2d[log2_samples].stencil_only_pipeline[src_type] ==
                 VK_NULL_HANDLE) {
                VkResult ret = blit2d_init_stencil_only_pipeline(device, src_type, log2_samples);
@@ -345,26 +317,25 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer,
                }
             }
 
-            radv_cmd_buffer_begin_render_pass(
-               cmd_buffer,
-               &(VkRenderPassBeginInfo){
-                  .sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
-                  .renderPass = device->meta_state.blit2d_stencil_only_rp[ds_layout],
-                  .framebuffer = dst_temps.fb,
-                  .renderArea =
-                     {
-                        .offset =
-                           {
-                              rects[r].dst_x,
-                              rects[r].dst_y,
-                           },
-                        .extent = {rects[r].width, rects[r].height},
-                     },
-                  .clearValueCount = 0,
-                  .pClearValues = NULL,
-               });
-
-            radv_cmd_buffer_set_subpass(cmd_buffer, &cmd_buffer->state.pass->subpasses[0]);
+            const VkRenderingAttachmentInfo stencil_att_info = {
+               .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
+               .imageView = radv_image_view_to_handle(&dst_temps.iview),
+               .imageLayout = dst->current_layout,
+               .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
+               .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
+            };
+
+            const VkRenderingInfoKHR rendering_info = {
+               .sType = VK_STRUCTURE_TYPE_RENDERING_INFO,
+               .renderArea = {
+                  .offset = { rects[r].dst_x, rects[r].dst_y },
+                  .extent = { rects[r].width, rects[r].height },
+               },
+               .layerCount = 1,
+               .pStencilAttachment = &stencil_att_info,
+            };
+
+            radv_CmdBeginRendering(radv_cmd_buffer_to_handle(cmd_buffer), &rendering_info);
 
             bind_stencil_pipeline(cmd_buffer, src_type, log2_samples);
          } else
@@ -385,14 +356,10 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer,
                             });
 
          radv_CmdDraw(radv_cmd_buffer_to_handle(cmd_buffer), 3, 1, 0, 0);
-         radv_cmd_buffer_end_render_pass(cmd_buffer);
+
+         radv_CmdEndRendering(radv_cmd_buffer_to_handle(cmd_buffer));
 
       fail_pipeline:
-         /* At the point where we emit the draw call, all data from the
-          * descriptor sets, etc. has been used.  We are free to delete it.
-          */
-         radv_DestroyFramebuffer(radv_device_to_handle(device), dst_temps.fb,
-                                 &cmd_buffer->pool->vk.alloc);
 
          if (src_type == BLIT2D_SRC_TYPE_BUFFER)
             radv_buffer_view_finish(&src_temps.bview);
@@ -628,21 +595,6 @@ radv_device_finish_meta_blit2d_state(struct radv_device *device)
 {
    struct radv_meta_state *state = &device->meta_state;
 
-   for (unsigned j = 0; j < NUM_META_FS_KEYS; ++j) {
-      for (unsigned k = 0; k < RADV_META_DST_LAYOUT_COUNT; ++k) {
-         radv_DestroyRenderPass(radv_device_to_handle(device), state->blit2d_render_passes[j][k],
-                                &state->alloc);
-      }
-   }
-
-   for (enum radv_blit_ds_layout j = RADV_BLIT_DS_LAYOUT_TILE_ENABLE; j < RADV_BLIT_DS_LAYOUT_COUNT;
-        j++) {
-      radv_DestroyRenderPass(radv_device_to_handle(device), state->blit2d_depth_only_rp[j],
-                             &state->alloc);
-      radv_DestroyRenderPass(radv_device_to_handle(device), state->blit2d_stencil_only_rp[j],
-                             &state->alloc);
-   }
-
    for (unsigned log2_samples = 0; log2_samples < MAX_SAMPLES_LOG2; ++log2_samples) {
       for (unsigned src = 0; src < BLIT2D_NUM_SRC_TYPES; src++) {
          radv_DestroyPipelineLayout(radv_device_to_handle(device),
@@ -718,73 +670,15 @@ blit2d_init_color_pipeline(struct radv_device *device, enum blit2d_src_type src_
        .pSpecializationInfo = NULL},
    };
 
-   for (unsigned dst_layout = 0; dst_layout < RADV_META_DST_LAYOUT_COUNT; ++dst_layout) {
-      if (!device->meta_state.blit2d_render_passes[fs_key][dst_layout]) {
-         VkImageLayout layout = radv_meta_dst_layout_to_layout(dst_layout);
-
-         result = radv_CreateRenderPass2(
-            radv_device_to_handle(device),
-            &(VkRenderPassCreateInfo2){
-               .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
-               .attachmentCount = 1,
-               .pAttachments =
-                  &(VkAttachmentDescription2){
-                     .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
-                     .format = format,
-                     .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
-                     .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
-                     .initialLayout = layout,
-                     .finalLayout = layout,
-                  },
-               .subpassCount = 1,
-               .pSubpasses =
-                  &(VkSubpassDescription2){
-                     .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
-                     .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
-                     .inputAttachmentCount = 0,
-                     .colorAttachmentCount = 1,
-                     .pColorAttachments =
-                        &(VkAttachmentReference2){
-                           .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
-                           .attachment = 0,
-                           .layout = layout,
-                        },
-                     .pResolveAttachments = NULL,
-                     .pDepthStencilAttachment =
-                        &(VkAttachmentReference2){
-                           .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
-                           .attachment = VK_ATTACHMENT_UNUSED,
-                           .layout = layout,
-                        },
-                     .preserveAttachmentCount = 0,
-                     .pPreserveAttachments = NULL,
-                  },
-               .dependencyCount = 2,
-               .pDependencies =
-                  (VkSubpassDependency2[]){{.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
-                                            .srcSubpass = VK_SUBPASS_EXTERNAL,
-                                            .dstSubpass = 0,
-                                            .srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                                            .dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
-                                            .srcAccessMask = 0,
-                                            .dstAccessMask = 0,
-                                            .dependencyFlags = 0},
-                                           {.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
-                                            .srcSubpass = 0,
-                                            .dstSubpass = VK_SUBPASS_EXTERNAL,
-                                            .srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                                            .dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
-                                            .srcAccessMask = 0,
-                                            .dstAccessMask = 0,
-                                            .dependencyFlags = 0}},
-            },
-            &device->meta_state.alloc,
-            &device->meta_state.blit2d_render_passes[fs_key][dst_layout]);
-      }
-   }
+   const VkPipelineRenderingCreateInfo rendering_create_info = {
+      .sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,
+      .colorAttachmentCount = 1,
+      .pColorAttachmentFormats = &format,
+   };
 
    const VkGraphicsPipelineCreateInfo vk_pipeline_info = {
       .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
+      .pNext = &rendering_create_info,
       .stageCount = ARRAY_SIZE(pipeline_shader_stages),
       .pStages = pipeline_shader_stages,
       .pVertexInputState = vi_create_info,
@@ -843,7 +737,7 @@ blit2d_init_color_pipeline(struct radv_device *device, enum blit2d_src_type src_
          },
       .flags = 0,
       .layout = device->meta_state.blit2d[log2_samples].p_layouts[src_type],
-      .renderPass = device->meta_state.blit2d_render_passes[fs_key][0],
+      .renderPass = VK_NULL_HANDLE,
       .subpass = 0,
    };
 
@@ -913,66 +807,14 @@ blit2d_init_depth_only_pipeline(struct radv_device *device, enum blit2d_src_type
        .pSpecializationInfo = NULL},
    };
 
-   for (enum radv_blit_ds_layout ds_layout = RADV_BLIT_DS_LAYOUT_TILE_ENABLE;
-        ds_layout < RADV_BLIT_DS_LAYOUT_COUNT; ds_layout++) {
-      if (!device->meta_state.blit2d_depth_only_rp[ds_layout]) {
-         VkImageLayout layout = radv_meta_blit_ds_to_layout(ds_layout);
-         result = radv_CreateRenderPass2(
-            radv_device_to_handle(device),
-            &(VkRenderPassCreateInfo2){
-               .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
-               .attachmentCount = 1,
-               .pAttachments =
-                  &(VkAttachmentDescription2){
-                     .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
-                     .format = VK_FORMAT_D32_SFLOAT,
-                     .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
-                     .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
-                     .initialLayout = layout,
-                     .finalLayout = layout,
-                  },
-               .subpassCount = 1,
-               .pSubpasses =
-                  &(VkSubpassDescription2){
-                     .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
-                     .inputAttachmentCount = 0,
-                     .colorAttachmentCount = 0,
-                     .pColorAttachments = NULL,
-                     .pResolveAttachments = NULL,
-                     .pDepthStencilAttachment =
-                        &(VkAttachmentReference2){
-                           .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
-                           .attachment = 0,
-                           .layout = layout,
-                        },
-                     .preserveAttachmentCount = 0,
-                     .pPreserveAttachments = NULL,
-                  },
-               .dependencyCount = 2,
-               .pDependencies =
-                  (VkSubpassDependency2[]){{.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
-                                            .srcSubpass = VK_SUBPASS_EXTERNAL,
-                                            .dstSubpass = 0,
-                                            .srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                                            .dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
-                                            .srcAccessMask = 0,
-                                            .dstAccessMask = 0,
-                                            .dependencyFlags = 0},
-                                           {.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
-                                            .srcSubpass = 0,
-                                            .dstSubpass = VK_SUBPASS_EXTERNAL,
-                                            .srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                                            .dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
-                                            .srcAccessMask = 0,
-                                            .dstAccessMask = 0,
-                                            .dependencyFlags = 0}},
-            },
-            &device->meta_state.alloc, &device->meta_state.blit2d_depth_only_rp[ds_layout]);
-      }
-   }
+   const VkPipelineRenderingCreateInfo rendering_create_info = {
+      .sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,
+      .depthAttachmentFormat = VK_FORMAT_D32_SFLOAT,
+   };
 
    const VkGraphicsPipelineCreateInfo vk_pipeline_info = {
       .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
+      .pNext = &rendering_create_info,
       .stageCount = ARRAY_SIZE(pipeline_shader_stages),
       .pStages = pipeline_shader_stages,
       .pVertexInputState = vi_create_info,
@@ -1034,7 +876,7 @@ blit2d_init_depth_only_pipeline(struct radv_device *device, enum blit2d_src_type
          },
       .flags = 0,
       .layout = device->meta_state.blit2d[log2_samples].p_layouts[src_type],
-      .renderPass = device->meta_state.blit2d_depth_only_rp[0],
+      .renderPass = VK_NULL_HANDLE,
       .subpass = 0,
    };
 
@@ -1104,67 +946,14 @@ blit2d_init_stencil_only_pipeline(struct radv_device *device, enum blit2d_src_ty
        .pSpecializationInfo = NULL},
    };
 
-   for (enum radv_blit_ds_layout ds_layout = RADV_BLIT_DS_LAYOUT_TILE_ENABLE;
-        ds_layout < RADV_BLIT_DS_LAYOUT_COUNT; ds_layout++) {
-      if (!device->meta_state.blit2d_stencil_only_rp[ds_layout]) {
-         VkImageLayout layout = radv_meta_blit_ds_to_layout(ds_layout);
-         result = radv_CreateRenderPass2(
-            radv_device_to_handle(device),
-            &(VkRenderPassCreateInfo2){
-               .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
-               .attachmentCount = 1,
-               .pAttachments =
-                  &(VkAttachmentDescription2){
-                     .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
-                     .format = VK_FORMAT_S8_UINT,
-                     .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
-                     .storeOp = VK_ATTACHMENT_STORE_OP_STORE,
-                     .initialLayout = layout,
-                     .finalLayout = layout,
-                  },
-               .subpassCount = 1,
-               .pSubpasses =
-                  &(VkSubpassDescription2){
-                     .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
-                     .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
-                     .inputAttachmentCount = 0,
-                     .colorAttachmentCount = 0,
-                     .pColorAttachments = NULL,
-                     .pResolveAttachments = NULL,
-                     .pDepthStencilAttachment =
-                        &(VkAttachmentReference2){
-                           .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
-                           .attachment = 0,
-                           .layout = layout,
-                        },
-                     .preserveAttachmentCount = 0,
-                     .pPreserveAttachments = NULL,
-                  },
-               .dependencyCount = 2,
-               .pDependencies =
-                  (VkSubpassDependency2[]){{.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
-                                            .srcSubpass = VK_SUBPASS_EXTERNAL,
-                                            .dstSubpass = 0,
-                                            .srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                                            .dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
-                                            .srcAccessMask = 0,
-                                            .dstAccessMask = 0,
-                                            .dependencyFlags = 0},
-                                           {.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
-                                            .srcSubpass = 0,
-                                            .dstSubpass = VK_SUBPASS_EXTERNAL,
-                                            .srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                                            .dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
-                                            .srcAccessMask = 0,
-                                            .dstAccessMask = 0,
-                                            .dependencyFlags = 0}},
-            },
-            &device->meta_state.alloc, &device->meta_state.blit2d_stencil_only_rp[ds_layout]);
-      }
-   }
+   const VkPipelineRenderingCreateInfo rendering_create_info = {
+      .sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,
+      .stencilAttachmentFormat = VK_FORMAT_S8_UINT,
+   };
 
    const VkGraphicsPipelineCreateInfo vk_pipeline_info = {
       .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
+      .pNext = &rendering_create_info,
       .stageCount = ARRAY_SIZE(pipeline_shader_stages),
       .pStages = pipeline_shader_stages,
       .pVertexInputState = vi_create_info,
@@ -1238,7 +1027,7 @@ blit2d_init_stencil_only_pipeline(struct radv_device *device, enum blit2d_src_ty
          },
       .flags = 0,
       .layout = device->meta_state.blit2d[log2_samples].p_layouts[src_type],
-      .renderPass = device->meta_state.blit2d_stencil_only_rp[0],
+      .renderPass = VK_NULL_HANDLE,
       .subpass = 0,
    };
 
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 011d2847220..9b2807c1625 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -523,10 +523,6 @@ struct radv_meta_state {
       VkPipeline stencil_only_pipeline[5];
    } blit2d[MAX_SAMPLES_LOG2];
 
-   VkRenderPass blit2d_render_passes[NUM_META_FS_KEYS][RADV_META_DST_LAYOUT_COUNT];
-   VkRenderPass blit2d_depth_only_rp[RADV_BLIT_DS_LAYOUT_COUNT];
-   VkRenderPass blit2d_stencil_only_rp[RADV_BLIT_DS_LAYOUT_COUNT];
-
    struct {
       VkPipelineLayout img_p_layout;
       VkDescriptorSetLayout img_ds_layout;



More information about the mesa-commit mailing list