Browse Source

egl: Add support for querying render buffer.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
tags/mesa_7_7_rc1
Chia-I Wu 16 years ago
parent
commit
d845f2754b
2 changed files with 36 additions and 7 deletions
  1. 33
    7
      src/egl/main/eglcontext.c
  2. 3
    0
      src/egl/main/eglcontext.h

+ 33
- 7
src/egl/main/eglcontext.c View File

ctx->DrawSurface = EGL_NO_SURFACE; ctx->DrawSurface = EGL_NO_SURFACE;
ctx->ReadSurface = EGL_NO_SURFACE; ctx->ReadSurface = EGL_NO_SURFACE;
ctx->ClientAPI = api; ctx->ClientAPI = api;
ctx->WindowRenderBuffer = EGL_NONE;


return EGL_TRUE; return EGL_TRUE;
} }
} }




#ifdef EGL_VERSION_1_2
static EGLint
_eglQueryContextRenderBuffer(_EGLContext *ctx)
{
_EGLSurface *surf = ctx->DrawSurface;
EGLint rb;

if (!surf)
return EGL_NONE;
if (surf->Type == EGL_WINDOW_BIT && ctx->WindowRenderBuffer != EGL_NONE)
rb = ctx->WindowRenderBuffer;
else
rb = surf->RenderBuffer;
return rb;
}
#endif /* EGL_VERSION_1_2 */


EGLBoolean EGLBoolean
_eglQueryContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *c, _eglQueryContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *c,
EGLint attribute, EGLint *value) EGLint attribute, EGLint *value)
(void) drv; (void) drv;
(void) dpy; (void) dpy;


if (!value)
return _eglError(EGL_BAD_PARAMETER, "eglQueryContext");

switch (attribute) { switch (attribute) {
case EGL_CONFIG_ID: case EGL_CONFIG_ID:
*value = GET_CONFIG_ATTRIB(c->Config, EGL_CONFIG_ID); *value = GET_CONFIG_ATTRIB(c->Config, EGL_CONFIG_ID);
return EGL_TRUE;
break;
case EGL_CONTEXT_CLIENT_VERSION:
*value = c->ClientVersion;
break;
#ifdef EGL_VERSION_1_2 #ifdef EGL_VERSION_1_2
case EGL_CONTEXT_CLIENT_TYPE: case EGL_CONTEXT_CLIENT_TYPE:
*value = c->ClientAPI; *value = c->ClientAPI;
return EGL_TRUE;
break;
case EGL_RENDER_BUFFER:
*value = _eglQueryContextRenderBuffer(c);
break;
#endif /* EGL_VERSION_1_2 */ #endif /* EGL_VERSION_1_2 */
case EGL_CONTEXT_CLIENT_VERSION:
*value = c->ClientVersion;
return EGL_TRUE;
default: default:
_eglError(EGL_BAD_ATTRIBUTE, "eglQueryContext");
return EGL_FALSE;
return _eglError(EGL_BAD_ATTRIBUTE, "eglQueryContext");
} }

return EGL_TRUE;
} }





+ 3
- 0
src/egl/main/eglcontext.h View File



EGLint ClientAPI; /**< EGL_OPENGL_ES_API, EGL_OPENGL_API, EGL_OPENVG_API */ EGLint ClientAPI; /**< EGL_OPENGL_ES_API, EGL_OPENGL_API, EGL_OPENVG_API */
EGLint ClientVersion; /**< 1 = OpenGLES 1.x, 2 = OpenGLES 2.x */ EGLint ClientVersion; /**< 1 = OpenGLES 1.x, 2 = OpenGLES 2.x */

/* The real render buffer when a window surface is bound */
EGLint WindowRenderBuffer;
}; };





Loading…
Cancel
Save