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 <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18084>
This commit is contained in:
Jason Ekstrand 2022-08-02 12:58:46 -05:00 committed by Marge Bot
parent 10de12d710
commit 7077b72d60
5 changed files with 25 additions and 46 deletions

View file

@ -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,

View file

@ -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");
}

View file

@ -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

View file

@ -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;

View file

@ -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;