From: Chad Versace Date: Fri, 28 Aug 2015 14:57:34 +0000 (-0700) Subject: vk: Add func anv_cmd_buffer_get_depth_stencil_view() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aacb7bb9b6080ac6a0c9166d5a5b615c6425b821;p=mesa.git vk: Add func anv_cmd_buffer_get_depth_stencil_view() This function removes some duplicated code from genN_cmd_buffer_emit_depth_stencil(). --- diff --git a/src/vulkan/anv_cmd_buffer.c b/src/vulkan/anv_cmd_buffer.c index 963edcf06ca..f8a630bece5 100644 --- a/src/vulkan/anv_cmd_buffer.c +++ b/src/vulkan/anv_cmd_buffer.c @@ -783,3 +783,23 @@ VkResult anv_ResetCommandPool( return VK_SUCCESS; } + +/** + * Return NULL if the current subpass has no depthstencil attachment. + */ +const struct anv_depth_stencil_view * +anv_cmd_buffer_get_depth_stencil_view(const struct anv_cmd_buffer *cmd_buffer) +{ + const struct anv_subpass *subpass = cmd_buffer->state.subpass; + const struct anv_framebuffer *fb = cmd_buffer->state.framebuffer; + + if (subpass->depth_stencil_attachment == VK_ATTACHMENT_UNUSED) + return NULL; + + const struct anv_attachment_view *aview = + fb->attachments[subpass->depth_stencil_attachment]; + + assert(aview->attachment_type == ANV_ATTACHMENT_VIEW_TYPE_DEPTH_STENCIL); + + return (const struct anv_depth_stencil_view *) aview; +} diff --git a/src/vulkan/anv_private.h b/src/vulkan/anv_private.h index 5cbc67b7c2c..a27b2e5ed92 100644 --- a/src/vulkan/anv_private.h +++ b/src/vulkan/anv_private.h @@ -848,6 +848,8 @@ anv_cmd_buffer_push_constants(struct anv_cmd_buffer *cmd_buffer, void anv_cmd_buffer_clear_attachments(struct anv_cmd_buffer *cmd_buffer, struct anv_render_pass *pass, const VkClearValue *clear_values); +const struct anv_depth_stencil_view * +anv_cmd_buffer_get_depth_stencil_view(const struct anv_cmd_buffer *cmd_buffer); void anv_cmd_buffer_dump(struct anv_cmd_buffer *cmd_buffer); diff --git a/src/vulkan/gen7_cmd_buffer.c b/src/vulkan/gen7_cmd_buffer.c index e98fac1f4d3..8fe59bab1c8 100644 --- a/src/vulkan/gen7_cmd_buffer.c +++ b/src/vulkan/gen7_cmd_buffer.c @@ -528,17 +528,9 @@ void gen7_CmdPipelineBarrier( static void gen7_cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer) { - const struct anv_subpass *subpass = cmd_buffer->state.subpass; const struct anv_framebuffer *fb = cmd_buffer->state.framebuffer; - const struct anv_depth_stencil_view *view = NULL; - - if (subpass->depth_stencil_attachment != VK_ATTACHMENT_UNUSED) { - const struct anv_attachment_view *aview = - fb->attachments[subpass->depth_stencil_attachment]; - assert(aview->attachment_type == ANV_ATTACHMENT_VIEW_TYPE_DEPTH_STENCIL); - view = (const struct anv_depth_stencil_view *)aview; - } - + const struct anv_depth_stencil_view *view = + anv_cmd_buffer_get_depth_stencil_view(cmd_buffer); const struct anv_image *image = view ? view->image : NULL; const bool has_depth = view && view->format->depth_format; const bool has_stencil = view && view->format->has_stencil; diff --git a/src/vulkan/gen8_cmd_buffer.c b/src/vulkan/gen8_cmd_buffer.c index 87ec90e18aa..3a7f009dc66 100644 --- a/src/vulkan/gen8_cmd_buffer.c +++ b/src/vulkan/gen8_cmd_buffer.c @@ -458,17 +458,9 @@ void gen8_CmdDispatchIndirect( static void gen8_cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer) { - const struct anv_subpass *subpass = cmd_buffer->state.subpass; const struct anv_framebuffer *fb = cmd_buffer->state.framebuffer; - const struct anv_depth_stencil_view *view = NULL; - - if (subpass->depth_stencil_attachment != VK_ATTACHMENT_UNUSED) { - const struct anv_attachment_view *aview = - fb->attachments[subpass->depth_stencil_attachment]; - assert(aview->attachment_type == ANV_ATTACHMENT_VIEW_TYPE_DEPTH_STENCIL); - view = (const struct anv_depth_stencil_view *)aview; - } - + const struct anv_depth_stencil_view *view = + anv_cmd_buffer_get_depth_stencil_view(cmd_buffer); const struct anv_image *image = view ? view->image : NULL; const bool has_depth = view && view->format->depth_format; const bool has_stencil = view && view->format->has_stencil;