vk/pass: Emit a flushing pipe control at the end of the pass

This is rather crude but it at least makes sure that all the render targets
get flushed at the end of the pass.  We probably actually want to do
somthing based on image layout traansitions, but this will work for now.
This commit is contained in:
Jason Ekstrand
2015-05-13 22:13:05 -07:00
parent 07943656a7
commit a1309c5255

View File

@@ -2774,5 +2774,20 @@ void VKAPI vkCmdEndRenderPass(
VkCmdBuffer cmdBuffer,
VkRenderPass renderPass)
{
/* Emit a flushing pipe control at the end of a pass. This is kind of a
* hack but it ensures that render targets always actually get written.
* Eventually, we should do flushing based on image format transitions
* or something of that nature.
*/
struct anv_cmd_buffer *cmd_buffer = (struct anv_cmd_buffer *)cmdBuffer;
anv_batch_emit(&cmd_buffer->batch, GEN8_PIPE_CONTROL,
.PostSyncOperation = NoWrite,
.RenderTargetCacheFlushEnable = true,
.InstructionCacheInvalidateEnable = true,
.DepthCacheFlushEnable = true,
.VFCacheInvalidationEnable = true,
.TextureCacheInvalidationEnable = true,
.CommandStreamerStallEnable = true);
stub();
}