From 7077b72d6051acba89e713d9425278551e41da4b Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 2 Aug 2022 12:58:46 -0500 Subject: [PATCH] vulkan,anv,dozen: Use VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT This has basically identical semantics to the pseudo-ext enum we were using before. Also, now that it's in the actual Vulkan enum, we can get rid of all the #pragma garbage to avoid compiler warnings. Reviewed-by: Samuel Pitoiset Part-of: --- src/intel/vulkan/genX_cmd_buffer.c | 4 ++-- src/microsoft/vulkan/dzn_image.c | 11 +++------- src/vulkan/runtime/vk_image.c | 33 ++++++++++++----------------- src/vulkan/runtime/vk_render_pass.c | 21 ++++++------------ src/vulkan/runtime/vk_render_pass.h | 2 -- 5 files changed, 25 insertions(+), 46 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index ebf32609559..8c236c2aeba 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -7167,7 +7167,7 @@ void genX(CmdEndRendering)( * - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL * - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL * - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL - * - VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA + * - VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT * * For general, we have no nice opportunity to transition so we do the copy * to the shadow unconditionally at the end of the subpass. For transfer @@ -7182,7 +7182,7 @@ void genX(CmdEndRendering)( if (anv_surface_is_valid(&image->planes[plane].shadow_surface) && (gfx->stencil_att.layout == VK_IMAGE_LAYOUT_GENERAL || - gfx->stencil_att.layout == VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA)) { + gfx->stencil_att.layout == VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT)) { anv_image_copy_to_shadow(cmd_buffer, image, VK_IMAGE_ASPECT_STENCIL_BIT, iview->planes[plane].isl.base_level, 1, diff --git a/src/microsoft/vulkan/dzn_image.c b/src/microsoft/vulkan/dzn_image.c index 9a369789ce5..8fcf4a8c4c6 100644 --- a/src/microsoft/vulkan/dzn_image.c +++ b/src/microsoft/vulkan/dzn_image.c @@ -534,14 +534,6 @@ dzn_image_layout_to_state(const struct dzn_image *image, VkImageLayout layout, VkImageAspectFlagBits aspect) { - /* Handle VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA separately to - * silence -Wswitch warnings (VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA is - * not part of the official VkImageLayout enum, it's a define in - * vk_render_pass.h) - */ - if (layout == VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA) - return D3D12_RESOURCE_STATE_COMMON; - D3D12_RESOURCE_STATES shaders_access = (image->desc.Flags & D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE) ? 0 : D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE; @@ -585,6 +577,9 @@ dzn_image_layout_to_state(const struct dzn_image *image, case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: return D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE; + case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: + return D3D12_RESOURCE_STATE_COMMON; + default: unreachable("not implemented"); } diff --git a/src/vulkan/runtime/vk_image.c b/src/vulkan/runtime/vk_image.c index c5610b79d5b..32a649acc63 100644 --- a/src/vulkan/runtime/vk_image.c +++ b/src/vulkan/runtime/vk_image.c @@ -557,14 +557,6 @@ vk_image_layout_is_read_only(VkImageLayout layout, case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL: case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wswitch" -#endif - case VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA: -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif return false; case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: @@ -712,14 +704,6 @@ vk_image_layout_to_usage_flags(VkImageLayout layout, return 0u; case VK_IMAGE_LAYOUT_GENERAL: -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wswitch" -#endif - case VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA: -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif return ~0u; case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: @@ -823,10 +807,19 @@ vk_image_layout_to_usage_flags(VkImageLayout layout, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: - return VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | - VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT; + if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT || + aspect == VK_IMAGE_ASPECT_STENCIL_BIT) { + return VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | + VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | + VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT; + } else { + assert(aspect == VK_IMAGE_ASPECT_COLOR_BIT); + return VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | + VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | + VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT; + } case VK_IMAGE_LAYOUT_MAX_ENUM: #ifdef VK_ENABLE_BETA_EXTENSIONS diff --git a/src/vulkan/runtime/vk_render_pass.c b/src/vulkan/runtime/vk_render_pass.c index 451c25670a4..c52a98f3367 100644 --- a/src/vulkan/runtime/vk_render_pass.c +++ b/src/vulkan/runtime/vk_render_pass.c @@ -615,9 +615,9 @@ vk_common_CreateRenderPass2(VkDevice _device, if (desc->pColorAttachments[c].attachment == desc->pInputAttachments[a].attachment) { subpass->input_attachments[a].layout = - VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA; + VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; subpass->color_attachments[c].layout = - VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA; + VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; color_self_deps |= (1u << c); } } @@ -629,16 +629,16 @@ vk_common_CreateRenderPass2(VkDevice _device, subpass->input_attachments[a].aspects; if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { subpass->input_attachments[a].layout = - VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA; + VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; subpass->depth_stencil_attachment->layout = - VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA; + VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; has_depth_self_dep = true; } if (aspects & VK_IMAGE_ASPECT_STENCIL_BIT) { subpass->input_attachments[a].stencil_layout = - VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA; + VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; subpass->depth_stencil_attachment->stencil_layout = - VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA; + VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT; has_stencil_self_dep = true; } } @@ -1142,14 +1142,7 @@ vk_image_layout_supports_input_attachment(VkImageLayout layout) case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wswitch" -#endif - case VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA: -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif + case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: return true; default: return false; diff --git a/src/vulkan/runtime/vk_render_pass.h b/src/vulkan/runtime/vk_render_pass.h index 181aebabc15..e041f44ab34 100644 --- a/src/vulkan/runtime/vk_render_pass.h +++ b/src/vulkan/runtime/vk_render_pass.h @@ -79,8 +79,6 @@ typedef struct VkRenderingAttachmentInitialLayoutInfoMESA { VkImageLayout initialLayout; } VkRenderingAttachmentInitialLayoutInfoMESA; -#define VK_IMAGE_LAYOUT_SUBPASS_SELF_DEPENDENCY_MESA (VkImageLayout)1000044902 - struct vk_subpass_attachment { /** VkAttachmentReference2::attachment */ uint32_t attachment;