egl: Initialize display resources with their display.
Change _eglInitSurface, _eglInitContext, and _eglInitImage to take an _EGLDisplay instead of an _EGLDriver. This is a more natural form, and plus, the display encodes information such as the extensions supported that might be required for attribute list parsing.
This commit is contained in:
@@ -605,7 +605,7 @@ GLX_eglCreateContext(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitContext(drv, &GLX_ctx->Base, conf, attrib_list)) {
|
if (!_eglInitContext(&GLX_ctx->Base, disp, conf, attrib_list)) {
|
||||||
free(GLX_ctx);
|
free(GLX_ctx);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -720,7 +720,7 @@ GLX_eglCreateWindowSurface(_EGLDriver *drv, _EGLDisplay *disp,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &GLX_surf->Base, EGL_WINDOW_BIT,
|
if (!_eglInitSurface(&GLX_surf->Base, disp, EGL_WINDOW_BIT,
|
||||||
conf, attrib_list)) {
|
conf, attrib_list)) {
|
||||||
free(GLX_surf);
|
free(GLX_surf);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -766,7 +766,7 @@ GLX_eglCreatePixmapSurface(_EGLDriver *drv, _EGLDisplay *disp,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &GLX_surf->Base, EGL_PIXMAP_BIT,
|
if (!_eglInitSurface(&GLX_surf->Base, disp, EGL_PIXMAP_BIT,
|
||||||
conf, attrib_list)) {
|
conf, attrib_list)) {
|
||||||
free(GLX_surf);
|
free(GLX_surf);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -826,7 +826,7 @@ GLX_eglCreatePbufferSurface(_EGLDriver *drv, _EGLDisplay *disp,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &GLX_surf->Base, EGL_PBUFFER_BIT,
|
if (!_eglInitSurface(&GLX_surf->Base, disp, EGL_PBUFFER_BIT,
|
||||||
conf, attrib_list)) {
|
conf, attrib_list)) {
|
||||||
free(GLX_surf);
|
free(GLX_surf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@@ -391,7 +391,7 @@ xdri_eglCreateContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitContext(drv, &xdri_ctx->Base, &xdri_config->Base, attrib_list)) {
|
if (!_eglInitContext(&xdri_ctx->Base, dpy, &xdri_config->Base, attrib_list)) {
|
||||||
free(xdri_ctx->dummy_gc);
|
free(xdri_ctx->dummy_gc);
|
||||||
free(xdri_ctx);
|
free(xdri_ctx);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -529,7 +529,7 @@ xdri_eglCreateWindowSurface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &xdri_surf->Base, EGL_WINDOW_BIT,
|
if (!_eglInitSurface(&xdri_surf->Base, dpy, EGL_WINDOW_BIT,
|
||||||
&xdri_config->Base, attrib_list)) {
|
&xdri_config->Base, attrib_list)) {
|
||||||
free(xdri_surf);
|
free(xdri_surf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@@ -101,8 +101,8 @@ _eglParseContextAttribList(_EGLContext *ctx, const EGLint *attrib_list)
|
|||||||
* in the attrib_list.
|
* in the attrib_list.
|
||||||
*/
|
*/
|
||||||
EGLBoolean
|
EGLBoolean
|
||||||
_eglInitContext(_EGLDriver *drv, _EGLContext *ctx,
|
_eglInitContext(_EGLContext *ctx, _EGLDisplay *dpy, _EGLConfig *conf,
|
||||||
_EGLConfig *conf, const EGLint *attrib_list)
|
const EGLint *attrib_list)
|
||||||
{
|
{
|
||||||
const EGLenum api = eglQueryAPI();
|
const EGLenum api = eglQueryAPI();
|
||||||
EGLint err;
|
EGLint err;
|
||||||
@@ -113,6 +113,7 @@ _eglInitContext(_EGLDriver *drv, _EGLContext *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(ctx, 0, sizeof(_EGLContext));
|
memset(ctx, 0, sizeof(_EGLContext));
|
||||||
|
ctx->Resource.Display = dpy;
|
||||||
ctx->ClientAPI = api;
|
ctx->ClientAPI = api;
|
||||||
ctx->Config = conf;
|
ctx->Config = conf;
|
||||||
ctx->WindowRenderBuffer = EGL_NONE;
|
ctx->WindowRenderBuffer = EGL_NONE;
|
||||||
|
@@ -30,7 +30,7 @@ struct _egl_context
|
|||||||
|
|
||||||
|
|
||||||
PUBLIC EGLBoolean
|
PUBLIC EGLBoolean
|
||||||
_eglInitContext(_EGLDriver *drv, _EGLContext *ctx,
|
_eglInitContext(_EGLContext *ctx, _EGLDisplay *dpy,
|
||||||
_EGLConfig *config, const EGLint *attrib_list);
|
_EGLConfig *config, const EGLint *attrib_list);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -44,11 +44,12 @@ _eglParseImageAttribList(_EGLImage *img, const EGLint *attrib_list)
|
|||||||
|
|
||||||
|
|
||||||
EGLBoolean
|
EGLBoolean
|
||||||
_eglInitImage(_EGLDriver *drv, _EGLImage *img, const EGLint *attrib_list)
|
_eglInitImage(_EGLImage *img, _EGLDisplay *dpy, const EGLint *attrib_list)
|
||||||
{
|
{
|
||||||
EGLint err;
|
EGLint err;
|
||||||
|
|
||||||
memset(img, 0, sizeof(_EGLImage));
|
memset(img, 0, sizeof(_EGLImage));
|
||||||
|
img->Resource.Display = dpy;
|
||||||
|
|
||||||
img->Preserved = EGL_FALSE;
|
img->Preserved = EGL_FALSE;
|
||||||
|
|
||||||
|
@@ -19,7 +19,7 @@ struct _egl_image
|
|||||||
|
|
||||||
|
|
||||||
PUBLIC EGLBoolean
|
PUBLIC EGLBoolean
|
||||||
_eglInitImage(_EGLDriver *drv, _EGLImage *img, const EGLint *attrib_list);
|
_eglInitImage(_EGLImage *img, _EGLDisplay *dpy, const EGLint *attrib_list);
|
||||||
|
|
||||||
|
|
||||||
extern _EGLImage *
|
extern _EGLImage *
|
||||||
|
@@ -167,7 +167,7 @@ _eglParseSurfaceAttribList(_EGLSurface *surf, const EGLint *attrib_list)
|
|||||||
* \return EGL_TRUE if no errors, EGL_FALSE otherwise.
|
* \return EGL_TRUE if no errors, EGL_FALSE otherwise.
|
||||||
*/
|
*/
|
||||||
EGLBoolean
|
EGLBoolean
|
||||||
_eglInitSurface(_EGLDriver *drv, _EGLSurface *surf, EGLint type,
|
_eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type,
|
||||||
_EGLConfig *conf, const EGLint *attrib_list)
|
_EGLConfig *conf, const EGLint *attrib_list)
|
||||||
{
|
{
|
||||||
const char *func;
|
const char *func;
|
||||||
@@ -201,6 +201,7 @@ _eglInitSurface(_EGLDriver *drv, _EGLSurface *surf, EGLint type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(surf, 0, sizeof(_EGLSurface));
|
memset(surf, 0, sizeof(_EGLSurface));
|
||||||
|
surf->Resource.Display = dpy;
|
||||||
surf->Type = type;
|
surf->Type = type;
|
||||||
surf->Config = conf;
|
surf->Config = conf;
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ struct _egl_surface
|
|||||||
|
|
||||||
|
|
||||||
PUBLIC EGLBoolean
|
PUBLIC EGLBoolean
|
||||||
_eglInitSurface(_EGLDriver *drv, _EGLSurface *surf, EGLint type,
|
_eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type,
|
||||||
_EGLConfig *config, const EGLint *attrib_list);
|
_EGLConfig *config, const EGLint *attrib_list);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -631,7 +631,7 @@ egl_g3d_create_context(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitContext(drv, &gctx->base, conf, attribs)) {
|
if (!_eglInitContext(&gctx->base, dpy, conf, attribs)) {
|
||||||
free(gctx);
|
free(gctx);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -713,7 +713,7 @@ egl_g3d_create_window_surface(_EGLDriver *drv, _EGLDisplay *dpy,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &gsurf->base, EGL_WINDOW_BIT, conf, attribs)) {
|
if (!_eglInitSurface(&gsurf->base, dpy, EGL_WINDOW_BIT, conf, attribs)) {
|
||||||
free(gsurf);
|
free(gsurf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -753,7 +753,7 @@ egl_g3d_create_pixmap_surface(_EGLDriver *drv, _EGLDisplay *dpy,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &gsurf->base, EGL_PIXMAP_BIT, conf, attribs)) {
|
if (!_eglInitSurface(&gsurf->base, dpy, EGL_PIXMAP_BIT, conf, attribs)) {
|
||||||
free(gsurf);
|
free(gsurf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -790,7 +790,7 @@ egl_g3d_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *dpy,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &gsurf->base, EGL_PBUFFER_BIT, conf, attribs)) {
|
if (!_eglInitSurface(&gsurf->base, dpy, EGL_PBUFFER_BIT, conf, attribs)) {
|
||||||
free(gsurf);
|
free(gsurf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -1180,7 +1180,7 @@ egl_g3d_create_screen_surface(_EGLDriver *drv, _EGLDisplay *dpy,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_eglInitSurface(drv, &gsurf->base,
|
if (!_eglInitSurface(&gsurf->base, dpy,
|
||||||
EGL_SCREEN_BIT_MESA, conf, attribs)) {
|
EGL_SCREEN_BIT_MESA, conf, attribs)) {
|
||||||
free(gsurf);
|
free(gsurf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Reference in New Issue
Block a user