XF86dri.c revision 2b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405
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> 32cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * Jens Owen <jens@tungstengraphics.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" 46cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 47cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonstatic XExtensionInfo _xf86dri_info_data; 48cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonstatic XExtensionInfo *xf86dri_info = &_xf86dri_info_data; 495dd18e95d9aba8cc444a511808a1df15ca7a037aAdam Jacksonstatic char xf86dri_extension_name[] = XF86DRINAME; 50cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 51cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#define XF86DRICheckExtension(dpy,i,val) \ 52cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson XextCheckExtension (dpy, i, xf86dri_extension_name, val) 53cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 54cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson/***************************************************************************** 55cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 56cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * private utility routines * 57cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 58cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson *****************************************************************************/ 59cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic int close_display(Display * dpy, XExtCodes * extCodes); 61cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jacksonstatic /* const */ XExtensionHooks xf86dri_extension_hooks = { 624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* create_gc */ 634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* copy_gc */ 644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* flush_gc */ 654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* free_gc */ 664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* create_font */ 674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* free_font */ 684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf close_display, /* close_display */ 694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* wire_to_event */ 704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* event_to_wire */ 714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* error */ 724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf NULL, /* error_string */ 73cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson}; 74cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic 764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXEXT_GENERATE_FIND_DISPLAY(find_display, xf86dri_info, 774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xf86dri_extension_name, 784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf &xf86dri_extension_hooks, 0, NULL) 79cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic 814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXEXT_GENERATE_CLOSE_DISPLAY(close_display, xf86dri_info) 82cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 83cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 84cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson/***************************************************************************** 85cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 86cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * public XFree86-DRI Extension routines * 87cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson * * 88cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson *****************************************************************************/ 89cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#if 0 90cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#include <stdio.h> 91cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#define TRACE(msg) fprintf(stderr,"XF86DRI%s\n", msg); 92cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#else 93cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#define TRACE(msg) 94cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#endif 95cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 96697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIQueryExtension(Display * dpy, int *event_basep, 984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *error_basep) 99cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryExtension..."); 1034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (XextHasExtension(info)) { 1044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *event_basep = info->codes->first_event; 1054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *error_basep = info->codes->first_error; 1064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryExtension... return True"); 1074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 1084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 1104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryExtension... return False"); 1114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 113cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 114cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 115697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 1164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIQueryVersion(Display * dpy, int *majorVersion, int *minorVersion, 1174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *patchVersion) 118cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1204d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryVersionReply rep; 1214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryVersionReq *req; 1224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryVersion..."); 1244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 1254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1264d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 1274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIQueryVersion, req); 1284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 1294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIQueryVersion; 1304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 1314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryVersion... return False"); 1344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *majorVersion = rep.majorVersion; 1374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *minorVersion = rep.minorVersion; 1384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *patchVersion = rep.patchVersion; 1394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryVersion... return True"); 1424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 143cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 144cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 145697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 1464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIQueryDirectRenderingCapable(Display * dpy, int screen, 1474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf Bool * isCapable) 148cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1494d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryDirectRenderingCapableReply rep; 1514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIQueryDirectRenderingCapableReq *req; 1524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1534d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryDirectRenderingCapable..."); 1544d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 1554d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 1574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIQueryDirectRenderingCapable, req); 1584d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 1594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIQueryDirectRenderingCapable; 1604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 1614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 1624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryDirectRenderingCapable... return False"); 1654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *isCapable = rep.isCapable; 1684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("QueryDirectRenderingCapable... return True"); 1714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 172cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 173cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 174697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 1754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIOpenConnection(Display * dpy, int screen, drm_handle_t * hSAREA, 1764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf char **busIdString) 177cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 1784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 1794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIOpenConnectionReply rep; 1804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIOpenConnectionReq *req; 1814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection..."); 1834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 1844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 1864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIOpenConnection, req); 1874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 1884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIOpenConnection; 1894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 1904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 1914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 1924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 1934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection... return False"); 1944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 1954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 1964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 1974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hSAREA = rep.hSAREALow; 1984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (sizeof(drm_handle_t) == 8) { 1994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int shift = 32; /* var to prevent warning on next line */ 2004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hSAREA |= ((drm_handle_t) rep.hSAREAHigh) << shift; 2014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length) { 2042b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner if (!(*busIdString = calloc(rep.busIdStringLength + 1, 1))) { 2054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, ((rep.busIdStringLength + 3) & ~3)); 2064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection... return False"); 2094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 2104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XReadPad(dpy, *busIdString, rep.busIdStringLength); 2124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 2144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *busIdString = NULL; 2154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("OpenConnection... return True"); 2194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 220cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 221cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 222697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 2234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIAuthConnection(Display * dpy, int screen, drm_magic_t magic) 224cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 2254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 2264d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIAuthConnectionReq *req; 2274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIAuthConnectionReply rep; 2284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("AuthConnection..."); 2304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 2314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 2334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIAuthConnection, req); 2344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 2354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIAuthConnection; 2364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 2374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->magic = magic; 2384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf rep.authenticated = 0; 2394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.authenticated) { 2404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("AuthConnection... return False"); 2434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 2444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("AuthConnection... return True"); 2484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 249cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 250cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 251697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 2524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICloseConnection(Display * dpy, int screen) 253cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 2544d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 2554d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICloseConnectionReq *req; 2564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CloseConnection..."); 2584d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 2604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 2624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRICloseConnection, req); 2634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 2644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRICloseConnection; 2654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 2664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CloseConnection... return True"); 2694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 270cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 271cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 272697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 2734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIGetClientDriverName(Display * dpy, int screen, 2744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *ddxDriverMajorVersion, 2754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *ddxDriverMinorVersion, 2764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *ddxDriverPatchVersion, 2774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf char **clientDriverName) 278cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 2794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 2804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetClientDriverNameReply rep; 2814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetClientDriverNameReq *req; 2824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName..."); 2844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 2854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 2874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIGetClientDriverName, req); 2884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 2894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIGetClientDriverName; 2904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 2914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 2924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 2934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 2944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName... return False"); 2954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 2964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 2974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 2984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *ddxDriverMajorVersion = rep.ddxDriverMajorVersion; 2994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *ddxDriverMinorVersion = rep.ddxDriverMinorVersion; 3004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *ddxDriverPatchVersion = rep.ddxDriverPatchVersion; 3014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length) { 3034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (! 3044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (*clientDriverName = 3052b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner calloc(rep.clientDriverNameLength + 1, 1))) { 3064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, ((rep.clientDriverNameLength + 3) & ~3)); 3074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName... return False"); 3104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 3114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XReadPad(dpy, *clientDriverName, rep.clientDriverNameLength); 3134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 3154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *clientDriverName = NULL; 3164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetClientDriverName... return True"); 3204d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 321cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 322cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 323697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICreateContextWithConfig(Display * dpy, int screen, int configID, 3254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XID * context, drm_context_t * hHWContext) 326cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 3284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateContextReply rep; 3294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateContextReq *req; 3304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateContext..."); 3324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 3334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 3354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRICreateContext, req); 3364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 3374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRICreateContext; 3384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->visual = configID; 3394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 3404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *context = XAllocID(dpy); 3414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->context = *context; 3424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 3434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateContext... return False"); 3464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 3474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 3484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hHWContext = rep.hHWContext; 3494d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateContext... return True"); 3524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 353cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 354cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 355697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICreateContext(Display * dpy, int screen, Visual * visual, 3574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XID * context, drm_context_t * hHWContext) 358cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return XF86DRICreateContextWithConfig(dpy, screen, visual->visualid, 3604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf context, hHWContext); 361cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 362cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 363697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIDestroyContext(Display * dpy, int screen, XID context) 365cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 3674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIDestroyContextReq *req; 3684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyContext..."); 3704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 3714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 3734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIDestroyContext, req); 3744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 3754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIDestroyContext; 3764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 3774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->context = context; 3784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 3794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 3804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyContext... return True"); 3814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 382cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 383cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 384697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 3854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICreateDrawable(Display * dpy, int screen, 3864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XID drawable, drm_drawable_t * hHWDrawable) 387cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 3884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 3894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateDrawableReply rep; 3904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRICreateDrawableReq *req; 3914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateDrawable..."); 3934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 3944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 3964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRICreateDrawable, req); 3974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 3984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRICreateDrawable; 3994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 4004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->drawable = drawable; 4014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 4024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4034d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4044d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateDrawable... return False"); 4054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 4064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 4074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hHWDrawable = rep.hHWDrawable; 4084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("CreateDrawable... return True"); 4114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 412cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 413cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 4144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristófstatic int 4154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófnoopErrorHandler(Display * dpy, XErrorEvent * xerr) 4164a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsberg{ 4174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return 0; 4184a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsberg} 4194a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsberg 420697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 4214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIDestroyDrawable(Display * dpy, int screen, XID drawable) 422cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 4234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 4244d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIDestroyDrawableReq *req; 4254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int (*oldXErrorHandler) (Display *, XErrorEvent *); 4264d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyDrawable..."); 4284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 4294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* This is called from the DRI driver, which used call it like this 4314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * 4324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * if (windowExists(drawable)) 4334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * destroyDrawable(drawable); 4344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * 4354d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * which is a textbook race condition - the window may disappear 4364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * from the server between checking for its existance and 4374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * destroying it. Instead we change the semantics of 4384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * __DRIinterfaceMethodsRec::destroyDrawable() to succeed even if 4394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * the windows is gone, by wrapping the destroy call in an error 4404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * handler. */ 4414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XSync(dpy, False); 4434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf oldXErrorHandler = XSetErrorHandler(noopErrorHandler); 4444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 4464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIDestroyDrawable, req); 4474d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 4484d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIDestroyDrawable; 4494d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 4504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->drawable = drawable; 4514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4534d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4544d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XSetErrorHandler(oldXErrorHandler); 4554d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("DestroyDrawable... return True"); 4574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 458cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 459cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 460697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 4614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIGetDrawableInfo(Display * dpy, int screen, Drawable drawable, 4624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf unsigned int *index, unsigned int *stamp, 4634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *X, int *Y, int *W, int *H, 4644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *numClipRects, drm_clip_rect_t ** pClipRects, 4654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *backX, int *backY, 4664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *numBackClipRects, 4674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf drm_clip_rect_t ** pBackClipRects) 468cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 4694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 4704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDrawableInfoReply rep; 4714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDrawableInfoReq *req; 4724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int total_rects; 4734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo..."); 4754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 4764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 4784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIGetDrawableInfo, req); 4794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 4804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIGetDrawableInfo; 4814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 4824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->drawable = drawable; 4834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 1, xFalse)) { 4854d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 4864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 4874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo... return False"); 4884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 4894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 4904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *index = rep.drawableTableIndex; 4914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *stamp = rep.drawableTableStamp; 4924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *X = (int) rep.drawableX; 4934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *Y = (int) rep.drawableY; 4944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *W = (int) rep.drawableWidth; 4954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *H = (int) rep.drawableHeight; 4964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *numClipRects = rep.numClipRects; 4974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf total_rects = *numClipRects; 4984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 4994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *backX = rep.backX; 5004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *backY = rep.backY; 5014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *numBackClipRects = rep.numBackClipRects; 5024d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf total_rects += *numBackClipRects; 503cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 504cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#if 0 5054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* Because of the fix in Xserver/GL/dri/xf86dri.c, this check breaks 5064d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * backwards compatibility (Because of the >> 2 shift) but the fix 5074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf * enables multi-threaded apps to work. 5084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf */ 5094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length != ((((SIZEOF(xXF86DRIGetDrawableInfoReply) - 5104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SIZEOF(xGenericReply) + 5114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf total_rects * sizeof(drm_clip_rect_t)) + 5124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 3) & ~3) >> 2)) { 5134d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, rep.length); 5144d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5154d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo... return False"); 5174d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 5184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 519cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson#endif 520cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 5214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*numClipRects) { 5224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int len = sizeof(drm_clip_rect_t) * (*numClipRects); 5234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5242b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner *pClipRects = calloc(len, 1); 5254d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*pClipRects) 5264d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XRead(dpy, (char *) *pClipRects, len); 5274d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5284d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 5294d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *pClipRects = NULL; 5304d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5314d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5324d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*numBackClipRects) { 5334d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int len = sizeof(drm_clip_rect_t) * (*numBackClipRects); 5344d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5352b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner *pBackClipRects = calloc(len, 1); 5364d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (*pBackClipRects) 5374d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XRead(dpy, (char *) *pBackClipRects, len); 5384d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5394d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 5404d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *pBackClipRects = NULL; 5414d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5424d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5434d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5444d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5454d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDrawableInfo... return True"); 5464d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 547cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 548cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 549697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 5504d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIGetDeviceInfo(Display * dpy, int screen, drm_handle_t * hFrameBuffer, 5514d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *fbOrigin, int *fbSize, int *fbStride, 5524d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int *devPrivateSize, void **pDevPrivate) 553cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 5544d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XExtDisplayInfo *info = find_display(dpy); 5554d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDeviceInfoReply rep; 5564d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf xXF86DRIGetDeviceInfoReq *req; 5574d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5584d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo..."); 5594d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf XF86DRICheckExtension(dpy, info, False); 5604d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5614d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf LockDisplay(dpy); 5624d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf GetReq(XF86DRIGetDeviceInfo, req); 5634d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->reqType = info->codes->major_opcode; 5644d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->driReqType = X_XF86DRIGetDeviceInfo; 5654d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf req->screen = screen; 5664d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { 5674d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5684d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5694d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo... return False"); 5704d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 5714d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5724d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5734d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hFrameBuffer = rep.hFrameBufferLow; 5744d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (sizeof(drm_handle_t) == 8) { 5754d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf int shift = 32; /* var to prevent warning on next line */ 5764d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *hFrameBuffer |= ((drm_handle_t) rep.hFrameBufferHigh) << shift; 5774d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5784d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5794d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *fbOrigin = rep.framebufferOrigin; 5804d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *fbSize = rep.framebufferSize; 5814d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *fbStride = rep.framebufferStride; 5824d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *devPrivateSize = rep.devPrivateSize; 5834d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5844d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf if (rep.length) { 5852b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner if (!(*pDevPrivate = calloc(rep.devPrivateSize, 1))) { 5864d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XEatData(dpy, ((rep.devPrivateSize + 3) & ~3)); 5874d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5884d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 5894d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo... return False"); 5904d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 5914d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5924d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf _XRead(dpy, (char *) *pDevPrivate, rep.devPrivateSize); 5934d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5944d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf else { 5954d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf *pDevPrivate = NULL; 5964d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf } 5974d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf 5984d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf UnlockDisplay(dpy); 5994d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf SyncHandle(); 6004d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf TRACE("GetDeviceInfo... return True"); 6014d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 602cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 603cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 604697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 6054d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRIOpenFullScreen(Display * dpy, int screen, Drawable drawable) 606cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 6074d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* This function and the underlying X protocol are deprecated. 6084d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf */ 6094d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) dpy; 6104d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) screen; 6114d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) drawable; 6124d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return False; 613cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 614cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson 615697e22146def0a14915d83901063e2068c9980aeKristian HøgsbergBool 6164d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, KristófXF86DRICloseFullScreen(Display * dpy, int screen, Drawable drawable) 617cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson{ 6184d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf /* This function and the underlying X protocol are deprecated. 6194d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf */ 6204d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) dpy; 6214d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) screen; 6224d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf (void) drawable; 6234d2a381114353e061a6dfbcc1ac3881bb1c3e4c5RALOVICH, Kristóf return True; 624cb3610e37c4c0a40520441b8515d044dabcc8854Adam Jackson} 625be85fde82b148c4fc3639fcf3cfedb5de9381fc8Adam Jackson 626be85fde82b148c4fc3639fcf3cfedb5de9381fc8Adam Jackson#endif /* GLX_DIRECT_RENDERING */ 627