X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fegl%2Fmain%2Fegldisplay.h;h=f73ff99fbeef09c4c6dd0ae42807d79214f9069f;hb=eeacd66324c54bfe58fd29dd56918efa43d28836;hp=9a0b9b672ac3d5eba8a3611eec9ed9ab712db000;hpb=c77ea0501c93bbf4d47b2256d629b4ffb6ae4c8a;p=mesa.git diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index 9a0b9b672ac..f73ff99fbee 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -50,6 +50,7 @@ enum _egl_platform_type { _EGL_PLATFORM_ANDROID, _EGL_PLATFORM_HAIKU, _EGL_PLATFORM_SURFACELESS, + _EGL_PLATFORM_DEVICE, _EGL_NUM_PLATFORMS, _EGL_INVALID_PLATFORM = -1 @@ -92,6 +93,7 @@ struct _egl_resource struct _egl_extensions { /* Please keep these sorted alphabetically. */ + EGLBoolean ANDROID_blob_cache; EGLBoolean ANDROID_framebuffer_target; EGLBoolean ANDROID_image_native_buffer; EGLBoolean ANDROID_native_fence_sync; @@ -103,11 +105,21 @@ struct _egl_extensions EGLBoolean EXT_create_context_robustness; EGLBoolean EXT_image_dma_buf_import; EGLBoolean EXT_image_dma_buf_import_modifiers; + EGLBoolean EXT_pixel_format_float; + EGLBoolean EXT_surface_CTA861_3_metadata; + EGLBoolean EXT_surface_SMPTE2086_metadata; EGLBoolean EXT_swap_buffers_with_damage; + unsigned int IMG_context_priority; +#define __EGL_CONTEXT_PRIORITY_LOW_BIT 0 +#define __EGL_CONTEXT_PRIORITY_MEDIUM_BIT 1 +#define __EGL_CONTEXT_PRIORITY_HIGH_BIT 2 + EGLBoolean KHR_cl_event2; EGLBoolean KHR_config_attribs; + EGLBoolean KHR_context_flush_control; EGLBoolean KHR_create_context; + EGLBoolean KHR_create_context_no_error; EGLBoolean KHR_fence_sync; EGLBoolean KHR_get_all_proc_addresses; EGLBoolean KHR_gl_colorspace; @@ -115,17 +127,19 @@ struct _egl_extensions EGLBoolean KHR_gl_texture_2D_image; EGLBoolean KHR_gl_texture_3D_image; EGLBoolean KHR_gl_texture_cubemap_image; + EGLBoolean KHR_image; EGLBoolean KHR_image_base; EGLBoolean KHR_image_pixmap; + EGLBoolean KHR_mutable_render_buffer; EGLBoolean KHR_no_config_context; EGLBoolean KHR_partial_update; EGLBoolean KHR_reusable_sync; EGLBoolean KHR_surfaceless_context; EGLBoolean KHR_wait_sync; - EGLBoolean KHR_create_context_no_error; EGLBoolean MESA_drm_image; EGLBoolean MESA_image_dma_buf_export; + EGLBoolean MESA_query_driver; EGLBoolean NOK_swap_region; EGLBoolean NOK_texture_from_pixmap; @@ -136,7 +150,6 @@ struct _egl_extensions EGLBoolean WL_create_wayland_buffer_from_image; }; - struct _egl_display { /* used to link displays */ @@ -147,14 +160,15 @@ struct _egl_display _EGLPlatformType Platform; /**< The type of the platform display */ void *PlatformDisplay; /**< A pointer to the platform display */ + _EGLDevice *Device; /**< Device backing the display */ _EGLDriver *Driver; /**< Matched driver of the display */ EGLBoolean Initialized; /**< True if the display is initialized */ /* options that affect how the driver initializes the display */ struct { - EGLBoolean TestOnly; /**< Driver should not set fields when true */ - EGLBoolean UseFallback; /**< Use fallback driver (sw or less features) */ - void *Platform; /**< Platform-specific options */ + EGLBoolean ForceSoftware; /**< Use software path only */ + EGLAttrib *Attribs; /**< Platform-specific options */ + int fd; /**< plaform device specific, local fd */ } Options; /* these fields are set by the driver during init */ @@ -174,6 +188,9 @@ struct _egl_display _EGLResource *ResourceLists[_EGL_NUM_RESOURCES]; EGLLabelKHR Label; + + EGLSetBlobFuncANDROID BlobCacheSet; + EGLGetBlobFuncANDROID BlobCacheGet; }; @@ -186,11 +203,11 @@ _eglFiniDisplay(void); extern _EGLDisplay * -_eglFindDisplay(_EGLPlatformType plat, void *plat_dpy); +_eglFindDisplay(_EGLPlatformType plat, void *plat_dpy, const EGLAttrib *attr); extern void -_eglReleaseDisplayResources(_EGLDriver *drv, _EGLDisplay *dpy); +_eglReleaseDisplayResources(_EGLDriver *drv, _EGLDisplay *disp); extern void @@ -202,7 +219,7 @@ _eglCheckDisplayHandle(EGLDisplay dpy); extern EGLBoolean -_eglCheckResource(void *res, _EGLResourceType type, _EGLDisplay *dpy); +_eglCheckResource(void *res, _EGLResourceType type, _EGLDisplay *disp); /** @@ -210,12 +227,12 @@ _eglCheckResource(void *res, _EGLResourceType type, _EGLDisplay *dpy); * Return NULL if the handle has no corresponding linked display. */ static inline _EGLDisplay * -_eglLookupDisplay(EGLDisplay display) +_eglLookupDisplay(EGLDisplay dpy) { - _EGLDisplay *dpy = (_EGLDisplay *) display; - if (!_eglCheckDisplayHandle(display)) - dpy = NULL; - return dpy; + _EGLDisplay *disp = (_EGLDisplay *) dpy; + if (!_eglCheckDisplayHandle(dpy)) + disp = NULL; + return disp; } @@ -223,14 +240,14 @@ _eglLookupDisplay(EGLDisplay display) * Return the handle of a linked display, or EGL_NO_DISPLAY. */ static inline EGLDisplay -_eglGetDisplayHandle(_EGLDisplay *dpy) +_eglGetDisplayHandle(_EGLDisplay *disp) { - return (EGLDisplay) ((dpy) ? dpy : EGL_NO_DISPLAY); + return (EGLDisplay) ((disp) ? disp : EGL_NO_DISPLAY); } extern void -_eglInitResource(_EGLResource *res, EGLint size, _EGLDisplay *dpy); +_eglInitResource(_EGLResource *res, EGLint size, _EGLDisplay *disp); extern void @@ -258,9 +275,22 @@ _eglIsResourceLinked(_EGLResource *res) return res->IsLinked; } +static inline size_t +_eglNumAttribs(const EGLAttrib *attribs) +{ + size_t len = 0; + + if (attribs) { + while (attribs[len] != EGL_NONE) + len += 2; + len++; + } + return len; +} + #ifdef HAVE_X11_PLATFORM _EGLDisplay* -_eglGetX11Display(Display *native_display, const EGLint *attrib_list); +_eglGetX11Display(Display *native_display, const EGLAttrib *attrib_list); #endif #ifdef HAVE_DRM_PLATFORM @@ -268,7 +298,7 @@ struct gbm_device; _EGLDisplay* _eglGetGbmDisplay(struct gbm_device *native_display, - const EGLint *attrib_list); + const EGLAttrib *attrib_list); #endif #ifdef HAVE_WAYLAND_PLATFORM @@ -276,15 +306,19 @@ struct wl_display; _EGLDisplay* _eglGetWaylandDisplay(struct wl_display *native_display, - const EGLint *attrib_list); + const EGLAttrib *attrib_list); #endif #ifdef HAVE_SURFACELESS_PLATFORM _EGLDisplay* _eglGetSurfacelessDisplay(void *native_display, - const EGLint *attrib_list); + const EGLAttrib *attrib_list); #endif +_EGLDisplay* +_eglGetDeviceDisplay(void *native_display, + const EGLAttrib *attrib_list); + #ifdef __cplusplus } #endif