Commit 8896e18e by jchen10 Committed by Commit Bot

Fix the missing global memory barriers

This adds the transtlations of GL_SHADER_IMAGE_ACCESS_BARRIER_BIT, and GL_FRAMEBUFEER_BARRIER_BIT to the vulkan backend. Bug: angleproject:3934 Change-Id: I2bd86a16b461cf7dc01d0d4386f49365a5292446 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1847172 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent ee08d924
...@@ -2551,6 +2551,21 @@ angle::Result ContextVk::memoryBarrier(const gl::Context *context, GLbitfield ba ...@@ -2551,6 +2551,21 @@ angle::Result ContextVk::memoryBarrier(const gl::Context *context, GLbitfield ba
dstAccess |= VK_ACCESS_INDIRECT_COMMAND_READ_BIT; dstAccess |= VK_ACCESS_INDIRECT_COMMAND_READ_BIT;
} }
if ((barriers & GL_SHADER_IMAGE_ACCESS_BARRIER_BIT) != 0)
{
srcAccess |= (VK_ACCESS_SHADER_WRITE_BIT | VK_ACCESS_SHADER_READ_BIT);
dstAccess |= (VK_ACCESS_SHADER_WRITE_BIT | VK_ACCESS_SHADER_READ_BIT);
}
if ((barriers & GL_FRAMEBUFFER_BARRIER_BIT) != 0)
{
srcAccess |=
(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT);
dstAccess |=
(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT);
}
mCommandGraph.memoryBarrier(srcAccess, dstAccess, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); mCommandGraph.memoryBarrier(srcAccess, dstAccess, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
return angle::Result::Continue; return angle::Result::Continue;
} }
......
...@@ -2736,8 +2736,6 @@ TEST_P(ComputeShaderTest, UniformDirty) ...@@ -2736,8 +2736,6 @@ TEST_P(ComputeShaderTest, UniformDirty)
{ {
// glReadPixels is getting the result of the first dispatch call. http://anglebug.com/3879 // glReadPixels is getting the result of the first dispatch call. http://anglebug.com/3879
ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && (IsAMD() || IsNVIDIA())); ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && (IsAMD() || IsNVIDIA()));
// Flaky on Linux FYI Release (Intel HD 630). http://anglebug.com/3934
ANGLE_SKIP_TEST_IF(IsVulkan() && IsLinux() && IsIntel());
GLTexture texture[2]; GLTexture texture[2];
GLFramebuffer framebuffer; GLFramebuffer framebuffer;
......
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