vk: Add func anv_cmd_buffer_get_depth_stencil_view()
This function removes some duplicated code from genN_cmd_buffer_emit_depth_stencil().
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user