Consider context promotion when validating share context We were comparing a pre-promotion version with the post-promotion version stored in the share context. This doesn't work. Affects: dEQP-EGL.functional.sharing.* Change-Id: I02c14681b7743c6aaef4404291ac52a48890832c Reviewed-on: https://swiftshader-review.googlesource.com/20368 Tested-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp index a4f078d..5c561b9 100644 --- a/src/OpenGL/libEGL/libEGL.cpp +++ b/src/OpenGL/libEGL/libEGL.cpp
@@ -865,7 +865,10 @@ return EGL_NO_CONTEXT; } - if(shareContext && shareContext->getClientVersion() != majorVersion) + // Allow sharing between different context versions >= 2.0, but isolate 1.x + // contexts from 2.0+. Strict matching between context versions >= 2.0 is + // confusing for apps to navigate because of version promotion. + if(shareContext && ((shareContext->getClientVersion() >= 2) ^ (majorVersion >= 2))) { return error(EGL_BAD_CONTEXT, EGL_NO_CONTEXT); }