radv: Emit pending flushes before executing a secondary command buffer
If we have any pending flushes on the primary command buffer, these must be performed before executing the secondary buffer. This fixes potential corruption when the contents of a subpass which clears any of its render targets are given in a secondary buffer: the flushes after a fast clear would not have been performed until the vkCmdEndRenderPass call. Signed-off-by: Alex Smith <asmith@feralinteractive.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Cc: 13.0 17.0 <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
052c81faa1
commit
290d7e892d
|
@ -2110,6 +2110,9 @@ void radv_CmdExecuteCommands(
|
|||
{
|
||||
RADV_FROM_HANDLE(radv_cmd_buffer, primary, commandBuffer);
|
||||
|
||||
/* Emit pending flushes on primary prior to executing secondary */
|
||||
si_emit_cache_flush(primary);
|
||||
|
||||
for (uint32_t i = 0; i < commandBufferCount; i++) {
|
||||
RADV_FROM_HANDLE(radv_cmd_buffer, secondary, pCmdBuffers[i]);
|
||||
|
||||
|
|
Loading…
Reference in New Issue