Always check for GL_ARB_sync

Previously, this was only checked for desktop GL, not for GLES. With [1], ANGLE
now exposes GL_ARB_sync for GLES, so we should extend the check. Also always
check for GL_APPLE_sync for consistency. It's technically out-of-spec for
GL_ARB_sync to exist outside of desktop GL, and for GL_APPLE_sync to exist
outside of GLES, but if the platform is listing the extensions, we should expect
them to work anyway.

Bug: chromium: 1028799
Change-Id: I411d2f106df0a2d7eb9b288053478ee79e060b81
R: reed@google.com
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/257693
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This commit is contained in:
Tom Anderson 2019-12-03 18:33:40 -08:00 committed by Skia Commit-Bot
parent 7e9dc42228
commit 4a213018b4

View File

@ -631,14 +631,17 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
}
// TODO: support CHROMIUM_sync_point and maybe KHR_fence_sync
if (GR_IS_GR_GL(standard)) {
fFenceSyncSupport = (version >= GR_GL_VER(3, 2) || ctxInfo.hasExtension("GL_ARB_sync"));
if (ctxInfo.hasExtension("GL_ARB_sync") || ctxInfo.hasExtension("GL_APPLE_sync")) {
fFenceSyncSupport = true;
} else if (GR_IS_GR_GL(standard)) {
fFenceSyncSupport = (version >= GR_GL_VER(3, 2));
} else if (GR_IS_GR_GL_ES(standard)) {
fFenceSyncSupport = (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_APPLE_sync"));
fFenceSyncSupport = (version >= GR_GL_VER(3, 0));
} else if (GR_IS_GR_WEBGL(standard)) {
// Only in WebGL 2.0
fFenceSyncSupport = version >= GR_GL_VER(2, 0);
}
// The same objects (GL sync objects) are used to implement GPU/CPU fence syncs and GPU/GPU
// semaphores.
fSemaphoreSupport = fFenceSyncSupport;