From 8aca1dfa7508b087612596f45edb1d3974b8624b Mon Sep 17 00:00:00 2001 From: Nicolas Capens Date: Thu, 15 Jun 2017 14:15:30 -0700 Subject: [PATCH] Fix resetting current display when no current context. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bug swiftshader:65 Change-Id: I8454538d144ed37a56b98c46ed1e88ffdced387e Reviewed-on: https://swiftshader-review.googlesource.com/10188 Tested-by: Nicolas Capens Reviewed-by: Alexis Hétu Reviewed-by: Nicolas Capens --- src/OpenGL/libEGL/Context.hpp | 2 ++ src/OpenGL/libEGL/libEGL.cpp | 10 ++++++++-- src/OpenGL/libEGL/main.cpp | 15 --------------- src/OpenGL/libEGL/main.h | 4 ---- tests/unittests/unittests.cpp | 11 +++-------- 5 files changed, 13 insertions(+), 29 deletions(-) diff --git a/src/OpenGL/libEGL/Context.hpp b/src/OpenGL/libEGL/Context.hpp index acf06cefe..c96869089 100644 --- a/src/OpenGL/libEGL/Context.hpp +++ b/src/OpenGL/libEGL/Context.hpp @@ -38,6 +38,8 @@ public: virtual EGLint getConfigID() const = 0; virtual void finish() = 0; + Display *getDisplay() const { return display; } + protected: Context(egl::Display *display) : display(display) {} virtual ~Context() {}; diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp index 979691e31..c7a412740 100644 --- a/src/OpenGL/libEGL/libEGL.cpp +++ b/src/OpenGL/libEGL/libEGL.cpp @@ -810,7 +810,6 @@ EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLCont UNIMPLEMENTED(); // FIXME } - egl::setCurrentDisplay(dpy); egl::setCurrentDrawSurface(drawSurface); egl::setCurrentReadSurface(readSurface); egl::setCurrentContext(context); @@ -856,7 +855,14 @@ EGLDisplay GetCurrentDisplay(void) { TRACE("()"); - return success(egl::getCurrentDisplay()); + egl::Context *context = egl::getCurrentContext(); + + if(!context) + { + return success(EGL_NO_DISPLAY); + } + + return success(context->getDisplay()); } EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value) diff --git a/src/OpenGL/libEGL/main.cpp b/src/OpenGL/libEGL/main.cpp index 8aa958262..1df31c583 100644 --- a/src/OpenGL/libEGL/main.cpp +++ b/src/OpenGL/libEGL/main.cpp @@ -51,7 +51,6 @@ void attachThread() current->error = EGL_SUCCESS; current->API = EGL_OPENGL_ES_API; - current->display = EGL_NO_DISPLAY; current->context = nullptr; current->drawSurface = nullptr; current->readSurface = nullptr; @@ -211,20 +210,6 @@ EGLenum getCurrentAPI() return current->API; } -void setCurrentDisplay(EGLDisplay dpy) -{ - Current *current = getCurrent(); - - current->display = dpy; -} - -EGLDisplay getCurrentDisplay() -{ - Current *current = getCurrent(); - - return current->display; -} - void setCurrentContext(egl::Context *ctx) { Current *current = getCurrent(); diff --git a/src/OpenGL/libEGL/main.h b/src/OpenGL/libEGL/main.h index 25b9ecfbc..a2a8f440c 100644 --- a/src/OpenGL/libEGL/main.h +++ b/src/OpenGL/libEGL/main.h @@ -35,7 +35,6 @@ namespace egl { EGLint error; EGLenum API; - EGLDisplay display; Context *context; Surface *drawSurface; Surface *readSurface; @@ -49,9 +48,6 @@ namespace egl void setCurrentAPI(EGLenum API); EGLenum getCurrentAPI(); - void setCurrentDisplay(EGLDisplay dpy); - EGLDisplay getCurrentDisplay(); - void setCurrentContext(Context *ctx); Context *getCurrentContext(); diff --git a/tests/unittests/unittests.cpp b/tests/unittests/unittests.cpp index f363756d2..d93123bc5 100644 --- a/tests/unittests/unittests.cpp +++ b/tests/unittests/unittests.cpp @@ -39,11 +39,6 @@ protected: } }; -TEST_F(SwiftShaderTest, CompilationOnly) -{ - // Empty test to trigger compilation of SwiftShader on build bots -} - TEST_F(SwiftShaderTest, Initalization) { EXPECT_EQ(EGL_SUCCESS, eglGetError()); @@ -162,9 +157,9 @@ TEST_F(SwiftShaderTest, Initalization) EXPECT_EQ(EGL_SUCCESS, eglGetError()); EXPECT_EQ((EGLBoolean)EGL_TRUE, success); -// currentDisplay = eglGetCurrentDisplay(); -// EXPECT_EQ(EGL_SUCCESS, eglGetError()); -// EXPECT_EQ(EGL_NO_DISPLAY, currentDisplay); + currentDisplay = eglGetCurrentDisplay(); + EXPECT_EQ(EGL_SUCCESS, eglGetError()); + EXPECT_EQ(EGL_NO_DISPLAY, currentDisplay); currentDrawSurface = eglGetCurrentSurface(EGL_DRAW); EXPECT_EQ(EGL_SUCCESS, eglGetError()); -- 2.11.0