X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fegl%2Fmain%2Feglimage.h;h=6d2e7ba8a2d3b0c812f573b62bcf95e3a4c81d07;hp=acb36aaeb18892698c26188f0976205ea242310a;hb=1b76cca40f3a8f904b02977eaf3e8f2a0d3140d4;hpb=c3b2230b71cb3a00a7f4c0987197d397bada650b diff --git a/src/egl/main/eglimage.h b/src/egl/main/eglimage.h index acb36aaeb18..6d2e7ba8a2d 100644 --- a/src/egl/main/eglimage.h +++ b/src/egl/main/eglimage.h @@ -30,11 +30,24 @@ #ifndef EGLIMAGE_INCLUDED #define EGLIMAGE_INCLUDED +#include "c99_compat.h" #include "egltypedefs.h" #include "egldisplay.h" +#ifdef __cplusplus +extern "C" { +#endif + +struct _egl_image_attrib_int +{ + EGLint Value; + EGLBoolean IsPresent; +}; + +#define DMA_BUF_MAX_PLANES 4 + struct _egl_image_attribs { /* EGL_KHR_image_base */ @@ -50,6 +63,22 @@ struct _egl_image_attribs EGLint DRMBufferFormatMESA; EGLint DRMBufferUseMESA; EGLint DRMBufferStrideMESA; + + /* EGL_WL_bind_wayland_display */ + EGLint PlaneWL; + + /* EGL_EXT_image_dma_buf_import and + * EGL_EXT_image_dma_buf_import_modifiers */ + struct _egl_image_attrib_int DMABufFourCC; + struct _egl_image_attrib_int DMABufPlaneFds[DMA_BUF_MAX_PLANES]; + struct _egl_image_attrib_int DMABufPlaneOffsets[DMA_BUF_MAX_PLANES]; + struct _egl_image_attrib_int DMABufPlanePitches[DMA_BUF_MAX_PLANES]; + struct _egl_image_attrib_int DMABufPlaneModifiersLo[DMA_BUF_MAX_PLANES]; + struct _egl_image_attrib_int DMABufPlaneModifiersHi[DMA_BUF_MAX_PLANES]; + struct _egl_image_attrib_int DMABufYuvColorSpaceHint; + struct _egl_image_attrib_int DMABufSampleRangeHint; + struct _egl_image_attrib_int DMABufChromaHorizontalSiting; + struct _egl_image_attrib_int DMABufChromaVerticalSiting; }; /** @@ -62,19 +91,22 @@ struct _egl_image }; -PUBLIC EGLint -_eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *dpy, +EGLBoolean +_eglParseImageAttribList(_EGLImageAttribs *attrs, _EGLDisplay *disp, const EGLint *attrib_list); -PUBLIC EGLBoolean -_eglInitImage(_EGLImage *img, _EGLDisplay *dpy); +static inline void +_eglInitImage(_EGLImage *img, _EGLDisplay *disp) +{ + _eglInitResource(&img->Resource, sizeof(*img), disp); +} /** * Increment reference count for the image. */ -static INLINE _EGLImage * +static inline _EGLImage * _eglGetImage(_EGLImage *img) { if (img) @@ -86,7 +118,7 @@ _eglGetImage(_EGLImage *img) /** * Decrement reference count for the image. */ -static INLINE EGLBoolean +static inline EGLBoolean _eglPutImage(_EGLImage *img) { return (img) ? _eglPutResource(&img->Resource) : EGL_FALSE; @@ -97,11 +129,11 @@ _eglPutImage(_EGLImage *img) * Link an image to its display and return the handle of the link. * The handle can be passed to client directly. */ -static INLINE EGLImageKHR +static inline EGLImage _eglLinkImage(_EGLImage *img) { _eglLinkResource(&img->Resource, _EGL_RESOURCE_IMAGE); - return (EGLImageKHR) img; + return (EGLImage) img; } @@ -109,7 +141,7 @@ _eglLinkImage(_EGLImage *img) * Unlink a linked image from its display. * Accessing an unlinked image should generate EGL_BAD_PARAMETER error. */ -static INLINE void +static inline void _eglUnlinkImage(_EGLImage *img) { _eglUnlinkResource(&img->Resource, _EGL_RESOURCE_IMAGE); @@ -120,11 +152,11 @@ _eglUnlinkImage(_EGLImage *img) * Lookup a handle to find the linked image. * Return NULL if the handle has no corresponding linked image. */ -static INLINE _EGLImage * -_eglLookupImage(EGLImageKHR image, _EGLDisplay *dpy) +static inline _EGLImage * +_eglLookupImage(EGLImage image, _EGLDisplay *disp) { _EGLImage *img = (_EGLImage *) image; - if (!dpy || !_eglCheckResource((void *) img, _EGL_RESOURCE_IMAGE, dpy)) + if (!disp || !_eglCheckResource((void *) img, _EGL_RESOURCE_IMAGE, disp)) img = NULL; return img; } @@ -133,13 +165,17 @@ _eglLookupImage(EGLImageKHR image, _EGLDisplay *dpy) /** * Return the handle of a linked image, or EGL_NO_IMAGE_KHR. */ -static INLINE EGLImageKHR +static inline EGLImage _eglGetImageHandle(_EGLImage *img) { _EGLResource *res = (_EGLResource *) img; return (res && _eglIsResourceLinked(res)) ? - (EGLImageKHR) img : EGL_NO_IMAGE_KHR; + (EGLImage) img : EGL_NO_IMAGE_KHR; } +#ifdef __cplusplus +} +#endif + #endif /* EGLIMAGE_INCLUDED */