Commit 629f66ce by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Fix missing dirty bits for compute

In the following scenario: - Dispatch - Flush outside render pass commands - Dispatch The second dispatch doesn't rebind the pipeline because it assumes it's recording to the same primary command buffer. This assumption is broken if another thread causes a submission before the second dispatch. It's also broken if using Vulkan secondary command buffers. Bug: b/181711029 Change-Id: I5335be95208f41724cf8e9c60ae5322ad91840fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2763143Reviewed-by: 's avatarIan Elliott <ianelliott@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent 3eace05c
......@@ -5304,6 +5304,10 @@ angle::Result ContextVk::flushOutsideRenderPassCommands()
ANGLE_TRY(mRenderer->flushOutsideRPCommands(this, &mOutsideRenderPassCommands));
// Make sure appropriate dirty bits are set, in case another thread makes a submission before
// the next dispatch call.
mComputeDirtyBits |= mNewComputeCommandBufferDirtyBits;
mPerfCounters.flushedOutsideRenderPassCommandBuffers++;
return angle::Result::Continue;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment