Commit 9cc8c967 by Nicolas Capens

Refactor using concrete EGL object pointers.

Bug 20045861 Change-Id: I3dc737b5cc5759e487245030bfd8d871eacd8124 Reviewed-on: https://swiftshader-review.googlesource.com/2793Tested-by: 's avatarNicolas Capens <capn@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 6ed0304a
...@@ -192,7 +192,7 @@ void Display::terminate() ...@@ -192,7 +192,7 @@ void Display::terminate()
if(this == getCurrentDisplay()) if(this == getCurrentDisplay())
{ {
setCurrentDisplay(EGL_NO_DISPLAY); setCurrentDisplay(nullptr);
} }
} }
...@@ -442,12 +442,12 @@ void Display::destroySurface(egl::Surface *surface) ...@@ -442,12 +442,12 @@ void Display::destroySurface(egl::Surface *surface)
if(surface == getCurrentDrawSurface()) if(surface == getCurrentDrawSurface())
{ {
setCurrentDrawSurface(EGL_NO_SURFACE); setCurrentDrawSurface(nullptr);
} }
if(surface == getCurrentReadSurface()) if(surface == getCurrentReadSurface())
{ {
setCurrentReadSurface(EGL_NO_SURFACE); setCurrentReadSurface(nullptr);
} }
} }
...@@ -458,9 +458,9 @@ void Display::destroyContext(egl::Context *context) ...@@ -458,9 +458,9 @@ void Display::destroyContext(egl::Context *context)
if(context == getCurrentContext()) if(context == getCurrentContext())
{ {
setCurrentContext(EGL_NO_CONTEXT); setCurrentContext(nullptr);
setCurrentDrawSurface(EGL_NO_SURFACE); setCurrentDrawSurface(nullptr);
setCurrentReadSurface(EGL_NO_SURFACE); setCurrentReadSurface(nullptr);
} }
} }
......
...@@ -668,6 +668,8 @@ EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurfac ...@@ -668,6 +668,8 @@ EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurfac
egl::Display *display = static_cast<egl::Display*>(dpy); egl::Display *display = static_cast<egl::Display*>(dpy);
egl::Context *context = static_cast<egl::Context*>(ctx); egl::Context *context = static_cast<egl::Context*>(ctx);
egl::Surface *drawSurface = static_cast<egl::Surface*>(draw);
egl::Surface *readSurface = static_cast<egl::Surface*>(read);
if(ctx != EGL_NO_CONTEXT || draw != EGL_NO_SURFACE || read != EGL_NO_SURFACE) if(ctx != EGL_NO_CONTEXT || draw != EGL_NO_SURFACE || read != EGL_NO_SURFACE)
{ {
...@@ -687,8 +689,8 @@ EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurfac ...@@ -687,8 +689,8 @@ EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurfac
return EGL_FALSE; return EGL_FALSE;
} }
if((draw != EGL_NO_SURFACE && !validateSurface(display, static_cast<egl::Surface*>(draw))) || if((draw != EGL_NO_SURFACE && !validateSurface(display, drawSurface)) ||
(read != EGL_NO_SURFACE && !validateSurface(display, static_cast<egl::Surface*>(read)))) (read != EGL_NO_SURFACE && !validateSurface(display, readSurface)))
{ {
return EGL_FALSE; return EGL_FALSE;
} }
...@@ -703,14 +705,14 @@ EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurfac ...@@ -703,14 +705,14 @@ EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurfac
UNIMPLEMENTED(); // FIXME UNIMPLEMENTED(); // FIXME
} }
egl::setCurrentDisplay(dpy); egl::setCurrentDisplay(display);
egl::setCurrentDrawSurface(draw); egl::setCurrentDrawSurface(drawSurface);
egl::setCurrentReadSurface(read); egl::setCurrentReadSurface(readSurface);
egl::setCurrentContext(ctx); egl::setCurrentContext(context);
if(context) if(context)
{ {
context->makeCurrent(static_cast<egl::Surface*>(draw)); context->makeCurrent(drawSurface);
} }
return success(EGL_TRUE); return success(EGL_TRUE);
......
...@@ -40,10 +40,10 @@ static void eglAttachThread() ...@@ -40,10 +40,10 @@ static void eglAttachThread()
current->error = EGL_SUCCESS; current->error = EGL_SUCCESS;
current->API = EGL_OPENGL_ES_API; current->API = EGL_OPENGL_ES_API;
current->display = EGL_NO_DISPLAY; current->display = nullptr;
current->drawSurface = EGL_NO_SURFACE; current->context = nullptr;
current->readSurface = EGL_NO_SURFACE; current->drawSurface = nullptr;
current->context = EGL_NO_CONTEXT; current->readSurface = nullptr;
} }
} }
...@@ -241,56 +241,56 @@ EGLenum getCurrentAPI() ...@@ -241,56 +241,56 @@ EGLenum getCurrentAPI()
return current->API; return current->API;
} }
void setCurrentDisplay(EGLDisplay dpy) void setCurrentDisplay(egl::Display *dpy)
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
current->display = dpy; current->display = dpy;
} }
EGLDisplay getCurrentDisplay() egl::Display *getCurrentDisplay()
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
return current->display; return current->display;
} }
void setCurrentContext(EGLContext ctx) void setCurrentContext(egl::Context *ctx)
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
current->context = ctx; current->context = ctx;
} }
EGLContext getCurrentContext() egl::Context *getCurrentContext()
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
return current->context; return current->context;
} }
void setCurrentDrawSurface(EGLSurface surface) void setCurrentDrawSurface(egl::Surface *surface)
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
current->drawSurface = surface; current->drawSurface = surface;
} }
EGLSurface getCurrentDrawSurface() egl::Surface *getCurrentDrawSurface()
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
return current->drawSurface; return current->drawSurface;
} }
void setCurrentReadSurface(EGLSurface surface) void setCurrentReadSurface(egl::Surface *surface)
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
current->readSurface = surface; current->readSurface = surface;
} }
EGLSurface getCurrentReadSurface() egl::Surface *getCurrentReadSurface()
{ {
Current *current = eglGetCurrent(); Current *current = eglGetCurrent();
......
...@@ -20,14 +20,18 @@ ...@@ -20,14 +20,18 @@
namespace egl namespace egl
{ {
class Display;
class Context;
class Surface;
struct Current struct Current
{ {
EGLint error; EGLint error;
EGLenum API; EGLenum API;
EGLDisplay display; Display *display;
EGLContext context; Context *context;
EGLSurface drawSurface; Surface *drawSurface;
EGLSurface readSurface; Surface *readSurface;
}; };
void setCurrentError(EGLint error); void setCurrentError(EGLint error);
...@@ -36,17 +40,17 @@ namespace egl ...@@ -36,17 +40,17 @@ namespace egl
void setCurrentAPI(EGLenum API); void setCurrentAPI(EGLenum API);
EGLenum getCurrentAPI(); EGLenum getCurrentAPI();
void setCurrentDisplay(EGLDisplay dpy); void setCurrentDisplay(Display *dpy);
EGLDisplay getCurrentDisplay(); Display *getCurrentDisplay();
void setCurrentContext(EGLContext ctx); void setCurrentContext(Context *ctx);
EGLContext getCurrentContext(); Context *getCurrentContext();
void setCurrentDrawSurface(EGLSurface surface); void setCurrentDrawSurface(Surface *surface);
EGLSurface getCurrentDrawSurface(); Surface *getCurrentDrawSurface();
void setCurrentReadSurface(EGLSurface surface); void setCurrentReadSurface(Surface *surface);
EGLSurface getCurrentReadSurface(); Surface *getCurrentReadSurface();
} }
void error(EGLint errorCode); void error(EGLint errorCode);
......
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