mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 03:48:06 +02:00
egl/android: Fix error condition for EGL_ANDROID_image_native_buffer
Emit EGL_BAD_CONTEXT if the user passes a context to
eglCreateImageKHR(type=EGL_ANDROID_image_native_buffer).
From the EGL_ANDROID_image_native_buffer spec:
* If <target> is EGL_NATIVE_BUFFER_ANDROID and <ctx> is not
EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
Note: This is a candidate for the stable branches.
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
parent
38d2a16c01
commit
2878f4685c
1 changed files with 14 additions and 2 deletions
|
|
@ -334,7 +334,7 @@ droid_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
|
|||
}
|
||||
|
||||
static _EGLImage *
|
||||
dri2_create_image_android_native_buffer(_EGLDisplay *disp,
|
||||
dri2_create_image_android_native_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
struct ANativeWindowBuffer *buf)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
|
|
@ -342,6 +342,18 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
|
|||
int name;
|
||||
EGLint format;
|
||||
|
||||
if (ctx != NULL) {
|
||||
/* From the EGL_ANDROID_image_native_buffer spec:
|
||||
*
|
||||
* * If <target> is EGL_NATIVE_BUFFER_ANDROID and <ctx> is not
|
||||
* EGL_NO_CONTEXT, the error EGL_BAD_CONTEXT is generated.
|
||||
*/
|
||||
_eglError(EGL_BAD_CONTEXT, "eglCreateEGLImageKHR: for "
|
||||
"EGL_NATIVE_BUFFER_ANDROID, the context must be "
|
||||
"EGL_NO_CONTEXT");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!buf || buf->common.magic != ANDROID_NATIVE_BUFFER_MAGIC ||
|
||||
buf->common.version != sizeof(*buf)) {
|
||||
_eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
|
||||
|
|
@ -413,7 +425,7 @@ droid_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
|
|||
{
|
||||
switch (target) {
|
||||
case EGL_NATIVE_BUFFER_ANDROID:
|
||||
return dri2_create_image_android_native_buffer(disp,
|
||||
return dri2_create_image_android_native_buffer(disp, ctx,
|
||||
(struct ANativeWindowBuffer *) buffer);
|
||||
default:
|
||||
return dri2_create_image_khr(drv, disp, ctx, target, buffer, attr_list);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue