anv/meta_clear: Call emit_clear directly in ClearImage

Using the load op means that we end up with recursive meta.  We shouldn't
be doing that.
This commit is contained in:
Jason Ekstrand
2016-01-19 15:52:03 -08:00
parent 6325a75011
commit 46eef31311
+19 -11
View File
@@ -888,18 +888,9 @@ anv_cmd_clear_image(struct anv_cmd_buffer *cmd_buffer,
};
if (range->aspectMask & VK_IMAGE_ASPECT_COLOR_BIT) {
att_desc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
subpass_desc.colorAttachmentCount = 1;
subpass_desc.pColorAttachments = &att_ref;
} else {
if (range->aspectMask & VK_IMAGE_ASPECT_DEPTH_BIT) {
att_desc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
}
if (range->aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT) {
att_desc.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
}
subpass_desc.pDepthStencilAttachment = &att_ref;
}
@@ -927,11 +918,28 @@ anv_cmd_clear_image(struct anv_cmd_buffer *cmd_buffer,
},
.renderPass = pass,
.framebuffer = fb,
.clearValueCount = 1,
.pClearValues = clear_value,
.clearValueCount = 0,
.pClearValues = NULL,
},
VK_SUBPASS_CONTENTS_INLINE);
VkClearAttachment clear_att = {
.aspectMask = range->aspectMask,
.colorAttachment = 0,
.clearValue = *clear_value,
};
VkClearRect clear_rect = {
.rect = {
.offset = { 0, 0 },
.extent = { iview.extent.width, iview.extent.height },
},
.baseArrayLayer = range->baseArrayLayer,
.layerCount = 1, /* FINISHME: clear multi-layer framebuffer */
};
emit_clear(cmd_buffer, &clear_att, &clear_rect);
ANV_CALL(CmdEndRenderPass)(anv_cmd_buffer_to_handle(cmd_buffer));
ANV_CALL(DestroyRenderPass)(device_h, pass,
&cmd_buffer->pool->alloc);