Lines Matching refs:disp

111 #define RETURN_EGL_ERROR(disp, err, ret)        \
113 if (disp) \
114 _eglUnlockDisplay(disp); \
121 #define RETURN_EGL_SUCCESS(disp, ret) \
122 RETURN_EGL_ERROR(disp, EGL_SUCCESS, ret)
125 #define RETURN_EGL_EVAL(disp, ret) \
126 RETURN_EGL_ERROR(disp, (ret) ? EGL_SUCCESS : 0, ret)
133 #define _EGL_CHECK_DISPLAY(disp, ret, drv) \
135 drv = _eglCheckDisplay(disp, __func__); \
137 RETURN_EGL_ERROR(disp, 0, ret); \
140 #define _EGL_CHECK_OBJECT(disp, type, obj, ret, drv) \
142 drv = _eglCheck ## type(disp, obj, __func__); \
144 RETURN_EGL_ERROR(disp, 0, ret); \
147 #define _EGL_CHECK_SURFACE(disp, surf, ret, drv) \
148 _EGL_CHECK_OBJECT(disp, Surface, surf, ret, drv)
150 #define _EGL_CHECK_CONTEXT(disp, context, ret, drv) \
151 _EGL_CHECK_OBJECT(disp, Context, context, ret, drv)
153 #define _EGL_CHECK_CONFIG(disp, conf, ret, drv) \
154 _EGL_CHECK_OBJECT(disp, Config, conf, ret, drv)
156 #define _EGL_CHECK_SYNC(disp, s, ret, drv) \
157 _EGL_CHECK_OBJECT(disp, Sync, s, ret, drv)
161 _eglCheckDisplay(_EGLDisplay *disp, const char *msg)
163 if (!disp) {
167 if (!disp->Initialized) {
171 return disp->Driver;
176 _eglCheckSurface(_EGLDisplay *disp, _EGLSurface *surf, const char *msg)
178 _EGLDriver *drv = _eglCheckDisplay(disp, msg);
190 _eglCheckContext(_EGLDisplay *disp, _EGLContext *context, const char *msg)
192 _EGLDriver *drv = _eglCheckDisplay(disp, msg);
204 _eglCheckConfig(_EGLDisplay *disp, _EGLConfig *conf, const char *msg)
206 _EGLDriver *drv = _eglCheckDisplay(disp, msg);
218 _eglCheckSync(_EGLDisplay *disp, _EGLSync *s, const char *msg)
220 _EGLDriver *drv = _eglCheckDisplay(disp, msg);
254 _eglSetFuncName(const char *funcName, _EGLDisplay *disp, EGLenum objectType, _EGLResource *object)
263 else if (objectType == EGL_OBJECT_DISPLAY_KHR && disp)
264 thr->CurrentObjectLabel = disp->Label;
276 #define _EGL_FUNC_START(disp, objectType, object, ret) \
278 if (!_eglSetFuncName(__func__, disp, objectType, (_EGLResource *) object)) { \
279 if (disp) \
280 _eglUnlockDisplay(disp); \
543 _eglComputeVersion(_EGLDisplay *disp)
545 disp->Version = 14;
547 if (disp->Extensions.KHR_fence_sync &&
548 disp->Extensions.KHR_cl_event2 &&
549 disp->Extensions.KHR_wait_sync &&
550 disp->Extensions.KHR_image_base &&
551 disp->Extensions.KHR_gl_texture_2D_image &&
552 disp->Extensions.KHR_gl_texture_3D_image &&
553 disp->Extensions.KHR_gl_texture_cubemap_image &&
554 disp->Extensions.KHR_gl_renderbuffer_image &&
555 disp->Extensions.KHR_create_context &&
556 disp->Extensions.EXT_create_context_robustness &&
557 disp->Extensions.KHR_get_all_proc_addresses &&
558 disp->Extensions.KHR_gl_colorspace &&
559 disp->Extensions.KHR_surfaceless_context)
560 disp->Version = 15;
570 _EGLDisplay *disp = _eglLockDisplay(dpy);
572 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
574 if (!disp)
577 if (!disp->Initialized) {
578 if (!_eglMatchDriver(disp, EGL_FALSE))
579 RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE);
582 disp->ClientAPIs &= _EGL_API_ALL_BITS;
599 disp->Extensions.KHR_get_all_proc_addresses = EGL_TRUE;
604 disp->Extensions.KHR_config_attribs = EGL_TRUE;
606 _eglComputeVersion(disp);
607 _eglCreateExtensionsString(disp);
608 _eglCreateAPIsString(disp);
609 snprintf(disp->VersionString, sizeof(disp->VersionString),
610 "%d.%d (%s)", disp->Version / 10, disp->Version % 10,
611 disp->Driver->Name);
616 *major = disp->Version / 10;
617 *minor = disp->Version % 10;
620 RETURN_EGL_SUCCESS(disp, EGL_TRUE);
627 _EGLDisplay *disp = _eglLockDisplay(dpy);
629 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
631 if (!disp)
634 if (disp->Initialized) {
635 _EGLDriver *drv = disp->Driver;
637 drv->API.Terminate(drv, disp);
638 /* do not reset disp->Driver */
639 disp->ClientAPIsString[0] = 0;
640 disp->Initialized = EGL_FALSE;
643 RETURN_EGL_SUCCESS(disp, EGL_TRUE);
650 _EGLDisplay *disp;
657 disp = _eglLockDisplay(dpy);
658 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, NULL);
659 _EGL_CHECK_DISPLAY(disp, NULL, drv);
663 RETURN_EGL_SUCCESS(disp, _EGL_VENDOR_STRING);
665 RETURN_EGL_SUCCESS(disp, disp->VersionString);
667 RETURN_EGL_SUCCESS(disp, disp->ExtensionsString);
669 RETURN_EGL_SUCCESS(disp, disp->ClientAPIsString);
671 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, NULL);
680 _EGLDisplay *disp = _eglLockDisplay(dpy);
684 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
686 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
687 ret = drv->API.GetConfigs(drv, disp, configs, config_size, num_config);
689 RETURN_EGL_EVAL(disp, ret);
697 _EGLDisplay *disp = _eglLockDisplay(dpy);
701 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
703 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
704 ret = drv->API.ChooseConfig(drv, disp, attrib_list, configs,
707 RETURN_EGL_EVAL(disp, ret);
715 _EGLDisplay *disp = _eglLockDisplay(dpy);
716 _EGLConfig *conf = _eglLookupConfig(config, disp);
720 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
722 _EGL_CHECK_CONFIG(disp, conf, EGL_FALSE, drv);
723 ret = drv->API.GetConfigAttrib(drv, disp, conf, attribute, value);
725 RETURN_EGL_EVAL(disp, ret);
733 _EGLDisplay *disp = _eglLockDisplay(dpy);
734 _EGLConfig *conf = _eglLookupConfig(config, disp);
735 _EGLContext *share = _eglLookupContext(share_list, disp);
740 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_CONTEXT);
742 _EGL_CHECK_DISPLAY(disp, EGL_NO_CONTEXT, drv);
745 _EGL_CHECK_CONFIG(disp, conf, EGL_NO_CONTEXT, drv);
746 else if (!disp->Extensions.KHR_no_config_context)
747 RETURN_EGL_ERROR(disp, EGL_BAD_CONFIG, EGL_NO_CONTEXT);
750 RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_NO_CONTEXT);
752 context = drv->API.CreateContext(drv, disp, conf, share, attrib_list);
755 RETURN_EGL_EVAL(disp, ret);
762 _EGLDisplay *disp = _eglLockDisplay(dpy);
763 _EGLContext *context = _eglLookupContext(ctx, disp);
767 _EGL_FUNC_START(disp, EGL_OBJECT_CONTEXT_KHR, context, EGL_FALSE);
769 _EGL_CHECK_CONTEXT(disp, context, EGL_FALSE, drv);
771 ret = drv->API.DestroyContext(drv, disp, context);
773 RETURN_EGL_EVAL(disp, ret);
781 _EGLDisplay *disp = _eglLockDisplay(dpy);
782 _EGLContext *context = _eglLookupContext(ctx, disp);
783 _EGLSurface *draw_surf = _eglLookupSurface(draw, disp);
784 _EGLSurface *read_surf = _eglLookupSurface(read, disp);
788 _EGL_FUNC_START(disp, EGL_OBJECT_CONTEXT_KHR, context, EGL_FALSE);
790 if (!disp)
791 RETURN_EGL_ERROR(disp, EGL_BAD_DISPLAY, EGL_FALSE);
792 drv = disp->Driver;
795 if (!disp->Initialized) {
798 RETURN_EGL_ERROR(disp, EGL_BAD_DISPLAY, EGL_FALSE);
801 RETURN_EGL_SUCCESS(disp, EGL_TRUE);
804 RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_FALSE);
811 if (!disp->Extensions.KHR_surfaceless_context && ctx != EGL_NO_CONTEXT)
812 RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
816 RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
818 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_FALSE);
821 ret = drv->API.MakeCurrent(drv, disp, draw_surf, read_surf, context);
823 RETURN_EGL_EVAL(disp, ret);
831 _EGLDisplay *disp = _eglLockDisplay(dpy);
832 _EGLContext *context = _eglLookupContext(ctx, disp);
836 _EGL_FUNC_START(disp, EGL_OBJECT_CONTEXT_KHR, context, EGL_FALSE);
838 _EGL_CHECK_CONTEXT(disp, context, EGL_FALSE, drv);
839 ret = drv->API.QueryContext(drv, disp, context, attribute, value);
841 RETURN_EGL_EVAL(disp, ret);
846 _eglCreateWindowSurfaceCommon(_EGLDisplay *disp, EGLConfig config,
849 _EGLConfig *conf = _eglLookupConfig(config, disp);
856 RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);
859 if (disp && disp->Platform == _EGL_PLATFORM_SURFACELESS) {
872 RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);
876 _EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv);
879 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SURFACE);
881 surf = drv->API.CreateWindowSurface(drv, disp, conf, native_window,
885 RETURN_EGL_EVAL(disp, ret);
893 _EGLDisplay *disp = _eglLockDisplay(dpy);
895 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
897 return _eglCreateWindowSurfaceCommon(disp, config, (void*) window,
902 _fixupNativeWindow(_EGLDisplay *disp, void *native_window)
905 if (disp->Platform == _EGL_PLATFORM_X11 && native_window != NULL) {
924 _EGLDisplay *disp = _eglLockDisplay(dpy);
926 native_window = _fixupNativeWindow(disp, native_window);
928 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
929 return _eglCreateWindowSurfaceCommon(disp, config, native_window,
939 _EGLDisplay *disp = _eglLockDisplay(dpy);
943 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
947 RETURN_EGL_ERROR(disp, EGL_BAD_ALLOC, EGL_NO_SURFACE);
949 native_window = _fixupNativeWindow(disp, native_window);
950 surface = _eglCreateWindowSurfaceCommon(disp, config, native_window,
957 _fixupNativePixmap(_EGLDisplay *disp, void *native_pixmap)
967 if (disp->Platform == _EGL_PLATFORM_X11 && native_pixmap != NULL)
974 _eglCreatePixmapSurfaceCommon(_EGLDisplay *disp, EGLConfig config,
977 _EGLConfig *conf = _eglLookupConfig(config, disp);
983 if (disp && disp->Platform == _EGL_PLATFORM_SURFACELESS) {
994 RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_PIXMAP, EGL_NO_SURFACE);
998 _EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv);
1001 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SURFACE);
1003 surf = drv->API.CreatePixmapSurface(drv, disp, conf, native_pixmap,
1007 RETURN_EGL_EVAL(disp, ret);
1015 _EGLDisplay *disp = _eglLockDisplay(dpy);
1017 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
1019 return _eglCreatePixmapSurfaceCommon(disp, config, (void*) pixmap,
1028 _EGLDisplay *disp = _eglLockDisplay(dpy);
1030 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
1031 native_pixmap = _fixupNativePixmap(disp, native_pixmap);
1032 return _eglCreatePixmapSurfaceCommon(disp, config, native_pixmap,
1042 _EGLDisplay *disp = _eglLockDisplay(dpy);
1046 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
1050 RETURN_EGL_ERROR(disp, EGL_BAD_ALLOC, EGL_NO_SURFACE);
1052 native_pixmap = _fixupNativePixmap(disp, native_pixmap);
1053 surface = _eglCreatePixmapSurfaceCommon(disp, config, native_pixmap,
1064 _EGLDisplay *disp = _eglLockDisplay(dpy);
1065 _EGLConfig *conf = _eglLookupConfig(config, disp);
1070 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
1071 _EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv);
1074 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SURFACE);
1076 surf = drv->API.CreatePbufferSurface(drv, disp, conf, attrib_list);
1079 RETURN_EGL_EVAL(disp, ret);
1086 _EGLDisplay *disp = _eglLockDisplay(dpy);
1087 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1091 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1092 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1094 ret = drv->API.DestroySurface(drv, disp, surf);
1096 RETURN_EGL_EVAL(disp, ret);
1103 _EGLDisplay *disp = _eglLockDisplay(dpy);
1104 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1108 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1109 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1110 ret = drv->API.QuerySurface(drv, disp, surf, attribute, value);
1112 RETURN_EGL_EVAL(disp, ret);
1119 _EGLDisplay *disp = _eglLockDisplay(dpy);
1120 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1124 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1125 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1126 ret = drv->API.SurfaceAttrib(drv, disp, surf, attribute, value);
1128 RETURN_EGL_EVAL(disp, ret);
1135 _EGLDisplay *disp = _eglLockDisplay(dpy);
1136 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1140 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1141 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1142 ret = drv->API.BindTexImage(drv, disp, surf, buffer);
1144 RETURN_EGL_EVAL(disp, ret);
1151 _EGLDisplay *disp = _eglLockDisplay(dpy);
1152 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1156 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1157 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1158 ret = drv->API.ReleaseTexImage(drv, disp, surf, buffer);
1160 RETURN_EGL_EVAL(disp, ret);
1167 _EGLDisplay *disp = _eglLockDisplay(dpy);
1173 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1174 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
1177 ctx->Resource.Display != disp)
1178 RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_FALSE);
1181 RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
1183 ret = drv->API.SwapInterval(drv, disp, surf, interval);
1185 RETURN_EGL_EVAL(disp, ret);
1193 _EGLDisplay *disp = _eglLockDisplay(dpy);
1194 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1198 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1199 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1205 RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
1208 ret = drv->API.SwapBuffers(drv, disp, surf);
1210 RETURN_EGL_EVAL(disp, ret);
1215 _eglSwapBuffersWithDamageCommon(_EGLDisplay *disp, _EGLSurface *surf,
1222 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1227 RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
1230 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
1232 ret = drv->API.SwapBuffersWithDamageEXT(drv, disp, surf, rects, n_rects);
1234 RETURN_EGL_EVAL(disp, ret);
1241 _EGLDisplay *disp = _eglLockDisplay(dpy);
1242 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1243 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1244 return _eglSwapBuffersWithDamageCommon(disp, surf, rects, n_rects);
1251 _EGLDisplay *disp = _eglLockDisplay(dpy);
1252 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1253 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1254 return _eglSwapBuffersWithDamageCommon(disp, surf, rects, n_rects);
1260 _EGLDisplay *disp = _eglLockDisplay(dpy);
1261 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1266 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1270 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1271 if (disp->Platform != _eglGetNativePlatform(disp->PlatformDisplay))
1272 RETURN_EGL_ERROR(disp, EGL_BAD_NATIVE_PIXMAP, EGL_FALSE);
1273 ret = drv->API.CopyBuffers(drv, disp, surf, native_pixmap_ptr);
1275 RETURN_EGL_EVAL(disp, ret);
1283 _EGLDisplay *disp;
1290 disp = ctx->Resource.Display;
1291 mtx_lock(&disp->Mutex);
1296 RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE);
1299 assert(disp->Initialized);
1300 drv = disp->Driver;
1301 ret = drv->API.WaitClient(drv, disp, ctx);
1303 RETURN_EGL_EVAL(disp, ret);
1326 _EGLDisplay *disp;
1335 disp = ctx->Resource.Display;
1336 mtx_lock(&disp->Mutex);
1341 RETURN_EGL_ERROR(disp, EGL_BAD_CURRENT_SURFACE, EGL_FALSE);
1344 assert(disp->Initialized);
1345 drv = disp->Driver;
1346 ret = drv->API.WaitNative(drv, disp, engine);
1348 RETURN_EGL_EVAL(disp, ret);
1475 _EGLDisplay *disp = _eglLockDisplay(dpy);
1476 _EGLConfig *conf = _eglLookupConfig(config, disp);
1481 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_SURFACE);
1483 _EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv);
1485 surf = drv->API.CreatePbufferFromClientBuffer(drv, disp, buftype, buffer,
1489 RETURN_EGL_EVAL(disp, ret);
1504 _EGLDisplay *disp = ctx->Resource.Display;
1507 mtx_lock(&disp->Mutex);
1508 drv = disp->Driver;
1509 (void) drv->API.MakeCurrent(drv, disp, NULL, NULL, NULL);
1510 mtx_unlock(&disp->Mutex);
1521 _eglCreateImageCommon(_EGLDisplay *disp, EGLContext ctx, EGLenum target,
1524 _EGLContext *context = _eglLookupContext(ctx, disp);
1529 _EGL_CHECK_DISPLAY(disp, EGL_NO_IMAGE_KHR, drv);
1530 if (!disp->Extensions.KHR_image_base)
1531 RETURN_EGL_EVAL(disp, EGL_NO_IMAGE_KHR);
1533 RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_NO_IMAGE_KHR);
1538 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_NO_IMAGE_KHR);
1541 disp, context, target, buffer, attr_list);
1544 RETURN_EGL_EVAL(disp, ret);
1551 _EGLDisplay *disp = _eglLockDisplay(dpy);
1552 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_IMAGE_KHR);
1553 return _eglCreateImageCommon(disp, ctx, target, buffer, attr_list);
1561 _EGLDisplay *disp = _eglLockDisplay(dpy);
1565 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_NO_IMAGE_KHR);
1569 RETURN_EGL_ERROR(disp, EGL_BAD_ALLOC, EGL_NO_IMAGE);
1571 image = _eglCreateImageCommon(disp, ctx, target, buffer, int_attribs);
1580 _EGLDisplay *disp = _eglLockDisplay(dpy);
1581 _EGLImage *img = _eglLookupImage(image, disp);
1585 _EGL_FUNC_START(disp, EGL_OBJECT_IMAGE_KHR, img, EGL_FALSE);
1587 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
1588 if (!disp->Extensions.KHR_image_base)
1589 RETURN_EGL_EVAL(disp, EGL_FALSE);
1591 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
1594 ret = drv->API.DestroyImageKHR(drv, disp, img);
1596 RETURN_EGL_EVAL(disp, ret);
1601 _eglCreateSync(_EGLDisplay *disp, EGLenum type, const EGLAttrib *attrib_list,
1610 _EGL_CHECK_DISPLAY(disp, EGL_NO_SYNC_KHR, drv);
1612 if (!disp->Extensions.KHR_cl_event2 && orig_is_EGLAttrib) {
1622 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR);
1631 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR);
1634 if (ctx && (ctx->Resource.Display != disp ||
1636 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR);
1640 if (!disp->Extensions.KHR_fence_sync)
1641 RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR);
1644 if (!disp->Extensions.KHR_reusable_sync)
1645 RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR);
1648 if (!disp->Extensions.KHR_cl_event2)
1649 RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR);
1652 if (!disp->Extensions.ANDROID_native_fence_sync)
1653 RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR);
1656 RETURN_EGL_ERROR(disp, invalid_type_error, EGL_NO_SYNC_KHR);
1659 sync = drv->API.CreateSyncKHR(drv, disp, type, attrib_list);
1662 RETURN_EGL_EVAL(disp, ret);
1669 _EGLDisplay *disp = _eglLockDisplay(dpy);
1670 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
1681 RETURN_EGL_ERROR(disp, err, EGL_NO_SYNC);
1684 sync = _eglCreateSync(disp, type, attrib_list, EGL_FALSE,
1698 _EGLDisplay *disp = _eglLockDisplay(dpy);
1699 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
1700 return _eglCreateSync(disp, type, attrib_list, EGL_TRUE,
1708 _EGLDisplay *disp = _eglLockDisplay(dpy);
1709 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
1710 return _eglCreateSync(disp, type, attrib_list, EGL_TRUE,
1718 _EGLDisplay *disp = _eglLockDisplay(dpy);
1719 _EGLSync *s = _eglLookupSync(sync, disp);
1723 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1725 _EGL_CHECK_SYNC(disp, s, EGL_FALSE, drv);
1726 assert(disp->Extensions.KHR_reusable_sync ||
1727 disp->Extensions.KHR_fence_sync ||
1728 disp->Extensions.ANDROID_native_fence_sync);
1731 ret = drv->API.DestroySyncKHR(drv, disp, s);
1733 RETURN_EGL_EVAL(disp, ret);
1740 _EGLDisplay *disp = _eglLockDisplay(dpy);
1741 _EGLSync *s = _eglLookupSync(sync, disp);
1745 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1747 _EGL_CHECK_SYNC(disp, s, EGL_FALSE, drv);
1748 assert(disp->Extensions.KHR_reusable_sync ||
1749 disp->Extensions.KHR_fence_sync ||
1750 disp->Extensions.ANDROID_native_fence_sync);
1753 RETURN_EGL_EVAL(disp, EGL_CONDITION_SATISFIED_KHR);
1763 ret = drv->API.ClientWaitSyncKHR(drv, disp, s, flags, timeout);
1766 * 'disp' is already unlocked for reusable sync type,
1772 RETURN_EGL_EVAL(disp, ret);
1777 _eglWaitSyncCommon(_EGLDisplay *disp, _EGLSync *s, EGLint flags)
1783 _EGL_CHECK_SYNC(disp, s, EGL_FALSE, drv);
1784 assert(disp->Extensions.KHR_wait_sync);
1788 RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_FALSE);
1792 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
1794 ret = drv->API.WaitSyncKHR(drv, disp, s);
1796 RETURN_EGL_EVAL(disp, ret);
1802 _EGLDisplay *disp = _eglLockDisplay(dpy);
1803 _EGLSync *s = _eglLookupSync(sync, disp);
1804 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1805 return _eglWaitSyncCommon(disp, s, flags);
1816 _EGLDisplay *disp = _eglLockDisplay(dpy);
1817 _EGLSync *s = _eglLookupSync(sync, disp);
1818 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1819 return _eglWaitSyncCommon(disp, s, flags);
1826 _EGLDisplay *disp = _eglLockDisplay(dpy);
1827 _EGLSync *s = _eglLookupSync(sync, disp);
1831 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1833 _EGL_CHECK_SYNC(disp, s, EGL_FALSE, drv);
1834 assert(disp->Extensions.KHR_reusable_sync);
1835 ret = drv->API.SignalSyncKHR(drv, disp, s, mode);
1837 RETURN_EGL_EVAL(disp, ret);
1842 _eglGetSyncAttribCommon(_EGLDisplay *disp, _EGLSync *s, EGLint attribute, EGLAttrib *value)
1847 _EGL_CHECK_SYNC(disp, s, EGL_FALSE, drv);
1848 assert(disp->Extensions.KHR_reusable_sync ||
1849 disp->Extensions.KHR_fence_sync ||
1850 disp->Extensions.ANDROID_native_fence_sync);
1851 ret = drv->API.GetSyncAttrib(drv, disp, s, attribute, value);
1853 RETURN_EGL_EVAL(disp, ret);
1859 _EGLDisplay *disp = _eglLockDisplay(dpy);
1860 _EGLSync *s = _eglLookupSync(sync, disp);
1861 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1862 return _eglGetSyncAttribCommon(disp, s, attribute, value);
1869 _EGLDisplay *disp = _eglLockDisplay(dpy);
1870 _EGLSync *s = _eglLookupSync(sync, disp);
1874 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1877 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
1880 result = _eglGetSyncAttribCommon(disp, s, attribute, &attrib);
1896 _EGLDisplay *disp = _eglLockDisplay(dpy);
1897 _EGLSync *s = _eglLookupSync(sync, disp);
1901 _EGL_FUNC_START(disp, EGL_OBJECT_SYNC_KHR, s, EGL_FALSE);
1908 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_NO_NATIVE_FENCE_FD_ANDROID);
1910 _EGL_CHECK_SYNC(disp, s, EGL_NO_NATIVE_FENCE_FD_ANDROID, drv);
1911 assert(disp->Extensions.ANDROID_native_fence_sync);
1912 ret = drv->API.DupNativeFenceFDANDROID(drv, disp, s);
1914 RETURN_EGL_EVAL(disp, ret);
1922 _EGLDisplay *disp = _eglLockDisplay(dpy);
1923 _EGLSurface *surf = _eglLookupSurface(surface, disp);
1927 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
1929 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
1931 if (!disp->Extensions.NOK_swap_region)
1932 RETURN_EGL_EVAL(disp, EGL_FALSE);
1937 RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
1939 ret = drv->API.SwapBuffersRegionNOK(drv, disp, surf, numRects, rects);
1941 RETURN_EGL_EVAL(disp, ret);
1948 _EGLDisplay *disp = _eglLockDisplay(dpy);
1953 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
1955 _EGL_CHECK_DISPLAY(disp, EGL_NO_IMAGE_KHR, drv);
1956 if (!disp->Extensions.MESA_drm_image)
1957 RETURN_EGL_EVAL(disp, EGL_NO_IMAGE_KHR);
1959 img = drv->API.CreateDRMImageMESA(drv, disp, attr_list);
1962 RETURN_EGL_EVAL(disp, ret);
1969 _EGLDisplay *disp = _eglLockDisplay(dpy);
1970 _EGLImage *img = _eglLookupImage(image, disp);
1974 _EGL_FUNC_START(disp, EGL_OBJECT_IMAGE_KHR, img, EGL_FALSE);
1976 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
1977 assert(disp->Extensions.MESA_drm_image);
1980 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
1982 ret = drv->API.ExportDRMImageMESA(drv, disp, img, name, handle, stride);
1984 RETURN_EGL_EVAL(disp, ret);
1993 _EGLDisplay *disp = _eglLockDisplay(dpy);
1997 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
1999 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
2000 assert(disp->Extensions.WL_bind_wayland_display);
2003 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
2005 ret = drv->API.BindWaylandDisplayWL(drv, disp, display);
2007 RETURN_EGL_EVAL(disp, ret);
2013 _EGLDisplay *disp = _eglLockDisplay(dpy);
2017 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
2019 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
2020 assert(disp->Extensions.WL_bind_wayland_display);
2023 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
2025 ret = drv->API.UnbindWaylandDisplayWL(drv, disp, display);
2027 RETURN_EGL_EVAL(disp, ret);
2034 _EGLDisplay *disp = _eglLockDisplay(dpy);
2038 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
2040 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
2041 assert(disp->Extensions.WL_bind_wayland_display);
2044 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
2046 ret = drv->API.QueryWaylandBufferWL(drv, disp, buffer, attribute, value);
2048 RETURN_EGL_EVAL(disp, ret);
2055 _EGLDisplay *disp = _eglLockDisplay(dpy);
2060 _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE);
2062 _EGL_CHECK_DISPLAY(disp, NULL, drv);
2063 assert(disp->Extensions.WL_create_wayland_buffer_from_image);
2065 img = _eglLookupImage(image, disp);
2068 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, NULL);
2070 ret = drv->API.CreateWaylandBufferFromImageWL(drv, disp, img);
2072 RETURN_EGL_EVAL(disp, ret);
2079 _EGLDisplay *disp = _eglLockDisplay(dpy);
2080 _EGLSurface *surf = _eglLookupSurface(surface, disp);
2084 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
2086 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
2088 if (!disp->Extensions.NV_post_sub_buffer)
2089 RETURN_EGL_EVAL(disp, EGL_FALSE);
2091 ret = drv->API.PostSubBufferNV(drv, disp, surf, x, y, width, height);
2093 RETURN_EGL_EVAL(disp, ret);
2101 _EGLDisplay *disp = _eglLockDisplay(display);
2102 _EGLSurface *surf = _eglLookupSurface(surface, disp);
2106 _EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
2108 _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
2109 if (!disp->Extensions.CHROMIUM_sync_control)
2110 RETURN_EGL_EVAL(disp, EGL_FALSE);
2113 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
2115 ret = drv->API.GetSyncValuesCHROMIUM(disp, surf, ust, msc, sbc);
2117 RETURN_EGL_EVAL(disp, ret);
2125 _EGLDisplay *disp = _eglLockDisplay(dpy);
2126 _EGLImage *img = _eglLookupImage(image, disp);
2130 _EGL_FUNC_START(disp, EGL_OBJECT_IMAGE_KHR, img, EGL_FALSE);
2132 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
2133 assert(disp->Extensions.MESA_image_dma_buf_export);
2136 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
2138 ret = drv->API.ExportDMABUFImageQueryMESA(drv, disp, img, fourcc, nplanes,
2141 RETURN_EGL_EVAL(disp, ret);
2148 _EGLDisplay *disp = _eglLockDisplay(dpy);
2149 _EGLImage *img = _eglLookupImage(image, disp);
2153 _EGL_FUNC_START(disp, EGL_OBJECT_IMAGE_KHR, img, EGL_FALSE);
2155 _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
2156 assert(disp->Extensions.MESA_image_dma_buf_export);
2159 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_FALSE);
2161 ret = drv->API.ExportDMABUFImageMESA(drv, disp, img, fds, strides, offsets);
2163 RETURN_EGL_EVAL(disp, ret);
2170 _EGLDisplay *disp = NULL;
2186 disp = _eglLockDisplay(dpy);
2187 if (disp == NULL)
2188 RETURN_EGL_ERROR(disp, EGL_BAD_DISPLAY, EGL_BAD_DISPLAY);
2192 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_BAD_PARAMETER);
2194 disp->Label = label;
2195 RETURN_EGL_EVAL(disp, EGL_SUCCESS);
2213 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_BAD_PARAMETER);
2216 if (_eglCheckResource(object, type, disp)) {
2220 RETURN_EGL_EVAL(disp, EGL_SUCCESS);
2223 RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_BAD_PARAMETER);
2419 _EGLDisplay **disp, _EGLDriver **drv,
2423 *disp = _eglLockDisplay(dpy);
2424 if (!*disp || !(*disp)->Initialized || !(*disp)->Driver) {
2425 if (*disp)
2426 _eglUnlockDisplay(*disp);
2430 *drv = (*disp)->Driver;
2432 *ctx = _eglLookupContext(context, *disp);
2436 _eglUnlockDisplay(*disp);
2447 _EGLDisplay *disp;
2452 ret = _eglLockDisplayInterop(dpy, context, &disp, &drv, &ctx);
2457 ret = drv->API.GLInteropQueryDeviceInfo(disp, ctx, out);
2461 _eglUnlockDisplay(disp);
2470 _EGLDisplay *disp;
2475 ret = _eglLockDisplayInterop(dpy, context, &disp, &drv, &ctx);
2480 ret = drv->API.GLInteropExportObject(disp, ctx, in, out);
2484 _eglUnlockDisplay(disp);