mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
egl: add eglCreateImage (v2)
v2: - use calloc
- return BAD_ALLOC if calloc fails
Reviewed-by: Chad Versace <chad.versace@intel.com>
This commit is contained in:
parent
1e79e054e7
commit
515f04ed6f
1 changed files with 42 additions and 0 deletions
|
|
@ -251,6 +251,31 @@ _eglUnlockDisplay(_EGLDisplay *dpy)
|
|||
}
|
||||
|
||||
|
||||
static EGLint *
|
||||
_eglConvertAttribsToInt(const EGLAttrib *attr_list)
|
||||
{
|
||||
EGLint *int_attribs = NULL;
|
||||
|
||||
/* Convert attributes from EGLAttrib[] to EGLint[] */
|
||||
if (attr_list) {
|
||||
int i, size = 0;
|
||||
|
||||
while (attr_list[size] != EGL_NONE)
|
||||
size += 2;
|
||||
|
||||
size += 1; /* add space for EGL_NONE */
|
||||
|
||||
int_attribs = calloc(size, sizeof(int_attribs[0]));
|
||||
if (!int_attribs)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < size; i++)
|
||||
int_attribs[i] = attr_list[i];
|
||||
}
|
||||
return int_attribs;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This is typically the first EGL function that an application calls.
|
||||
* It associates a private _EGLDisplay object to the native display.
|
||||
|
|
@ -1255,6 +1280,22 @@ eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target,
|
|||
}
|
||||
|
||||
|
||||
EGLImage EGLAPIENTRY
|
||||
eglCreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target,
|
||||
EGLClientBuffer buffer, const EGLAttrib *attr_list)
|
||||
{
|
||||
EGLImage image;
|
||||
EGLint *int_attribs = _eglConvertAttribsToInt(attr_list);
|
||||
|
||||
if (attr_list && !int_attribs)
|
||||
RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, EGL_NO_IMAGE);
|
||||
|
||||
image = eglCreateImageKHR(dpy, ctx, target, buffer, int_attribs);
|
||||
free(int_attribs);
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
EGLBoolean EGLAPIENTRY
|
||||
eglDestroyImage(EGLDisplay dpy, EGLImage image)
|
||||
{
|
||||
|
|
@ -1751,6 +1792,7 @@ eglGetProcAddress(const char *procname)
|
|||
{ "eglClientWaitSync", (_EGLProc) eglClientWaitSync },
|
||||
{ "eglGetSyncAttrib", (_EGLProc) eglGetSyncAttrib },
|
||||
{ "eglWaitSync", (_EGLProc) eglWaitSync },
|
||||
{ "eglCreateImage", (_EGLProc) eglCreateImage },
|
||||
{ "eglDestroyImage", (_EGLProc) eglDestroyImage },
|
||||
#ifdef EGL_MESA_drm_display
|
||||
{ "eglGetDRMDisplayMESA", (_EGLProc) eglGetDRMDisplayMESA },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue