From: Jason Ekstrand Date: Thu, 14 May 2015 05:13:05 +0000 (-0700) Subject: vk/pass: Emit a flushing pipe control at the end of the pass X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a1309c5255a6474a46a2d3f1c828c3f3071c760d;p=mesa.git 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. --- diff --git a/src/vulkan/device.c b/src/vulkan/device.c index d5eab4866d4..cf855a87387 100644 --- a/src/vulkan/device.c +++ b/src/vulkan/device.c @@ -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(); }