diff options
Diffstat (limited to 'src/egl/main/eglimage.h')
-rw-r--r-- | src/egl/main/eglimage.h | 68 |
1 files changed, 44 insertions, 24 deletions
diff --git a/src/egl/main/eglimage.h b/src/egl/main/eglimage.h index 2c0fb16d1d3..adb939a9e02 100644 --- a/src/egl/main/eglimage.h +++ b/src/egl/main/eglimage.h @@ -6,6 +6,23 @@ #include "egldisplay.h" +struct _egl_image_attribs +{ + /* EGL_KHR_image_base */ + EGLBoolean ImagePreserved; + + /* EGL_KHR_gl_image */ + EGLint GLTextureLevel; + EGLint GLTextureZOffset; + + /* EGL_MESA_drm_image */ + EGLint Width; + EGLint Height; + EGLint DRMBufferFormatMESA; + EGLint DRMBufferUseMESA; + EGLint DRMBufferStrideMESA; +}; + /** * "Base" class for device driver images. */ @@ -13,34 +30,48 @@ struct _egl_image { /* An image is a display resource */ _EGLResource Resource; - - EGLBoolean Preserved; - EGLint GLTextureLevel; - EGLint GLTextureZOffset; }; +PUBLIC EGLint +_eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *dpy, + const EGLint *attrib_list); + + PUBLIC EGLBoolean -_eglInitImage(_EGLImage *img, _EGLDisplay *dpy, const EGLint *attrib_list); +_eglInitImage(_EGLImage *img, _EGLDisplay *dpy); -extern _EGLImage * -_eglCreateImageKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, - EGLenum target, EGLClientBuffer buffer, const EGLint *attr_list); +/** + * Increment reference count for the image. + */ +static INLINE _EGLImage * +_eglGetImage(_EGLImage *img) +{ + if (img) + _eglGetResource(&img->Resource); + return img; +} -extern EGLBoolean -_eglDestroyImageKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *image); +/** + * Decrement reference count for the image. + */ +static INLINE EGLBoolean +_eglPutImage(_EGLImage *img) +{ + return (img) ? _eglPutResource(&img->Resource) : EGL_FALSE; +} /** - * Link an image to a display and return the handle of the link. + * Link an image to its display and return the handle of the link. * The handle can be passed to client directly. */ static INLINE EGLImageKHR -_eglLinkImage(_EGLImage *img, _EGLDisplay *dpy) +_eglLinkImage(_EGLImage *img) { - _eglLinkResource(&img->Resource, _EGL_RESOURCE_IMAGE, dpy); + _eglLinkResource(&img->Resource, _EGL_RESOURCE_IMAGE); return (EGLImageKHR) img; } @@ -82,15 +113,4 @@ _eglGetImageHandle(_EGLImage *img) } -/** - * Return true if the image is linked to a display. - */ -static INLINE EGLBoolean -_eglIsImageLinked(_EGLImage *img) -{ - _EGLResource *res = (_EGLResource *) img; - return (res && _eglIsResourceLinked(res)); -} - - #endif /* EGLIMAGE_INCLUDED */ |