Commit af143fef by Geoff Lang Committed by Commit Bot

Refactor the eglQueryContext entry point.

BUG=angleproject:1635 Change-Id: Ia6ab5a2a7339d78912d7f871ed62941af1957eb1 Reviewed-on: https://chromium-review.googlesource.com/702856 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 000dab88
...@@ -1589,6 +1589,28 @@ void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value) ...@@ -1589,6 +1589,28 @@ void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value)
} }
} }
void QueryContextAttrib(const gl::Context *context, EGLint attribute, EGLint *value)
{
switch (attribute)
{
case EGL_CONFIG_ID:
*value = context->getConfig()->configID;
break;
case EGL_CONTEXT_CLIENT_TYPE:
*value = context->getClientType();
break;
case EGL_CONTEXT_CLIENT_VERSION:
*value = context->getClientMajorVersion();
break;
case EGL_RENDER_BUFFER:
*value = context->getRenderBuffer();
break;
default:
UNREACHABLE();
break;
}
}
void QuerySurfaceAttrib(const Surface *surface, EGLint attribute, EGLint *value) void QuerySurfaceAttrib(const Surface *surface, EGLint attribute, EGLint *value)
{ {
switch (attribute) switch (attribute)
......
...@@ -152,6 +152,8 @@ class Surface; ...@@ -152,6 +152,8 @@ class Surface;
void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value); void QueryConfigAttrib(const Config *config, EGLint attribute, EGLint *value);
void QueryContextAttrib(const gl::Context *context, EGLint attribute, EGLint *value);
void QuerySurfaceAttrib(const Surface *surface, EGLint attribute, EGLint *value); void QuerySurfaceAttrib(const Surface *surface, EGLint attribute, EGLint *value);
void SetSurfaceAttrib(Surface *surface, EGLint attribute, EGLint value); void SetSurfaceAttrib(Surface *surface, EGLint attribute, EGLint value);
......
...@@ -2433,4 +2433,27 @@ Error ValidateQuerySurface(const Display *display, ...@@ -2433,4 +2433,27 @@ Error ValidateQuerySurface(const Display *display,
return NoError(); return NoError();
} }
Error ValidateQueryContext(const Display *display,
const gl::Context *context,
EGLint attribute,
EGLint *value)
{
ANGLE_TRY(ValidateDisplay(display));
ANGLE_TRY(ValidateContext(display, context));
switch (attribute)
{
case EGL_CONFIG_ID:
case EGL_CONTEXT_CLIENT_TYPE:
case EGL_CONTEXT_CLIENT_VERSION:
case EGL_RENDER_BUFFER:
break;
default:
return EglBadAttribute() << "Invalid context attribute.";
}
return NoError();
}
} // namespace egl } // namespace egl
...@@ -155,6 +155,10 @@ Error ValidateQuerySurface(const Display *display, ...@@ -155,6 +155,10 @@ Error ValidateQuerySurface(const Display *display,
const Surface *surface, const Surface *surface,
EGLint attribute, EGLint attribute,
EGLint *value); EGLint *value);
Error ValidateQueryContext(const Display *display,
const gl::Context *context,
EGLint attribute,
EGLint *value);
} // namespace egl } // namespace egl
......
...@@ -574,31 +574,14 @@ EGLBoolean EGLAPIENTRY QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attri ...@@ -574,31 +574,14 @@ EGLBoolean EGLAPIENTRY QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attri
Display *display = static_cast<Display *>(dpy); Display *display = static_cast<Display *>(dpy);
gl::Context *context = static_cast<gl::Context *>(ctx); gl::Context *context = static_cast<gl::Context *>(ctx);
Error error = ValidateContext(display, context); Error error = ValidateQueryContext(display, context, attribute, value);
if (error.isError()) if (error.isError())
{ {
thread->setError(error); thread->setError(error);
return EGL_FALSE; return EGL_FALSE;
} }
switch (attribute) QueryContextAttrib(context, attribute, value);
{
case EGL_CONFIG_ID:
*value = context->getConfig()->configID;
break;
case EGL_CONTEXT_CLIENT_TYPE:
*value = context->getClientType();
break;
case EGL_CONTEXT_CLIENT_VERSION:
*value = context->getClientMajorVersion();
break;
case EGL_RENDER_BUFFER:
*value = context->getRenderBuffer();
break;
default:
thread->setError(EglBadAttribute());
return EGL_FALSE;
}
thread->setError(NoError()); thread->setError(NoError());
return EGL_TRUE; return EGL_TRUE;
......
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