Mesa (master): radv/meta: Use CreateRenderPass2

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Mar 10 18:29:59 UTC 2021


Module: Mesa
Branch: master
Commit: 8304b4eef7e2418ae04be32e1791b16eb3fbfbf4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8304b4eef7e2418ae04be32e1791b16eb3fbfbf4

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Mar 10 01:10:18 2021 -0600

radv/meta: Use CreateRenderPass2

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8857>

---

 src/amd/vulkan/radv_meta_blit.c       | 60 +++++++++++++++++++++-------------
 src/amd/vulkan/radv_meta_blit2d.c     | 61 ++++++++++++++++++++++-------------
 src/amd/vulkan/radv_meta_clear.c      | 60 +++++++++++++++++++++-------------
 src/amd/vulkan/radv_meta_decompress.c | 19 +++++++----
 src/amd/vulkan/radv_meta_fast_clear.c | 22 ++++++++-----
 src/amd/vulkan/radv_meta_resolve.c    | 23 ++++++++-----
 src/amd/vulkan/radv_meta_resolve_fs.c | 41 ++++++++++++++---------
 7 files changed, 181 insertions(+), 105 deletions(-)

diff --git a/src/amd/vulkan/radv_meta_blit.c b/src/amd/vulkan/radv_meta_blit.c
index 733a92fc117..78e68f1c37d 100644
--- a/src/amd/vulkan/radv_meta_blit.c
+++ b/src/amd/vulkan/radv_meta_blit.c
@@ -950,11 +950,12 @@ radv_device_init_meta_blit_color(struct radv_device *device, bool on_demand)
 		unsigned key = radv_format_meta_fs_key(device, radv_fs_key_format_exemplars[i]);
 		for(unsigned j = 0; j < RADV_META_DST_LAYOUT_COUNT; ++j) {
 			VkImageLayout layout = radv_meta_dst_layout_to_layout(j);
-			result = radv_CreateRenderPass(radv_device_to_handle(device),
-						&(VkRenderPassCreateInfo) {
-							.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+			result = radv_CreateRenderPass2(radv_device_to_handle(device),
+						&(VkRenderPassCreateInfo2) {
+							.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 								.attachmentCount = 1,
-								.pAttachments = &(VkAttachmentDescription) {
+								.pAttachments = &(VkAttachmentDescription2) {
+								.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 								.format = radv_fs_key_format_exemplars[i],
 								.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
 								.storeOp = VK_ATTACHMENT_STORE_OP_STORE,
@@ -962,16 +963,19 @@ radv_device_init_meta_blit_color(struct radv_device *device, bool on_demand)
 								.finalLayout = layout,
 							},
 								.subpassCount = 1,
-										.pSubpasses = &(VkSubpassDescription) {
+										.pSubpasses = &(VkSubpassDescription2) {
+								.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 								.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 								.inputAttachmentCount = 0,
 								.colorAttachmentCount = 1,
-								.pColorAttachments = &(VkAttachmentReference) {
+								.pColorAttachments = &(VkAttachmentReference2) {
+									.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 									.attachment = 0,
 									.layout = layout,
 								},
 								.pResolveAttachments = NULL,
-								.pDepthStencilAttachment = &(VkAttachmentReference) {
+								.pDepthStencilAttachment = &(VkAttachmentReference2) {
+									.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 									.attachment = VK_ATTACHMENT_UNUSED,
 									.layout = VK_IMAGE_LAYOUT_GENERAL,
 								},
@@ -979,8 +983,9 @@ radv_device_init_meta_blit_color(struct radv_device *device, bool on_demand)
 								.pPreserveAttachments = NULL,
 							},
 							.dependencyCount = 2,
-							.pDependencies = (VkSubpassDependency[]) {
+							.pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -990,6 +995,7 @@ radv_device_init_meta_blit_color(struct radv_device *device, bool on_demand)
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -1033,11 +1039,12 @@ radv_device_init_meta_blit_depth(struct radv_device *device, bool on_demand)
 
 	for (enum radv_blit_ds_layout ds_layout = RADV_BLIT_DS_LAYOUT_TILE_ENABLE; ds_layout < RADV_BLIT_DS_LAYOUT_COUNT; ds_layout++) {
 		VkImageLayout layout = radv_meta_blit_ds_to_layout(ds_layout);
-		result = radv_CreateRenderPass(radv_device_to_handle(device),
-					       &(VkRenderPassCreateInfo) {
-						       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+		result = radv_CreateRenderPass2(radv_device_to_handle(device),
+						&(VkRenderPassCreateInfo2) {
+						       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						       .attachmentCount = 1,
-						       .pAttachments = &(VkAttachmentDescription) {
+						       .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,
@@ -1045,13 +1052,15 @@ radv_device_init_meta_blit_depth(struct radv_device *device, bool on_demand)
 							       .finalLayout = layout,
 						       },
 						       .subpassCount = 1,
-						       .pSubpasses = &(VkSubpassDescription) {
+						       .pSubpasses = &(VkSubpassDescription2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 							       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 							       .inputAttachmentCount = 0,
 							       .colorAttachmentCount = 0,
 							       .pColorAttachments = NULL,
 							       .pResolveAttachments = NULL,
-							       .pDepthStencilAttachment = &(VkAttachmentReference) {
+							       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+								       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								       .attachment = 0,
 								       .layout = layout,
 								},
@@ -1059,8 +1068,9 @@ radv_device_init_meta_blit_depth(struct radv_device *device, bool on_demand)
 							       .pPreserveAttachments = NULL,
 							},
 							.dependencyCount = 2,
-							.pDependencies = (VkSubpassDependency[]) {
+							.pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -1070,6 +1080,7 @@ radv_device_init_meta_blit_depth(struct radv_device *device, bool on_demand)
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -1110,11 +1121,12 @@ radv_device_init_meta_blit_stencil(struct radv_device *device, bool on_demand)
 
 	for (enum radv_blit_ds_layout ds_layout = RADV_BLIT_DS_LAYOUT_TILE_ENABLE; ds_layout < RADV_BLIT_DS_LAYOUT_COUNT; ds_layout++) {
 		VkImageLayout layout = radv_meta_blit_ds_to_layout(ds_layout);
-		result = radv_CreateRenderPass(radv_device_to_handle(device),
-					       &(VkRenderPassCreateInfo) {
-						       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+		result = radv_CreateRenderPass2(radv_device_to_handle(device),
+						&(VkRenderPassCreateInfo2) {
+						       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						       .attachmentCount = 1,
-						       .pAttachments = &(VkAttachmentDescription) {
+						       .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,
@@ -1122,13 +1134,15 @@ radv_device_init_meta_blit_stencil(struct radv_device *device, bool on_demand)
 							       .finalLayout = layout,
 						       },
 						       .subpassCount = 1,
-						       .pSubpasses = &(VkSubpassDescription) {
+						       .pSubpasses = &(VkSubpassDescription2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 							       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 							       .inputAttachmentCount = 0,
 							       .colorAttachmentCount = 0,
 							       .pColorAttachments = NULL,
 							       .pResolveAttachments = NULL,
-							       .pDepthStencilAttachment = &(VkAttachmentReference) {
+							       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+								       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								       .attachment = 0,
 								       .layout = layout,
 							       },
@@ -1136,8 +1150,9 @@ radv_device_init_meta_blit_stencil(struct radv_device *device, bool on_demand)
 							       .pPreserveAttachments = NULL,
 						       },
 						       .dependencyCount = 2,
-						       .pDependencies = (VkSubpassDependency[]) {
+						       .pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -1147,6 +1162,7 @@ radv_device_init_meta_blit_stencil(struct radv_device *device, bool on_demand)
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
diff --git a/src/amd/vulkan/radv_meta_blit2d.c b/src/amd/vulkan/radv_meta_blit2d.c
index f7e74b2640d..f3ddcf36a8f 100644
--- a/src/amd/vulkan/radv_meta_blit2d.c
+++ b/src/amd/vulkan/radv_meta_blit2d.c
@@ -760,11 +760,12 @@ blit2d_init_color_pipeline(struct radv_device *device,
 		if (!device->meta_state.blit2d_render_passes[fs_key][dst_layout]) {
 			VkImageLayout layout = radv_meta_dst_layout_to_layout(dst_layout);
 
-			result = radv_CreateRenderPass(radv_device_to_handle(device),
-						&(VkRenderPassCreateInfo) {
-							.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+			result = radv_CreateRenderPass2(radv_device_to_handle(device),
+						&(VkRenderPassCreateInfo2) {
+							.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 							.attachmentCount = 1,
-							.pAttachments = &(VkAttachmentDescription) {
+							.pAttachments = &(VkAttachmentDescription2) {
+							.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 							.format = format,
 							.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
 							.storeOp = VK_ATTACHMENT_STORE_OP_STORE,
@@ -772,16 +773,19 @@ blit2d_init_color_pipeline(struct radv_device *device,
 							.finalLayout = layout,
 							},
 						.subpassCount = 1,
-						.pSubpasses = &(VkSubpassDescription) {
+						.pSubpasses = &(VkSubpassDescription2) {
+							.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 							.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 							.inputAttachmentCount = 0,
 							.colorAttachmentCount = 1,
-							.pColorAttachments = &(VkAttachmentReference) {
+							.pColorAttachments = &(VkAttachmentReference2) {
+								.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								.attachment = 0,
 								.layout = layout,
 								},
 						.pResolveAttachments = NULL,
-						.pDepthStencilAttachment = &(VkAttachmentReference) {
+						.pDepthStencilAttachment = &(VkAttachmentReference2) {
+							.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							.attachment = VK_ATTACHMENT_UNUSED,
 							.layout = layout,
 						},
@@ -789,8 +793,9 @@ blit2d_init_color_pipeline(struct radv_device *device,
 						.pPreserveAttachments = NULL,
 						},
 						.dependencyCount = 2,
-						.pDependencies = (VkSubpassDependency[]) {
+						.pDependencies = (VkSubpassDependency2[]) {
 							{
+								.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 								.srcSubpass = VK_SUBPASS_EXTERNAL,
 								.dstSubpass = 0,
 								.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -800,6 +805,7 @@ blit2d_init_color_pipeline(struct radv_device *device,
 								.dependencyFlags = 0
 							},
 							{
+								.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 								.srcSubpass = 0,
 								.dstSubpass = VK_SUBPASS_EXTERNAL,
 								.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -954,11 +960,12 @@ blit2d_init_depth_only_pipeline(struct radv_device *device,
 	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_CreateRenderPass(radv_device_to_handle(device),
-						       &(VkRenderPassCreateInfo) {
-							       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+			result = radv_CreateRenderPass2(radv_device_to_handle(device),
+							&(VkRenderPassCreateInfo2) {
+							       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 							       .attachmentCount = 1,
-							       .pAttachments = &(VkAttachmentDescription) {
+							       .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,
@@ -966,13 +973,14 @@ blit2d_init_depth_only_pipeline(struct radv_device *device,
 								       .finalLayout = layout,
 							       },
 							       .subpassCount = 1,
-							       .pSubpasses = &(VkSubpassDescription) {
-								       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
+							       .pSubpasses = &(VkSubpassDescription2) {
+								       .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 								       .inputAttachmentCount = 0,
 								       .colorAttachmentCount = 0,
 								       .pColorAttachments = NULL,
 								       .pResolveAttachments = NULL,
-								       .pDepthStencilAttachment = &(VkAttachmentReference) {
+								       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+									       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 									       .attachment = 0,
 									       .layout = layout,
 								       },
@@ -980,8 +988,9 @@ blit2d_init_depth_only_pipeline(struct radv_device *device,
 								       .pPreserveAttachments = NULL,
 							       },
 							       .dependencyCount = 2,
-							       .pDependencies = (VkSubpassDependency[]) {
+							       .pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -991,6 +1000,7 @@ blit2d_init_depth_only_pipeline(struct radv_device *device,
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -1144,11 +1154,12 @@ blit2d_init_stencil_only_pipeline(struct radv_device *device,
 	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_CreateRenderPass(radv_device_to_handle(device),
-						       &(VkRenderPassCreateInfo) {
-							       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+			result = radv_CreateRenderPass2(radv_device_to_handle(device),
+							&(VkRenderPassCreateInfo2) {
+							       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 							       .attachmentCount = 1,
-							       .pAttachments = &(VkAttachmentDescription) {
+							       .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,
@@ -1156,13 +1167,15 @@ blit2d_init_stencil_only_pipeline(struct radv_device *device,
 								       .finalLayout = layout,
 							       },
 							       .subpassCount = 1,
-							       .pSubpasses = &(VkSubpassDescription) {
+							       .pSubpasses = &(VkSubpassDescription2) {
+								       .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 								       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 								       .inputAttachmentCount = 0,
 								       .colorAttachmentCount = 0,
 								       .pColorAttachments = NULL,
 								       .pResolveAttachments = NULL,
-								       .pDepthStencilAttachment = &(VkAttachmentReference) {
+								       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+									       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 									       .attachment = 0,
 									       .layout = layout,
 								       },
@@ -1170,8 +1183,9 @@ blit2d_init_stencil_only_pipeline(struct radv_device *device,
 								       .pPreserveAttachments = NULL,
 							       },
 							       .dependencyCount = 2,
-							       .pDependencies = (VkSubpassDependency[]) {
+							       .pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -1181,6 +1195,7 @@ blit2d_init_stencil_only_pipeline(struct radv_device *device,
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c
index ade62752ed0..75dbf8eecb9 100644
--- a/src/amd/vulkan/radv_meta_clear.c
+++ b/src/amd/vulkan/radv_meta_clear.c
@@ -194,11 +194,12 @@ create_color_renderpass(struct radv_device *device,
 		return VK_SUCCESS;
 	}
 
-	VkResult result = radv_CreateRenderPass(radv_device_to_handle(device),
-				       &(VkRenderPassCreateInfo) {
-					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+	VkResult result = radv_CreateRenderPass2(radv_device_to_handle(device),
+				       &(VkRenderPassCreateInfo2) {
+					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						       .attachmentCount = 1,
-						       .pAttachments = &(VkAttachmentDescription) {
+						       .pAttachments = &(VkAttachmentDescription2) {
+						       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 						       .format = vk_format,
 						       .samples = samples,
 						       .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
@@ -207,16 +208,19 @@ create_color_renderpass(struct radv_device *device,
 						       .finalLayout = VK_IMAGE_LAYOUT_GENERAL,
 					       },
 						       .subpassCount = 1,
-								.pSubpasses = &(VkSubpassDescription) {
+								.pSubpasses = &(VkSubpassDescription2) {
+						       .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 						       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 						       .inputAttachmentCount = 0,
 						       .colorAttachmentCount = 1,
-						       .pColorAttachments = &(VkAttachmentReference) {
+						       .pColorAttachments = &(VkAttachmentReference2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							       .attachment = 0,
 							       .layout = VK_IMAGE_LAYOUT_GENERAL,
 						       },
 						       .pResolveAttachments = NULL,
-						       .pDepthStencilAttachment = &(VkAttachmentReference) {
+						       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							       .attachment = VK_ATTACHMENT_UNUSED,
 							       .layout = VK_IMAGE_LAYOUT_GENERAL,
 						       },
@@ -224,8 +228,9 @@ create_color_renderpass(struct radv_device *device,
 						       .pPreserveAttachments = NULL,
 					       },
 							.dependencyCount = 2,
-							.pDependencies = (VkSubpassDependency[]) {
+							.pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -235,6 +240,7 @@ create_color_renderpass(struct radv_device *device,
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -553,11 +559,12 @@ create_depthstencil_renderpass(struct radv_device *device,
 		return VK_SUCCESS;
 	}
 
-	VkResult result = radv_CreateRenderPass(radv_device_to_handle(device),
-				       &(VkRenderPassCreateInfo) {
-					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+	VkResult result = radv_CreateRenderPass2(radv_device_to_handle(device),
+				       &(VkRenderPassCreateInfo2) {
+					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						       .attachmentCount = 1,
-						       .pAttachments = &(VkAttachmentDescription) {
+						       .pAttachments = &(VkAttachmentDescription2) {
+						       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 						       .format = VK_FORMAT_D32_SFLOAT_S8_UINT,
 						       .samples = samples,
 						       .loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
@@ -566,13 +573,15 @@ create_depthstencil_renderpass(struct radv_device *device,
 						       .finalLayout = VK_IMAGE_LAYOUT_GENERAL,
 					       },
 						       .subpassCount = 1,
-								.pSubpasses = &(VkSubpassDescription) {
+								.pSubpasses = &(VkSubpassDescription2) {
+						       .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 						       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 						       .inputAttachmentCount = 0,
 						       .colorAttachmentCount = 0,
 						       .pColorAttachments = NULL,
 						       .pResolveAttachments = NULL,
-						       .pDepthStencilAttachment = &(VkAttachmentReference) {
+						       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							       .attachment = 0,
 							       .layout = VK_IMAGE_LAYOUT_GENERAL,
 						       },
@@ -580,8 +589,9 @@ create_depthstencil_renderpass(struct radv_device *device,
 						       .pPreserveAttachments = NULL,
 					       },
 							.dependencyCount = 2,
-							.pDependencies = (VkSubpassDependency[]) {
+							.pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -591,6 +601,7 @@ create_depthstencil_renderpass(struct radv_device *device,
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -2002,7 +2013,8 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer,
 			       &cmd_buffer->pool->alloc,
 			       &fb);
 
-	VkAttachmentDescription att_desc = {
+	VkAttachmentDescription2 att_desc = {
+		.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 		.format = iview.vk_format,
 		.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
 		.storeOp = VK_ATTACHMENT_STORE_OP_STORE,
@@ -2012,7 +2024,8 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer,
 		.finalLayout = image_layout,
 	};
 
-	VkSubpassDescription subpass_desc = {
+	VkSubpassDescription2 subpass_desc = {
+		.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 		.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 		.inputAttachmentCount = 0,
 		.colorAttachmentCount = 0,
@@ -2023,7 +2036,8 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer,
 		.pPreserveAttachments = NULL,
 	};
 
-	const VkAttachmentReference att_ref = {
+	const VkAttachmentReference2 att_ref = {
+		.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 		.attachment = 0,
 		.layout = image_layout,
 	};
@@ -2036,16 +2050,17 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer,
 	}
 
 	VkRenderPass pass;
-	radv_CreateRenderPass(device_h,
-			      &(VkRenderPassCreateInfo) {
-				      .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+	radv_CreateRenderPass2(device_h,
+			      &(VkRenderPassCreateInfo2) {
+				      .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 					      .attachmentCount = 1,
 					      .pAttachments = &att_desc,
 					      .subpassCount = 1,
 					      .pSubpasses = &subpass_desc,
 					      .dependencyCount = 2,
-					      .pDependencies = (VkSubpassDependency[]) {
+						.pDependencies = (VkSubpassDependency2[]) {
 							{
+								.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 								.srcSubpass = VK_SUBPASS_EXTERNAL,
 								.dstSubpass = 0,
 								.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -2055,6 +2070,7 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer,
 								.dependencyFlags = 0
 							},
 							{
+								.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 								.srcSubpass = 0,
 								.dstSubpass = VK_SUBPASS_EXTERNAL,
 								.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
diff --git a/src/amd/vulkan/radv_meta_decompress.c b/src/amd/vulkan/radv_meta_decompress.c
index 31b993cde32..3ab2a4b73e1 100644
--- a/src/amd/vulkan/radv_meta_decompress.c
+++ b/src/amd/vulkan/radv_meta_decompress.c
@@ -47,8 +47,9 @@ create_pass(struct radv_device *device,
 	VkResult result;
 	VkDevice device_h = radv_device_to_handle(device);
 	const VkAllocationCallbacks *alloc = &device->meta_state.alloc;
-	VkAttachmentDescription attachment;
+	VkAttachmentDescription2 attachment;
 
+	attachment.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
 	attachment.flags = 0;
 	attachment.format = VK_FORMAT_D32_SFLOAT_S8_UINT;
 	attachment.samples = samples;
@@ -59,19 +60,21 @@ create_pass(struct radv_device *device,
 	attachment.initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
 	attachment.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
 
-	result = radv_CreateRenderPass(device_h,
-				       &(VkRenderPassCreateInfo) {
-					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+	result = radv_CreateRenderPass2(device_h,
+				       &(VkRenderPassCreateInfo2) {
+					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						       .attachmentCount = 1,
 						       .pAttachments = &attachment,
 						       .subpassCount = 1,
-							.pSubpasses = &(VkSubpassDescription) {
+							.pSubpasses = &(VkSubpassDescription2) {
+						       .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 						       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 						       .inputAttachmentCount = 0,
 						       .colorAttachmentCount = 0,
 						       .pColorAttachments = NULL,
 						       .pResolveAttachments = NULL,
-						       .pDepthStencilAttachment = &(VkAttachmentReference) {
+						       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							       .attachment = 0,
 							       .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
 						       },
@@ -79,8 +82,9 @@ create_pass(struct radv_device *device,
 						       .pPreserveAttachments = NULL,
 					       },
 							.dependencyCount = 2,
-							.pDependencies = (VkSubpassDependency[]) {
+							.pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -90,6 +94,7 @@ create_pass(struct radv_device *device,
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
diff --git a/src/amd/vulkan/radv_meta_fast_clear.c b/src/amd/vulkan/radv_meta_fast_clear.c
index b2540992457..91eea8f368e 100644
--- a/src/amd/vulkan/radv_meta_fast_clear.c
+++ b/src/amd/vulkan/radv_meta_fast_clear.c
@@ -181,8 +181,9 @@ create_pass(struct radv_device *device)
 	VkResult result;
 	VkDevice device_h = radv_device_to_handle(device);
 	const VkAllocationCallbacks *alloc = &device->meta_state.alloc;
-	VkAttachmentDescription attachment;
+	VkAttachmentDescription2 attachment;
 
+	attachment.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
 	attachment.format = VK_FORMAT_UNDEFINED;
 	attachment.samples = 1;
 	attachment.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
@@ -190,32 +191,36 @@ create_pass(struct radv_device *device)
 	attachment.initialLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
 	attachment.finalLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
 
-	result = radv_CreateRenderPass(device_h,
-				       &(VkRenderPassCreateInfo) {
-					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+	result = radv_CreateRenderPass2(device_h,
+				       &(VkRenderPassCreateInfo2) {
+					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						       .attachmentCount = 1,
 						       .pAttachments = &attachment,
 						       .subpassCount = 1,
-						       .pSubpasses = &(VkSubpassDescription) {
+						       .pSubpasses = &(VkSubpassDescription2) {
+						       .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 						       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 						       .inputAttachmentCount = 0,
 						       .colorAttachmentCount = 1,
-						       .pColorAttachments = (VkAttachmentReference[]) {
+						       .pColorAttachments = (VkAttachmentReference2[]) {
 							       {
+								       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								       .attachment = 0,
 								       .layout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
 							       },
 						       },
 						       .pResolveAttachments = NULL,
-						       .pDepthStencilAttachment = &(VkAttachmentReference) {
+						       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							       .attachment = VK_ATTACHMENT_UNUSED,
 						       },
 						       .preserveAttachmentCount = 0,
 						       .pPreserveAttachments = NULL,
 					       },
 							.dependencyCount = 2,
-							.pDependencies = (VkSubpassDependency[]) {
+							.pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -225,6 +230,7 @@ create_pass(struct radv_device *device)
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
diff --git a/src/amd/vulkan/radv_meta_resolve.c b/src/amd/vulkan/radv_meta_resolve.c
index b248a1fb661..78d45424b99 100644
--- a/src/amd/vulkan/radv_meta_resolve.c
+++ b/src/amd/vulkan/radv_meta_resolve.c
@@ -53,10 +53,11 @@ create_pass(struct radv_device *device, VkFormat vk_format, VkRenderPass *pass)
 	VkResult result;
 	VkDevice device_h = radv_device_to_handle(device);
 	const VkAllocationCallbacks *alloc = &device->meta_state.alloc;
-	VkAttachmentDescription attachments[2];
+	VkAttachmentDescription2 attachments[2];
 	int i;
 
 	for (i = 0; i < 2; i++) {
+		attachments[i].sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
 		attachments[i].format = vk_format;
 		attachments[i].samples = 1;
 		attachments[i].loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
@@ -67,36 +68,41 @@ create_pass(struct radv_device *device, VkFormat vk_format, VkRenderPass *pass)
 	attachments[1].initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
 	attachments[1].finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
 
-	result = radv_CreateRenderPass(device_h,
-				       &(VkRenderPassCreateInfo) {
-					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+	result = radv_CreateRenderPass2(device_h,
+				       &(VkRenderPassCreateInfo2) {
+					       .sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						       .attachmentCount = 2,
 						       .pAttachments = attachments,
 						       .subpassCount = 1,
-								.pSubpasses = &(VkSubpassDescription) {
+								.pSubpasses = &(VkSubpassDescription2) {
+						       .sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 						       .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 						       .inputAttachmentCount = 0,
 						       .colorAttachmentCount = 2,
-						       .pColorAttachments = (VkAttachmentReference[]) {
+						       .pColorAttachments = (VkAttachmentReference2[]) {
 							       {
+								       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								       .attachment = 0,
 								       .layout = VK_IMAGE_LAYOUT_GENERAL,
 							       },
 							       {
+								       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								       .attachment = 1,
 								       .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
 							       },
 						       },
 						       .pResolveAttachments = NULL,
-						       .pDepthStencilAttachment = &(VkAttachmentReference) {
+						       .pDepthStencilAttachment = &(VkAttachmentReference2) {
+							       .sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							       .attachment = VK_ATTACHMENT_UNUSED,
 						       },
 						       .preserveAttachmentCount = 0,
 						       .pPreserveAttachments = NULL,
 					       },
 							.dependencyCount = 2,
-							.pDependencies = (VkSubpassDependency[]) {
+							.pDependencies = (VkSubpassDependency2[]) {
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = VK_SUBPASS_EXTERNAL,
 									.dstSubpass = 0,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -106,6 +112,7 @@ create_pass(struct radv_device *device, VkFormat vk_format, VkRenderPass *pass)
 									.dependencyFlags = 0
 								},
 								{
+									.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 									.srcSubpass = 0,
 									.dstSubpass = VK_SUBPASS_EXTERNAL,
 									.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
diff --git a/src/amd/vulkan/radv_meta_resolve_fs.c b/src/amd/vulkan/radv_meta_resolve_fs.c
index 16211f5ca9f..104c1b5f4ad 100644
--- a/src/amd/vulkan/radv_meta_resolve_fs.c
+++ b/src/amd/vulkan/radv_meta_resolve_fs.c
@@ -190,11 +190,12 @@ create_resolve_pipeline(struct radv_device *device,
 
 	for (unsigned dst_layout = 0; dst_layout < RADV_META_DST_LAYOUT_COUNT; ++dst_layout) {
 		VkImageLayout layout = radv_meta_dst_layout_to_layout(dst_layout);
-		result = radv_CreateRenderPass(radv_device_to_handle(device),
-					&(VkRenderPassCreateInfo) {
-						.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+		result = radv_CreateRenderPass2(radv_device_to_handle(device),
+					&(VkRenderPassCreateInfo2) {
+						.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 						.attachmentCount = 1,
-						.pAttachments = &(VkAttachmentDescription) {
+						.pAttachments = &(VkAttachmentDescription2) {
+							.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 							.format = format,
 							.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
 							.storeOp = VK_ATTACHMENT_STORE_OP_STORE,
@@ -202,16 +203,19 @@ create_resolve_pipeline(struct radv_device *device,
 							.finalLayout = layout,
 						},
 						.subpassCount = 1,
-						.pSubpasses = &(VkSubpassDescription) {
+						.pSubpasses = &(VkSubpassDescription2) {
+							.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 							.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 							.inputAttachmentCount = 0,
 							.colorAttachmentCount = 1,
-							.pColorAttachments = &(VkAttachmentReference) {
+							.pColorAttachments = &(VkAttachmentReference2) {
+								.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								.attachment = 0,
 								.layout = layout,
 							},
 						.pResolveAttachments = NULL,
-						.pDepthStencilAttachment = &(VkAttachmentReference) {
+						.pDepthStencilAttachment = &(VkAttachmentReference2) {
+							.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 							.attachment = VK_ATTACHMENT_UNUSED,
 							.layout = VK_IMAGE_LAYOUT_GENERAL,
 						},
@@ -219,8 +223,9 @@ create_resolve_pipeline(struct radv_device *device,
 						.pPreserveAttachments = NULL,
 					},
 					.dependencyCount = 2,
-					.pDependencies = (VkSubpassDependency[]) {
+					.pDependencies = (VkSubpassDependency2[]) {
 						{
+							.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 							.srcSubpass = VK_SUBPASS_EXTERNAL,
 							.dstSubpass = 0,
 							.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -230,6 +235,7 @@ create_resolve_pipeline(struct radv_device *device,
 							.dependencyFlags = 0
 						},
 						{
+							.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 							.srcSubpass = 0,
 							.dstSubpass = VK_SUBPASS_EXTERNAL,
 							.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -523,11 +529,12 @@ create_depth_stencil_resolve_pipeline(struct radv_device *device,
 	}
 
 	if (!*render_pass) {
-		result = radv_CreateRenderPass(radv_device_to_handle(device),
-					       &(VkRenderPassCreateInfo) {
-							.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
+		result = radv_CreateRenderPass2(radv_device_to_handle(device),
+						&(VkRenderPassCreateInfo2) {
+							.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
 							.attachmentCount = 1,
-							.pAttachments = &(VkAttachmentDescription) {
+							.pAttachments = &(VkAttachmentDescription2) {
+								.sType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
 								.format = src_format,
 								.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
 								.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE,
@@ -537,13 +544,15 @@ create_depth_stencil_resolve_pipeline(struct radv_device *device,
 								.finalLayout = VK_IMAGE_LAYOUT_GENERAL,
 							},
 							.subpassCount = 1,
-							.pSubpasses = &(VkSubpassDescription) {
+							.pSubpasses = &(VkSubpassDescription2) {
+								.sType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
 								.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
 								.inputAttachmentCount = 0,
 								.colorAttachmentCount = 0,
 								.pColorAttachments = NULL,
 							.pResolveAttachments = NULL,
-							.pDepthStencilAttachment = &(VkAttachmentReference) {
+							.pDepthStencilAttachment = &(VkAttachmentReference2) {
+								.sType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
 								.attachment = 0,
 								.layout = VK_IMAGE_LAYOUT_GENERAL,
 							},
@@ -551,8 +560,9 @@ create_depth_stencil_resolve_pipeline(struct radv_device *device,
 							.pPreserveAttachments = NULL,
 						},
 						.dependencyCount = 2,
-						.pDependencies = (VkSubpassDependency[]) {
+						.pDependencies = (VkSubpassDependency2[]) {
 							{
+								.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 								.srcSubpass = VK_SUBPASS_EXTERNAL,
 								.dstSubpass = 0,
 								.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -562,6 +572,7 @@ create_depth_stencil_resolve_pipeline(struct radv_device *device,
 								.dependencyFlags = 0
 							},
 							{
+								.sType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
 								.srcSubpass = 0,
 								.dstSubpass = VK_SUBPASS_EXTERNAL,
 								.srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,



More information about the mesa-commit mailing list