Module: Mesa Branch: staging/18.2 Commit: ab5990fe825d4c0c89cbdef668f1b625a1bc24d5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab5990fe825d4c0c89cbdef668f1b625a1bc24d5
Author: Emil Velikov <emil.veli...@collabora.com> Date: Fri Nov 2 18:34:19 2018 +0000 egl/glvnd: correctly report errors when vendor cannot be found If the user provides an invalid display or device the ToVendor lookup will fail. In this case, the local [Mesa vendor] error code will be set. Thus on sequential eglGetError(), the error will be EGL_SUCCESS. To be more specific, GLVND remembers the last vendor and calls back into it's eglGetError, although there's no guarantee to ever have had one. v2: - Add _eglError call, so the debug callback is executed (Kyle) - Drop XXX comment. Piglit: tests/egl/spec/egl_ext_device_query Fixes: ce562f9e3fa ("EGL: Implement the libglvnd interface for EGL (v3)") Cc: Eric Engestrom <e...@engestrom.ch> Signed-off-by: Emil Velikov <emil.veli...@collabora.com> Reviewed-by: Kyle Brenneman <kbrenne...@nvidia.com> (cherry picked from commit b3ade6538798ad9bf397d8b386eab3dd8af57f3d) --- src/egl/main/egldispatchstubs.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/egl/main/egldispatchstubs.c b/src/egl/main/egldispatchstubs.c index bfc3195c77..96708aeb0d 100644 --- a/src/egl/main/egldispatchstubs.c +++ b/src/egl/main/egldispatchstubs.c @@ -59,6 +59,11 @@ static __eglMustCastToProperFunctionPointerType FetchVendorFunc(__EGLvendorInfo } if (func == NULL) { if (errorCode != EGL_SUCCESS) { + // Since we have no vendor, the follow-up eglGetError() call will + // end up using the GLVND error code. Set it here. + if (vendor == NULL) { + exports->setEGLError(errorCode); + } _eglError(errorCode, __EGL_DISPATCH_FUNC_NAMES[index]); } return NULL; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit