Commit ebddd1a2 by Clemen Deng Committed by Commit Bot

implement core egl image entry points

Bug: angleproject:2467 Change-Id: Ica943a3972333e90a516aa6960f333cc9c378be2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1653714Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 169ef353
...@@ -85,6 +85,12 @@ Error ValidateCreatePbufferFromClientBuffer(Display *display, ...@@ -85,6 +85,12 @@ Error ValidateCreatePbufferFromClientBuffer(Display *display,
Error ValidateMakeCurrent(Display *display, Surface *draw, Surface *read, gl::Context *context); Error ValidateMakeCurrent(Display *display, Surface *draw, Surface *read, gl::Context *context);
Error ValidateCreateImage(const Display *display,
gl::Context *context,
EGLenum target,
EGLClientBuffer buffer,
const AttributeMap &attributes);
Error ValidateDestroyImage(const Display *display, const Image *image);
Error ValidateCreateImageKHR(const Display *display, Error ValidateCreateImageKHR(const Display *display,
gl::Context *context, gl::Context *context,
EGLenum target, EGLenum target,
......
...@@ -933,12 +933,28 @@ EGLImage EGLAPIENTRY EGL_CreateImage(EGLDisplay dpy, ...@@ -933,12 +933,28 @@ EGLImage EGLAPIENTRY EGL_CreateImage(EGLDisplay dpy,
", const EGLAttrib *attrib_list = 0x%016" PRIxPTR ")", ", const EGLAttrib *attrib_list = 0x%016" PRIxPTR ")",
(uintptr_t)dpy, (uintptr_t)ctx, target, (uintptr_t)buffer, (uintptr_t)attrib_list); (uintptr_t)dpy, (uintptr_t)ctx, target, (uintptr_t)buffer, (uintptr_t)attrib_list);
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
gl::Context *context = static_cast<gl::Context *>(ctx);
AttributeMap attributes = AttributeMap::CreateFromIntArray((const EGLint *)attrib_list);
UNIMPLEMENTED(); Error error = ValidateCreateImage(display, context, target, buffer, attributes);
thread->setError(EglBadDisplay() << "eglCreateImage unimplemented.", GetDebug(), if (error.isError())
"eglCreateImage", GetDisplayIfValid(display)); {
return EGL_NO_IMAGE; thread->setError(error, GetDebug(), "eglCreateImage", GetDisplayIfValid(display));
return EGL_NO_IMAGE;
}
Image *image = nullptr;
error = display->createImage(context, target, buffer, attributes, &image);
if (error.isError())
{
thread->setError(error, GetDebug(), "eglCreateImage", GetDisplayIfValid(display));
return EGL_NO_IMAGE;
}
thread->setSuccess();
return static_cast<EGLImage>(image);
} }
EGLBoolean EGLAPIENTRY EGL_DestroyImage(EGLDisplay dpy, EGLImage image) EGLBoolean EGLAPIENTRY EGL_DestroyImage(EGLDisplay dpy, EGLImage image)
...@@ -948,12 +964,19 @@ EGLBoolean EGLAPIENTRY EGL_DestroyImage(EGLDisplay dpy, EGLImage image) ...@@ -948,12 +964,19 @@ EGLBoolean EGLAPIENTRY EGL_DestroyImage(EGLDisplay dpy, EGLImage image)
(uintptr_t)dpy, (uintptr_t)image); (uintptr_t)dpy, (uintptr_t)image);
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
Image *eglImage = static_cast<Image *>(image); Image *img = static_cast<Image *>(image);
UNIMPLEMENTED(); Error error = ValidateDestroyImage(display, img);
thread->setError(EglBadDisplay() << "eglDestroyImage unimplemented.", GetDebug(), if (error.isError())
"eglDestroyImage", GetImageIfValid(display, eglImage)); {
return EGL_FALSE; thread->setError(error, GetDebug(), "eglDestroyImage", GetImageIfValid(display, img));
return EGL_FALSE;
}
display->destroyImage(img);
thread->setSuccess();
return EGL_TRUE;
} }
EGLDisplay EGLAPIENTRY EGL_GetPlatformDisplay(EGLenum platform, EGLDisplay EGLAPIENTRY EGL_GetPlatformDisplay(EGLenum platform,
......
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