1cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson/************************************************************************** 2cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 3cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonCopyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. 4cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonCopyright 2000 VA Linux Systems, Inc. 5cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonAll Rights Reserved. 6cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 7cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonPermission is hereby granted, free of charge, to any person obtaining a 8cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksoncopy of this software and associated documentation files (the 9cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson"Software"), to deal in the Software without restriction, including 10cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonwithout limitation the rights to use, copy, modify, merge, publish, 11cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksondistribute, sub license, and/or sell copies of the Software, and to 12cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonpermit persons to whom the Software is furnished to do so, subject to 13cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonthe following conditions: 14cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 15cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonThe above copyright notice and this permission notice (including the 16cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonnext paragraph) shall be included in all copies or substantial portions 17cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonof the Software. 18cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 19cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 22cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonIN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 23cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25cb3610e37c4c0a40520441b8515d044dabcc8854Adam JacksonSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 27cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson**************************************************************************/ 28cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 29cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson/* 30cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * Authors: 31cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * Kevin E. Martin <martin@valinux.com> 32877128505431adaf817dc8069172ebe4a1cdf5d8José Fonseca * Jens Owen <jowen@vmware.com> 33cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * Rickard E. (Rik) Faith <faith@valinux.com> 34cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * 35cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson */ 36cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 37cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson/* THIS IS NOT AN X CONSORTIUM STANDARD */ 38cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 3980b280db883edc9550484dba03bd5c124b6a9bf9Jeremy Huddleston#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) 40be85fde82b148c4fc3639fcf3cfedb5de9381fc8Adam Jackson 41cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#include <X11/Xlibint.h> 4238c51a76533a90cf2c9381c99247cfac45fe70ebKristian Høgsberg#include <X11/Xfuncproto.h> 43cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#include <X11/extensions/Xext.h> 4482dfd4b71f932f46e116743b204d0077a0875ab8Brian Paul#include <X11/extensions/extutil.h> 451074eae704f4f68a721cfb9810cd0fde3d3aed07Adam Jackson#include "xf86dristr.h" 462e5a268f18be30df15aed0b44b01a18a37fb5df4Alan Coopersmith#include <limits.h> 47cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 48cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonstatic XExtensionInfo _xf86dri_info_data; 49cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonstatic XExtensionInfo *xf86dri_info = &_xf86dri_info_data; 505dd18e95d9aba8cc444a511808a1df15ca7a037aAdam Jacksonstatic char xf86dri_extension_name[] = XF86DRINAME; 51cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 52cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#define XF86DRICheckExtension(dpy,i,val) \ 53cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson XextCheckExtension (dpy, i, xf86dri_extension_name, val) 54cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 55cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson/***************************************************************************** 56cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 57cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * private utility routines * 58cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 59cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson *****************************************************************************/ 60cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic int close_display(Display * dpy, XExtCodes * extCodes); 62cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonstatic /* const */ XExtensionHooks xf86dri_extension_hooks = { 634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* create_gc */ 644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* copy_gc */ 654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* flush_gc */ 664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* free_gc */ 674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* create_font */ 684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* free_font */ 694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf close_display, /* close_display */ 704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* wire_to_event */ 714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* event_to_wire */ 724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* error */ 734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* error_string */ 74cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson}; 75cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic 774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXEXT_GENERATE_FIND_DISPLAY(find_display, xf86dri_info, 784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xf86dri_extension_name, 794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf &xf86dri_extension_hooks, 0, NULL) 80cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic 824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXEXT_GENERATE_CLOSE_DISPLAY(close_display, xf86dri_info) 83cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 84cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 85cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson/***************************************************************************** 86cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 87cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * public XFree86-DRI Extension routines * 88cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 89cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson *****************************************************************************/ 90cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#if 0 91cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#include <stdio.h> 92cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#define TRACE(msg) fprintf(stderr,"XF86DRI%s\n", msg); 93cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#else 94cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#define TRACE(msg) 95cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#endif 96cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 97697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIQueryExtension(Display * dpy, int *event_basep, 994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *error_basep) 100cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryExtension..."); 1044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (XextHasExtension(info)) { 1054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *event_basep = info->codes->first_event; 1064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *error_basep = info->codes->first_error; 1074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryExtension... return True"); 1084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 1094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 1114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryExtension... return False"); 1124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 114cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 115cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 116697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 1174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIQueryVersion(Display * dpy, int *majorVersion, int *minorVersion, 1184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *patchVersion) 119cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1204d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryVersionReply rep; 1224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryVersionReq *req; 1234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryVersion..."); 1254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 1264d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 1284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIQueryVersion, req); 1294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 1304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIQueryVersion; 1314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 1324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryVersion... return False"); 1354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *majorVersion = rep.majorVersion; 1384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *minorVersion = rep.minorVersion; 1394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *patchVersion = rep.patchVersion; 1404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryVersion... return True"); 1434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 144cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 145cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 146697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 1474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIQueryDirectRenderingCapable(Display * dpy, int screen, 1484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf Bool * isCapable) 149cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryDirectRenderingCapableReply rep; 1524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryDirectRenderingCapableReq *req; 1534d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1544d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryDirectRenderingCapable..."); 1554d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 1564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 1584d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIQueryDirectRenderingCapable, req); 1594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 1604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIQueryDirectRenderingCapable; 1614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 1624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 1634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryDirectRenderingCapable... return False"); 1664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *isCapable = rep.isCapable; 1694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryDirectRenderingCapable... return True"); 1724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 173cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 174cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 175697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 1764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIOpenConnection(Display * dpy, int screen, drm_handle_t * hSAREA, 1774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf char **busIdString) 178cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIOpenConnectionReply rep; 1814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIOpenConnectionReq *req; 1824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection..."); 1844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 1854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 1874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIOpenConnection, req); 1884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 1894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIOpenConnection; 1904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 1914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 1924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection... return False"); 1954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hSAREA = rep.hSAREALow; 1994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (sizeof(drm_handle_t) == 8) { 2004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int shift = 32; /* var to prevent warning on next line */ 2014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hSAREA |= ((drm_handle_t) rep.hSAREAHigh) << shift; 2024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length) { 2052e5a268f18be30df15aed0b44b01a18a37fb5df4Alan Coopersmith if (rep.busIdStringLength < INT_MAX) 2062e5a268f18be30df15aed0b44b01a18a37fb5df4Alan Coopersmith *busIdString = calloc(rep.busIdStringLength + 1, 1); 2072e5a268f18be30df15aed0b44b01a18a37fb5df4Alan Coopersmith else 2082e5a268f18be30df15aed0b44b01a18a37fb5df4Alan Coopersmith *busIdString = NULL; 2092e5a268f18be30df15aed0b44b01a18a37fb5df4Alan Coopersmith if (*busIdString == NULL) { 2104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, ((rep.busIdStringLength + 3) & ~3)); 2114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection... return False"); 2144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 2154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XReadPad(dpy, *busIdString, rep.busIdStringLength); 2174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 2194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *busIdString = NULL; 2204d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection... return True"); 2244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 225cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 226cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 227697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 2284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIAuthConnection(Display * dpy, int screen, drm_magic_t magic) 229cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 2304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 2314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIAuthConnectionReq *req; 2324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIAuthConnectionReply rep; 2334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("AuthConnection..."); 2354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 2364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 2384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIAuthConnection, req); 2394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 2404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIAuthConnection; 2414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 2424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->magic = magic; 2434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf rep.authenticated = 0; 2444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.authenticated) { 2454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("AuthConnection... return False"); 2484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 2494d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("AuthConnection... return True"); 2534d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 254cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 255cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 256697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 2574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICloseConnection(Display * dpy, int screen) 258cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 2594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 2604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICloseConnectionReq *req; 2614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CloseConnection..."); 2634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 2654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 2674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRICloseConnection, req); 2684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 2694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRICloseConnection; 2704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 2714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CloseConnection... return True"); 2744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 275cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 276cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 277697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 2784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIGetClientDriverName(Display * dpy, int screen, 2794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *ddxDriverMajorVersion, 2804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *ddxDriverMinorVersion, 2814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *ddxDriverPatchVersion, 2824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf char **clientDriverName) 283cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 2844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 2854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetClientDriverNameReply rep; 2864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetClientDriverNameReq *req; 2874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName..."); 2894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 2904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 2924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIGetClientDriverName, req); 2934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 2944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIGetClientDriverName; 2954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 2964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 2974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName... return False"); 3004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 3014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *ddxDriverMajorVersion = rep.ddxDriverMajorVersion; 3044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *ddxDriverMinorVersion = rep.ddxDriverMinorVersion; 3054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *ddxDriverPatchVersion = rep.ddxDriverPatchVersion; 3064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length) { 308306f630e676eb901789dd09a0f30d7e7fa941ebeAlan Coopersmith if (rep.clientDriverNameLength < INT_MAX) 309306f630e676eb901789dd09a0f30d7e7fa941ebeAlan Coopersmith *clientDriverName = calloc(rep.clientDriverNameLength + 1, 1); 310306f630e676eb901789dd09a0f30d7e7fa941ebeAlan Coopersmith else 311306f630e676eb901789dd09a0f30d7e7fa941ebeAlan Coopersmith *clientDriverName = NULL; 312306f630e676eb901789dd09a0f30d7e7fa941ebeAlan Coopersmith if (*clientDriverName == NULL) { 3134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, ((rep.clientDriverNameLength + 3) & ~3)); 3144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName... return False"); 3174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 3184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XReadPad(dpy, *clientDriverName, rep.clientDriverNameLength); 3204d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 3224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *clientDriverName = NULL; 3234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3264d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName... return True"); 3274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 328cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 329cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 330697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICreateContextWithConfig(Display * dpy, int screen, int configID, 3324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XID * context, drm_context_t * hHWContext) 333cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 3354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateContextReply rep; 3364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateContextReq *req; 3374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateContext..."); 3394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 3404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 3424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRICreateContext, req); 3434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 3444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRICreateContext; 3454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->visual = configID; 3464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 3474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *context = XAllocID(dpy); 3484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->context = *context; 3494d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 3504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateContext... return False"); 3534d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 3544d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3554d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hHWContext = rep.hHWContext; 3564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3584d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateContext... return True"); 3594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 360cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 361cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 362697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICreateContext(Display * dpy, int screen, Visual * visual, 3644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XID * context, drm_context_t * hHWContext) 365cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return XF86DRICreateContextWithConfig(dpy, screen, visual->visualid, 3674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf context, hHWContext); 368cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 369cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 370697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIDestroyContext(Display * dpy, int screen, XID context) 372cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 3744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIDestroyContextReq *req; 3754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyContext..."); 3774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 3784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 3804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIDestroyContext, req); 3814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 3824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIDestroyContext; 3834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 3844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->context = context; 3854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyContext... return True"); 3884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 389cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 390cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 391697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICreateDrawable(Display * dpy, int screen, 3934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XID drawable, drm_drawable_t * hHWDrawable) 394cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 3964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateDrawableReply rep; 3974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateDrawableReq *req; 3984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateDrawable..."); 4004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 4014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 4034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRICreateDrawable, req); 4044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 4054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRICreateDrawable; 4064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 4074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->drawable = drawable; 4084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 4094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateDrawable... return False"); 4124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 4134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 4144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hHWDrawable = rep.hHWDrawable; 4154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateDrawable... return True"); 4184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 419cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 420cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 4214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic int 4224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófnoopErrorHandler(Display * dpy, XErrorEvent * xerr) 4234a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsberg{ 4244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return 0; 4254a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsberg} 4264a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsberg 427697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 4284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIDestroyDrawable(Display * dpy, int screen, XID drawable) 429cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 4304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 4314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIDestroyDrawableReq *req; 4324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int (*oldXErrorHandler) (Display *, XErrorEvent *); 4334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyDrawable..."); 4354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 4364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* This is called from the DRI driver, which used call it like this 4384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * 4394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * if (windowExists(drawable)) 4404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * destroyDrawable(drawable); 4414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * 4424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * which is a textbook race condition - the window may disappear 44305e7f7f4388bde882b7ce74124000a4d435affffZoë Blade * from the server between checking for its existence and 4444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * destroying it. Instead we change the semantics of 4454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * __DRIinterfaceMethodsRec::destroyDrawable() to succeed even if 4464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * the windows is gone, by wrapping the destroy call in an error 4474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * handler. */ 4484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4494d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XSync(dpy, False); 4504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf oldXErrorHandler = XSetErrorHandler(noopErrorHandler); 4514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 4534d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIDestroyDrawable, req); 4544d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 4554d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIDestroyDrawable; 4564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 4574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->drawable = drawable; 4584d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XSetErrorHandler(oldXErrorHandler); 4624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyDrawable... return True"); 4644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 465cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 466cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 467697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 4684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIGetDrawableInfo(Display * dpy, int screen, Drawable drawable, 4694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf unsigned int *index, unsigned int *stamp, 4704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *X, int *Y, int *W, int *H, 4714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *numClipRects, drm_clip_rect_t ** pClipRects, 4724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *backX, int *backY, 4734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *numBackClipRects, 4744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf drm_clip_rect_t ** pBackClipRects) 475cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 4764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 4774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDrawableInfoReply rep; 4784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDrawableInfoReq *req; 4794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int total_rects; 4804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo..."); 4824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 4834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 4854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIGetDrawableInfo, req); 4864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 4874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIGetDrawableInfo; 4884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 4894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->drawable = drawable; 4904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 1, xFalse)) { 4924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo... return False"); 4954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 4964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 4974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *index = rep.drawableTableIndex; 4984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *stamp = rep.drawableTableStamp; 4994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *X = (int) rep.drawableX; 5004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *Y = (int) rep.drawableY; 5014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *W = (int) rep.drawableWidth; 5024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *H = (int) rep.drawableHeight; 5034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *numClipRects = rep.numClipRects; 5044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf total_rects = *numClipRects; 5054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *backX = rep.backX; 5074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *backY = rep.backY; 5084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *numBackClipRects = rep.numBackClipRects; 5094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf total_rects += *numBackClipRects; 510cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 511cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#if 0 5124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* Because of the fix in Xserver/GL/dri/xf86dri.c, this check breaks 5134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * backwards compatibility (Because of the >> 2 shift) but the fix 5144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * enables multi-threaded apps to work. 5154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf */ 5164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length != ((((SIZEOF(xXF86DRIGetDrawableInfoReply) - 5174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SIZEOF(xGenericReply) + 5184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf total_rects * sizeof(drm_clip_rect_t)) + 5194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3) & ~3) >> 2)) { 5204d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, rep.length); 5214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo... return False"); 5244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 5254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 526cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#endif 527cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 5284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*numClipRects) { 5294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int len = sizeof(drm_clip_rect_t) * (*numClipRects); 5304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5312b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner *pClipRects = calloc(len, 1); 5324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*pClipRects) 5334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XRead(dpy, (char *) *pClipRects, len); 5344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 5364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *pClipRects = NULL; 5374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*numBackClipRects) { 5404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int len = sizeof(drm_clip_rect_t) * (*numBackClipRects); 5414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5422b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner *pBackClipRects = calloc(len, 1); 5434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*pBackClipRects) 5444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XRead(dpy, (char *) *pBackClipRects, len); 5454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 5474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *pBackClipRects = NULL; 5484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5494d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo... return True"); 5534d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 554cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 555cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 556697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 5574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIGetDeviceInfo(Display * dpy, int screen, drm_handle_t * hFrameBuffer, 5584d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *fbOrigin, int *fbSize, int *fbStride, 5594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *devPrivateSize, void **pDevPrivate) 560cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 5614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 5624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDeviceInfoReply rep; 5634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDeviceInfoReq *req; 5644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo..."); 5664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 5674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 5694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIGetDeviceInfo, req); 5704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 5714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIGetDeviceInfo; 5724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 5734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 5744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo... return False"); 5774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 5784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hFrameBuffer = rep.hFrameBufferLow; 5814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (sizeof(drm_handle_t) == 8) { 5824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int shift = 32; /* var to prevent warning on next line */ 5834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hFrameBuffer |= ((drm_handle_t) rep.hFrameBufferHigh) << shift; 5844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *fbOrigin = rep.framebufferOrigin; 5874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *fbSize = rep.framebufferSize; 5884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *fbStride = rep.framebufferStride; 5894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *devPrivateSize = rep.devPrivateSize; 5904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length) { 5922b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner if (!(*pDevPrivate = calloc(rep.devPrivateSize, 1))) { 5934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, ((rep.devPrivateSize + 3) & ~3)); 5944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo... return False"); 5974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 5984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XRead(dpy, (char *) *pDevPrivate, rep.devPrivateSize); 6004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 6014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 6024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *pDevPrivate = NULL; 6034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 6044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 6054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 6064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 6074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo... return True"); 6084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 609cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 610cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 611697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 6124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIOpenFullScreen(Display * dpy, int screen, Drawable drawable) 613cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 6144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* This function and the underlying X protocol are deprecated. 6154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf */ 6164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) dpy; 6174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) screen; 6184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) drawable; 6194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 620cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 621cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 622697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 6234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICloseFullScreen(Display * dpy, int screen, Drawable drawable) 624cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 6254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* This function and the underlying X protocol are deprecated. 6264d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf */ 6274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) dpy; 6284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) screen; 6294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) drawable; 6304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 631cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 632be85fde82b148c4fc3639fcf3cfedb5de9381fc8Adam Jackson 633be85fde82b148c4fc3639fcf3cfedb5de9381fc8Adam Jackson#endif /* GLX_DIRECT_RENDERING */ 634