• Home
  • Raw
  • Download

Lines Matching +full:use +full:- +full:base +full:- +full:image

4  * Permission to use, copy, modify, distribute, and sell this software and its
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
30 * copy of this software and associated documentation files (the "Soft-
32 * limitation the rights to use, copy, modify, merge, publish, distribute,
35 * notice(s) and this permission notice appear in all copies of the Soft-
40 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
43 * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
44 * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
46 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
50 * not be used in advertising or otherwise to promote the sale, use or
62 #include <X11/Xlib-xcb.h>
87 return (struct dri3_drawable *)(((void*) draw) - offset); in loader_drawable_to_dri3_drawable()
106 struct dri3_screen *psc = (struct dri3_screen *) priv->base.psc; in glx_dri3_in_current_context()
108 return (&pcp->base != &dummyContext) && pcp->base.psc == &psc->base; in glx_dri3_in_current_context()
117 return (gc != &dummyContext) ? dri3Ctx->driContext : NULL; in glx_dri3_get_dri_context()
125 struct dri3_screen *psc = (struct dri3_screen *) pcp->base.psc; in glx_dri3_get_dri_screen()
127 return (gc != &dummyContext && psc) ? psc->driScreen : NULL; in glx_dri3_get_dri_screen()
141 ((struct dri3_screen *) priv->base.psc)->show_fps_interval; in glx_dri3_show_fps()
146 priv->frames++; in glx_dri3_show_fps()
149 if (priv->previous_ust + interval * 1000000 <= current_ust) { in glx_dri3_show_fps()
150 if (priv->previous_ust) { in glx_dri3_show_fps()
152 ((uint64_t) priv->frames * 1000000) / in glx_dri3_show_fps()
153 (double)(current_ust - priv->previous_ust)); in glx_dri3_show_fps()
155 priv->frames = 0; in glx_dri3_show_fps()
156 priv->previous_ust = current_ust; in glx_dri3_show_fps()
176 struct dri3_screen *psc = (struct dri3_screen *) context->psc; in dri3_destroy_context()
178 driReleaseDrawables(&pcp->base); in dri3_destroy_context()
180 free((char *) context->extensions); in dri3_destroy_context()
182 (*psc->core->destroyContext) (pcp->driContext); in dri3_destroy_context()
192 struct dri3_screen *psc = (struct dri3_screen *) pcp->base.psc; in dri3_bind_context()
202 dri_draw = pdraw->loader_drawable.dri_drawable; in dri3_bind_context()
207 dri_read = pread->loader_drawable.dri_drawable; in dri3_bind_context()
211 if (!(*psc->core->bindContext) (pcp->driContext, dri_draw, dri_read)) in dri3_bind_context()
215 psc->f->invalidate(dri_draw); in dri3_bind_context()
217 psc->f->invalidate(dri_read); in dri3_bind_context()
226 struct dri3_screen *psc = (struct dri3_screen *) pcp->base.psc; in dri3_unbind_context()
228 (*psc->core->unbindContext) (pcp->driContext); in dri3_unbind_context()
232 dri3_create_context_attribs(struct glx_screen *base, in dri3_create_context_attribs() argument
241 struct dri3_screen *psc = (struct dri3_screen *) base; in dri3_create_context_attribs()
259 if (!shareList->isDirect) in dri3_create_context_attribs()
268 if (!!shareList->noError != !!dca.no_error) { in dri3_create_context_attribs()
274 shared = pcp_shared->driContext; in dri3_create_context_attribs()
283 if (!glx_context_init(&pcp->base, &psc->base, config_base)) in dri3_create_context_attribs()
291 /* Only send a value when the non-default value is requested. By doing in dri3_create_context_attribs()
308 pcp->base.noError = GL_TRUE; in dri3_create_context_attribs()
316 pcp->base.renderType = dca.render_type; in dri3_create_context_attribs()
318 pcp->driContext = in dri3_create_context_attribs()
319 (*psc->image_driver->createContextAttribs) (psc->driScreen, in dri3_create_context_attribs()
321 config ? config->driConfig in dri3_create_context_attribs()
329 if (pcp->driContext == NULL) in dri3_create_context_attribs()
332 pcp->base.vtable = base->context_vtable; in dri3_create_context_attribs()
334 return &pcp->base; in dri3_create_context_attribs()
343 dri3_destroy_drawable(__GLXDRIdrawable *base) in dri3_destroy_drawable() argument
345 struct dri3_drawable *pdraw = (struct dri3_drawable *) base; in dri3_destroy_drawable()
347 loader_dri3_drawable_fini(&pdraw->loader_drawable); in dri3_destroy_drawable()
368 dri3_create_drawable(struct glx_screen *base, XID xDrawable, in dri3_create_drawable() argument
373 struct dri3_screen *psc = (struct dri3_screen *) base; in dri3_create_drawable()
378 base->display->dri3Display; in dri3_create_drawable()
385 pdraw->base.destroyDrawable = dri3_destroy_drawable; in dri3_create_drawable()
386 pdraw->base.xDrawable = xDrawable; in dri3_create_drawable()
387 pdraw->base.drawable = drawable; in dri3_create_drawable()
388 pdraw->base.psc = &psc->base; in dri3_create_drawable()
391 if ((psc->image && psc->image->base.version >= 15) && in dri3_create_drawable()
392 (pdp->dri3Major > 1 || (pdp->dri3Major == 1 && pdp->dri3Minor >= 2)) && in dri3_create_drawable()
393 (pdp->presentMajor > 1 || in dri3_create_drawable()
394 (pdp->presentMajor == 1 && pdp->presentMinor >= 2))) in dri3_create_drawable()
398 (void) __glXInitialize(psc->base.dpy); in dri3_create_drawable()
400 if (loader_dri3_drawable_init(XGetXCBConnection(base->dpy), in dri3_create_drawable()
403 psc->driScreen, in dri3_create_drawable()
404 psc->is_different_gpu, has_multibuffer, in dri3_create_drawable()
405 psc->prefer_back_buffer_reuse, in dri3_create_drawable()
406 config->driConfig, in dri3_create_drawable()
407 &psc->loader_dri3_ext, &glx_dri3_vtable, in dri3_create_drawable()
408 &pdraw->loader_drawable)) { in dri3_create_drawable()
413 pdraw->loader_drawable.dri_screen_display_gpu = psc->driScreenDisplayGPU; in dri3_create_drawable()
414 return &pdraw->base; in dri3_create_drawable()
428 loader_dri3_wait_for_msc(&priv->loader_drawable, target_msc, divisor, in dri3_wait_for_msc()
458 return loader_dri3_wait_for_sbc(&priv->loader_drawable, target_sbc, in dri3_wait_for_sbc()
469 loader_dri3_copy_sub_buffer(&priv->loader_drawable, x, y, in dri3_copy_sub_buffer()
477 GetGLXDRIDrawable(gc->currentDpy, gc->currentDrawable); in dri3_wait_x()
480 loader_dri3_wait_x(&priv->loader_drawable); in dri3_wait_x()
487 GetGLXDRIDrawable(gc->currentDpy, gc->currentDrawable); in dri3_wait_gl()
490 loader_dri3_wait_gl(&priv->loader_drawable); in dri3_wait_gl()
507 if (!pdraw->base.psc) in dri3_flush_front_buffer()
510 psc = (struct dri3_screen *) pdraw->base.psc; in dri3_flush_front_buffer()
512 (void) __glXInitialize(psc->base.dpy); in dri3_flush_front_buffer()
516 psc->f->invalidate(driDrawable); in dri3_flush_front_buffer()
538 if (!pdraw->base.psc) in dri3_flush_swap_buffers()
541 psc = (struct dri3_screen *) pdraw->base.psc; in dri3_flush_swap_buffers()
543 (void) __glXInitialize(psc->base.dpy); in dri3_flush_swap_buffers()
551 __glXSetCurrentContext(&pcp->base); in dri_set_background_context()
563 /* The image loader extension record for DRI3
566 .base = { __DRI_IMAGE_LOADER, 3 },
574 .base = { __DRI_USE_INVALIDATE, 1 }
578 .base = { __DRI_BACKGROUND_CALLABLE, 2 },
585 &imageLoaderExtension.base,
586 &dri3UseInvalidate.base,
587 &driBackgroundCallable.base,
605 return loader_dri3_swap_buffers_msc(&priv->loader_drawable, in dri3_swap_buffers()
615 return loader_dri3_query_buffer_age(&priv->loader_drawable); in dri3_get_buffer_age()
621 dri3_destroy_screen(struct glx_screen *base) in dri3_destroy_screen() argument
623 struct dri3_screen *psc = (struct dri3_screen *) base; in dri3_destroy_screen()
626 if (psc->is_different_gpu) { in dri3_destroy_screen()
627 if (psc->driScreenDisplayGPU) { in dri3_destroy_screen()
628 loader_dri3_close_screen(psc->driScreenDisplayGPU); in dri3_destroy_screen()
629 (*psc->core->destroyScreen) (psc->driScreenDisplayGPU); in dri3_destroy_screen()
631 close(psc->fd_display_gpu); in dri3_destroy_screen()
633 loader_dri3_close_screen(psc->driScreen); in dri3_destroy_screen()
634 (*psc->core->destroyScreen) (psc->driScreen); in dri3_destroy_screen()
635 driDestroyConfigs(psc->driver_configs); in dri3_destroy_screen()
636 close(psc->fd); in dri3_destroy_screen()
650 struct dri3_screen *psc = (struct dri3_screen *) priv->base.psc; in dri3_set_swap_interval()
652 if (!dri_valid_swap_interval(psc->driScreen, psc->config, interval)) in dri3_set_swap_interval()
655 loader_dri3_set_swap_interval(&priv->loader_drawable, interval); in dri3_set_swap_interval()
671 return priv->loader_drawable.swap_interval; in dri3_get_swap_interval()
675 dri3_bind_tex_image(__GLXDRIdrawable *base, in dri3_bind_tex_image() argument
680 struct dri3_drawable *pdraw = (struct dri3_drawable *) base; in dri3_bind_tex_image()
684 psc = (struct dri3_screen *) base->psc; in dri3_bind_tex_image()
686 psc->f->invalidate(pdraw->loader_drawable.dri_drawable); in dri3_bind_tex_image()
688 XSync(gc->currentDpy, false); in dri3_bind_tex_image()
690 (*psc->texBuffer->setTexBuffer2) (pcp->driContext, in dri3_bind_tex_image()
691 pdraw->base.textureTarget, in dri3_bind_tex_image()
692 pdraw->base.textureFormat, in dri3_bind_tex_image()
693 pdraw->loader_drawable.dri_drawable); in dri3_bind_tex_image()
698 dri3_release_tex_image(__GLXDRIdrawable *base, int buffer) in dri3_release_tex_image() argument
702 struct dri3_drawable *pdraw = (struct dri3_drawable *) base; in dri3_release_tex_image()
706 psc = (struct dri3_screen *) base->psc; in dri3_release_tex_image()
708 if (psc->texBuffer->base.version >= 3 && in dri3_release_tex_image()
709 psc->texBuffer->releaseTexBuffer != NULL) in dri3_release_tex_image()
710 (*psc->texBuffer->releaseTexBuffer) (pcp->driContext, in dri3_release_tex_image()
711 pdraw->base.textureTarget, in dri3_release_tex_image()
712 pdraw->loader_drawable.dri_drawable); in dri3_release_tex_image()
738 extensions = psc->core->getExtensions(psc->driScreen); in dri3_bind_extensions()
740 __glXEnableDirectExtension(&psc->base, "GLX_EXT_swap_control"); in dri3_bind_extensions()
741 __glXEnableDirectExtension(&psc->base, "GLX_EXT_swap_control_tear"); in dri3_bind_extensions()
742 __glXEnableDirectExtension(&psc->base, "GLX_SGI_swap_control"); in dri3_bind_extensions()
743 __glXEnableDirectExtension(&psc->base, "GLX_MESA_swap_control"); in dri3_bind_extensions()
744 __glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read"); in dri3_bind_extensions()
745 __glXEnableDirectExtension(&psc->base, "GLX_INTEL_swap_event"); in dri3_bind_extensions()
747 mask = psc->image_driver->getAPIMask(psc->driScreen); in dri3_bind_extensions()
749 __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context"); in dri3_bind_extensions()
750 __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile"); in dri3_bind_extensions()
751 __glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context"); in dri3_bind_extensions()
756 __glXEnableDirectExtension(&psc->base, in dri3_bind_extensions()
758 __glXEnableDirectExtension(&psc->base, in dri3_bind_extensions()
767 if (!psc->is_different_gpu && in dri3_bind_extensions()
768 (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0)) { in dri3_bind_extensions()
769 psc->texBuffer = (__DRItexBufferExtension *) extensions[i]; in dri3_bind_extensions()
770 __glXEnableDirectExtension(&psc->base, "GLX_EXT_texture_from_pixmap"); in dri3_bind_extensions()
773 if ((strcmp(extensions[i]->name, __DRI2_FLUSH) == 0)) { in dri3_bind_extensions()
774 psc->f = (__DRI2flushExtension *) extensions[i]; in dri3_bind_extensions()
778 if (strcmp(extensions[i]->name, __DRI_IMAGE) == 0) in dri3_bind_extensions()
779 psc->image = (__DRIimageExtension *) extensions[i]; in dri3_bind_extensions()
781 if ((strcmp(extensions[i]->name, __DRI2_CONFIG_QUERY) == 0)) in dri3_bind_extensions()
782 psc->config = (__DRI2configQueryExtension *) extensions[i]; in dri3_bind_extensions()
784 if (strcmp(extensions[i]->name, __DRI2_ROBUSTNESS) == 0) in dri3_bind_extensions()
785 __glXEnableDirectExtension(&psc->base, in dri3_bind_extensions()
788 if (strcmp(extensions[i]->name, __DRI2_RENDERER_QUERY) == 0) { in dri3_bind_extensions()
789 psc->rendererQuery = (__DRI2rendererQueryExtension *) extensions[i]; in dri3_bind_extensions()
790 __glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer"); in dri3_bind_extensions()
792 if (psc->rendererQuery->queryInteger(psc->driScreen, in dri3_bind_extensions()
795 __glXEnableDirectExtension(&psc->base, in dri3_bind_extensions()
799 if (strcmp(extensions[i]->name, __DRI2_INTEROP) == 0) in dri3_bind_extensions()
800 psc->interop = (__DRI2interopExtension*)extensions[i]; in dri3_bind_extensions()
802 if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) in dri3_bind_extensions()
803 __glXEnableDirectExtension(&psc->base, in dri3_bind_extensions()
813 return loader_get_driver_for_fd(psc->fd); in dri3_get_driver_name()
839 xcb_connection_t *c = XGetXCBConnection(priv->dpy); in dri3_create_screen()
843 priv->dri3Display; in dri3_create_screen()
854 psc->fd = -1; in dri3_create_screen()
855 psc->fd_display_gpu = -1; in dri3_create_screen()
857 if (!glx_screen_init(&psc->base, screen, priv)) { in dri3_create_screen()
862 psc->fd = loader_dri3_open(c, RootWindow(priv->dpy, screen), None); in dri3_create_screen()
863 if (psc->fd < 0) { in dri3_create_screen()
866 glx_screen_cleanup(&psc->base); in dri3_create_screen()
876 psc->fd_display_gpu = fcntl(psc->fd, F_DUPFD_CLOEXEC, 3); in dri3_create_screen()
877 psc->fd = loader_get_user_preferred_fd(psc->fd, &psc->is_different_gpu); in dri3_create_screen()
878 if (!psc->is_different_gpu) { in dri3_create_screen()
879 close(psc->fd_display_gpu); in dri3_create_screen()
880 psc->fd_display_gpu = -1; in dri3_create_screen()
883 driverName = loader_get_driver_for_fd(psc->fd); in dri3_create_screen()
889 extensions = driOpenDriver(driverName, &psc->driver); in dri3_create_screen()
894 if (strcmp(extensions[i]->name, __DRI_CORE) == 0) in dri3_create_screen()
895 psc->core = (__DRIcoreExtension *) extensions[i]; in dri3_create_screen()
896 if (strcmp(extensions[i]->name, __DRI_IMAGE_DRIVER) == 0) in dri3_create_screen()
897 psc->image_driver = (__DRIimageDriverExtension *) extensions[i]; in dri3_create_screen()
901 if (psc->core == NULL) { in dri3_create_screen()
906 if (psc->image_driver == NULL) { in dri3_create_screen()
907 ErrorMessageF("image driver extension not found\n"); in dri3_create_screen()
911 if (psc->is_different_gpu) { in dri3_create_screen()
912 driverNameDisplayGPU = loader_get_driver_for_fd(psc->fd_display_gpu); in dri3_create_screen()
916 * will not crash. Also need this check since image extension in dri3_create_screen()
917 * pointer from render gpu is shared with display gpu. Image in dri3_create_screen()
921 psc->driScreenDisplayGPU = in dri3_create_screen()
922 psc->image_driver->createNewScreen2(screen, psc->fd_display_gpu, in dri3_create_screen()
923 pdp->loader_extensions, in dri3_create_screen()
932 psc->driScreen = in dri3_create_screen()
933 psc->image_driver->createNewScreen2(screen, psc->fd, in dri3_create_screen()
934 pdp->loader_extensions, in dri3_create_screen()
938 if (psc->driScreen == NULL) { in dri3_create_screen()
945 if (!psc->image || psc->image->base.version < 7 || !psc->image->createImageFromFds) { in dri3_create_screen()
946 ErrorMessageF("Version 7 or imageFromFds image extension not found\n"); in dri3_create_screen()
950 if (!psc->f || psc->f->base.version < 4) { in dri3_create_screen()
955 if (psc->is_different_gpu && psc->image->base.version < 9) { in dri3_create_screen()
956 ErrorMessageF("Different GPU, but image extension version 9 or later not found\n"); in dri3_create_screen()
960 if (psc->is_different_gpu && !psc->image->blitImage) { in dri3_create_screen()
965 if (!psc->is_different_gpu && ( in dri3_create_screen()
966 !psc->texBuffer || psc->texBuffer->base.version < 2 || in dri3_create_screen()
967 !psc->texBuffer->setTexBuffer2 in dri3_create_screen()
973 psc->loader_dri3_ext.core = psc->core; in dri3_create_screen()
974 psc->loader_dri3_ext.image_driver = psc->image_driver; in dri3_create_screen()
975 psc->loader_dri3_ext.flush = psc->f; in dri3_create_screen()
976 psc->loader_dri3_ext.tex_buffer = psc->texBuffer; in dri3_create_screen()
977 psc->loader_dri3_ext.image = psc->image; in dri3_create_screen()
978 psc->loader_dri3_ext.config = psc->config; in dri3_create_screen()
980 configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs); in dri3_create_screen()
981 visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs); in dri3_create_screen()
988 glx_config_destroy_list(psc->base.configs); in dri3_create_screen()
989 psc->base.configs = configs; in dri3_create_screen()
990 glx_config_destroy_list(psc->base.visuals); in dri3_create_screen()
991 psc->base.visuals = visuals; in dri3_create_screen()
993 psc->driver_configs = driver_configs; in dri3_create_screen()
995 psc->base.vtable = &dri3_screen_vtable; in dri3_create_screen()
996 psc->base.context_vtable = &dri3_context_vtable; in dri3_create_screen()
997 psp = &psc->vtable; in dri3_create_screen()
998 psc->base.driScreen = psp; in dri3_create_screen()
999 psp->destroyScreen = dri3_destroy_screen; in dri3_create_screen()
1000 psp->createDrawable = dri3_create_drawable; in dri3_create_screen()
1001 psp->swapBuffers = dri3_swap_buffers; in dri3_create_screen()
1003 psp->getDrawableMSC = dri3_drawable_get_msc; in dri3_create_screen()
1004 psp->waitForMSC = dri3_wait_for_msc; in dri3_create_screen()
1005 psp->waitForSBC = dri3_wait_for_sbc; in dri3_create_screen()
1006 psp->setSwapInterval = dri3_set_swap_interval; in dri3_create_screen()
1007 psp->getSwapInterval = dri3_get_swap_interval; in dri3_create_screen()
1008 psp->bindTexImage = dri3_bind_tex_image; in dri3_create_screen()
1009 psp->releaseTexImage = dri3_release_tex_image; in dri3_create_screen()
1010 psp->maxSwapInterval = INT_MAX; in dri3_create_screen()
1012 __glXEnableDirectExtension(&psc->base, "GLX_OML_sync_control"); in dri3_create_screen()
1013 __glXEnableDirectExtension(&psc->base, "GLX_SGI_video_sync"); in dri3_create_screen()
1015 psp->copySubBuffer = dri3_copy_sub_buffer; in dri3_create_screen()
1016 __glXEnableDirectExtension(&psc->base, "GLX_MESA_copy_sub_buffer"); in dri3_create_screen()
1018 psp->getBufferAge = dri3_get_buffer_age; in dri3_create_screen()
1019 __glXEnableDirectExtension(&psc->base, "GLX_EXT_buffer_age"); in dri3_create_screen()
1021 if (psc->config->base.version > 1 && in dri3_create_screen()
1022 psc->config->configQuerys(psc->driScreen, "glx_extension_override", in dri3_create_screen()
1024 __glXParseExtensionOverride(&psc->base, tmp); in dri3_create_screen()
1026 if (psc->config->base.version > 1 && in dri3_create_screen()
1027 psc->config->configQuerys(psc->driScreen, in dri3_create_screen()
1030 __IndirectGlParseExtensionOverride(&psc->base, tmp); in dri3_create_screen()
1032 if (psc->config->base.version > 1) { in dri3_create_screen()
1034 if (psc->config->configQueryb(psc->driScreen, "force_direct_glx_context", in dri3_create_screen()
1036 psc->base.force_direct_context = force; in dri3_create_screen()
1040 if (psc->config->configQueryb(psc->driScreen, in dri3_create_screen()
1043 psc->base.allow_invalid_glx_destroy_window = invalid_glx_destroy_window; in dri3_create_screen()
1047 if (psc->config->configQueryb(psc->driScreen, in dri3_create_screen()
1050 psc->base.keep_native_window_glx_drawable = keep_native_window_glx_drawable; in dri3_create_screen()
1057 psc->show_fps_interval = tmp ? atoi(tmp) : 0; in dri3_create_screen()
1058 if (psc->show_fps_interval < 0) in dri3_create_screen()
1059 psc->show_fps_interval = 0; in dri3_create_screen()
1063 psc->prefer_back_buffer_reuse = 1; in dri3_create_screen()
1064 if (psc->is_different_gpu && psc->rendererQuery) { in dri3_create_screen()
1066 if (psc->rendererQuery->queryInteger(psc->driScreen, in dri3_create_screen()
1069 psc->prefer_back_buffer_reuse = value; in dri3_create_screen()
1072 return &psc->base; in dri3_create_screen()
1081 if (psc->driScreen) in dri3_create_screen()
1082 psc->core->destroyScreen(psc->driScreen); in dri3_create_screen()
1083 psc->driScreen = NULL; in dri3_create_screen()
1084 if (psc->driScreenDisplayGPU) in dri3_create_screen()
1085 psc->core->destroyScreen(psc->driScreenDisplayGPU); in dri3_create_screen()
1086 psc->driScreenDisplayGPU = NULL; in dri3_create_screen()
1087 if (psc->fd >= 0) in dri3_create_screen()
1088 close(psc->fd); in dri3_create_screen()
1089 if (psc->fd_display_gpu >= 0) in dri3_create_screen()
1090 close(psc->fd_display_gpu); in dri3_create_screen()
1091 if (psc->driver) in dri3_create_screen()
1092 dlclose(psc->driver); in dri3_create_screen()
1095 glx_screen_cleanup(&psc->base); in dri3_create_screen()
1146 if (!(extension && extension->present)) in dri3_create_display()
1150 if (!(extension && extension->present)) in dri3_create_display()
1170 pdp->dri3Major = dri3_reply->major_version; in dri3_create_display()
1171 pdp->dri3Minor = dri3_reply->minor_version; in dri3_create_display()
1179 pdp->presentMajor = present_reply->major_version; in dri3_create_display()
1180 pdp->presentMinor = present_reply->minor_version; in dri3_create_display()
1183 pdp->base.destroyDisplay = dri3_destroy_display; in dri3_create_display()
1184 pdp->base.createScreen = dri3_create_screen; in dri3_create_display()
1186 pdp->loader_extensions = loader_extensions; in dri3_create_display()
1188 return &pdp->base; in dri3_create_display()