📄 xf86dri.c
字号:
SyncHandle(); TRACE("GetClientDriverName... return False"); return False; } *ddxDriverMajorVersion = rep.ddxDriverMajorVersion; *ddxDriverMinorVersion = rep.ddxDriverMinorVersion; *ddxDriverPatchVersion = rep.ddxDriverPatchVersion; if (rep.length) { if (!(*clientDriverName = (char *)Xcalloc(rep.clientDriverNameLength + 1, 1))) { _XEatData(dpy, ((rep.clientDriverNameLength + 3) & ~3)); UnlockDisplay(dpy); SyncHandle(); TRACE("GetClientDriverName... return False"); return False; } _XReadPad(dpy, *clientDriverName, rep.clientDriverNameLength); } else { *clientDriverName = NULL; } UnlockDisplay(dpy); SyncHandle(); TRACE("GetClientDriverName... return True"); return True;}BooluniDRICreateContextWithConfig(Display *dpy, int screen, int configID, XID context, drm_context_t *hHWContext){ XExtDisplayInfo *info = find_display(dpy); xXF86DRICreateContextReply rep; xXF86DRICreateContextReq *req; TRACE("CreateContext... id %d", context); uniDRICheckExtension(dpy, info, False); LockDisplay(dpy); GetReq(XF86DRICreateContext, req); req->reqType = info->codes->major_opcode; req->driReqType = X_XF86DRICreateContext; req->visual = configID; req->screen = screen; req->context = context; if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); TRACE("CreateContext... return False"); return False; } *hHWContext = rep.hHWContext; UnlockDisplay(dpy); SyncHandle(); TRACE("CreateContext... return True"); return True;}BooluniDRICreateContext(Display *dpy, int screen, Visual *visual, XID context, drm_context_t *hHWContext){ return uniDRICreateContextWithConfig(dpy, screen, visual->visualid, context, hHWContext);}BooluniDRIDestroyContext(Display * ndpy, int screen, XID context){ Display *const dpy = (Display *) ndpy; XExtDisplayInfo *info = find_display(dpy); xXF86DRIDestroyContextReq *req; TRACE("DestroyContext... id %d", context); uniDRICheckExtension(dpy, info, False); LockDisplay(dpy); GetReq(XF86DRIDestroyContext, req); req->reqType = info->codes->major_opcode; req->driReqType = X_XF86DRIDestroyContext; req->screen = screen; req->context = context; UnlockDisplay(dpy); SyncHandle(); TRACE("DestroyContext... return True"); return True;}BooluniDRICreateDrawable(Display * ndpy, int screen, Drawable drawable, drm_drawable_t * hHWDrawable){ Display *const dpy = (Display *) ndpy; XExtDisplayInfo *info = find_display(dpy); xXF86DRICreateDrawableReply rep; xXF86DRICreateDrawableReq *req; TRACE("CreateDrawable..."); uniDRICheckExtension(dpy, info, False); LockDisplay(dpy); GetReq(XF86DRICreateDrawable, req); req->reqType = info->codes->major_opcode; req->driReqType = X_XF86DRICreateDrawable; req->screen = screen; req->drawable = drawable; if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); TRACE("CreateDrawable... return False"); return False; } *hHWDrawable = rep.hHWDrawable; UnlockDisplay(dpy); SyncHandle(); TRACE("CreateDrawable... return True"); return True;}BooluniDRIDestroyDrawable(Display * ndpy, int screen, Drawable drawable){ Display *const dpy = (Display *) ndpy; XExtDisplayInfo *info = find_display(dpy); xXF86DRIDestroyDrawableReq *req; TRACE("DestroyDrawable..."); uniDRICheckExtension(dpy, info, False); LockDisplay(dpy); GetReq(XF86DRIDestroyDrawable, req); req->reqType = info->codes->major_opcode; req->driReqType = X_XF86DRIDestroyDrawable; req->screen = screen; req->drawable = drawable; UnlockDisplay(dpy); SyncHandle(); TRACE("DestroyDrawable... return True"); return True;}BooluniDRIGetDrawableInfo(Display * dpy, int screen, Drawable drawable, unsigned int *index, unsigned int *stamp, int *X, int *Y, int *W, int *H, int *numClipRects, drm_clip_rect_t ** pClipRects, int *backX, int *backY, int *numBackClipRects, drm_clip_rect_t ** pBackClipRects){ XExtDisplayInfo *info = find_display(dpy); xXF86DRIGetDrawableInfoReply rep; xXF86DRIGetDrawableInfoReq *req; int total_rects; TRACE("GetDrawableInfo..."); uniDRICheckExtension(dpy, info, False); LockDisplay(dpy); GetReq(XF86DRIGetDrawableInfo, req); req->reqType = info->codes->major_opcode; req->driReqType = X_XF86DRIGetDrawableInfo; req->screen = screen; req->drawable = drawable; if (!_XReply(dpy, (xReply *) & rep, 1, xFalse)) { UnlockDisplay(dpy); SyncHandle(); TRACE("GetDrawableInfo... return False"); return False; } *index = rep.drawableTableIndex; *stamp = rep.drawableTableStamp; *X = (int)rep.drawableX; *Y = (int)rep.drawableY; *W = (int)rep.drawableWidth; *H = (int)rep.drawableHeight; *numClipRects = rep.numClipRects; total_rects = *numClipRects; *backX = rep.backX; *backY = rep.backY; *numBackClipRects = rep.numBackClipRects; total_rects += *numBackClipRects;#if 0 /* Because of the fix in Xserver/GL/dri/xf86dri.c, this check breaks * backwards compatibility (Because of the >> 2 shift) but the fix * enables multi-threaded apps to work. */ if (rep.length != ((((SIZEOF(xXF86DRIGetDrawableInfoReply) - SIZEOF(xGenericReply) + total_rects * sizeof(drm_clip_rect_t)) + 3) & ~3) >> 2)) { _XEatData(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); TRACE("GetDrawableInfo... return False"); return False; }#endif if (*numClipRects) { int len = sizeof(drm_clip_rect_t) * (*numClipRects); *pClipRects = (drm_clip_rect_t *) Xcalloc(len, 1); if (*pClipRects) _XRead(dpy, (char *)*pClipRects, len); } else { *pClipRects = NULL; } if (*numBackClipRects) { int len = sizeof(drm_clip_rect_t) * (*numBackClipRects); *pBackClipRects = (drm_clip_rect_t *) Xcalloc(len, 1); if (*pBackClipRects) _XRead(dpy, (char *)*pBackClipRects, len); } else { *pBackClipRects = NULL; } UnlockDisplay(dpy); SyncHandle(); TRACE("GetDrawableInfo... return True"); return True;}BooluniDRIGetDeviceInfo(Display *dpy, int screen, drm_handle_t *hFrameBuffer, int *fbOrigin, int *fbSize, int *fbStride, int *devPrivateSize, void **pDevPrivate){ XExtDisplayInfo *info = find_display(dpy); xXF86DRIGetDeviceInfoReply rep; xXF86DRIGetDeviceInfoReq *req; TRACE("GetDeviceInfo..."); uniDRICheckExtension(dpy, info, False); LockDisplay(dpy); GetReq(XF86DRIGetDeviceInfo, req); req->reqType = info->codes->major_opcode; req->driReqType = X_XF86DRIGetDeviceInfo; req->screen = screen; if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); TRACE("GetDeviceInfo... return False"); return False; } *hFrameBuffer = rep.hFrameBufferLow;#ifdef LONG64 if (sizeof(drm_handle_t) == 8) { *hFrameBuffer |= ((unsigned long)rep.hFrameBufferHigh) << 32; }#endif *fbOrigin = rep.framebufferOrigin; *fbSize = rep.framebufferSize; *fbStride = rep.framebufferStride; *devPrivateSize = rep.devPrivateSize; if (rep.length) { if (!(*pDevPrivate = (void *)Xcalloc(rep.devPrivateSize, 1))) { _XEatData(dpy, ((rep.devPrivateSize + 3) & ~3)); UnlockDisplay(dpy); SyncHandle(); TRACE("GetDeviceInfo... return False"); return False; } _XRead(dpy, (char *)*pDevPrivate, rep.devPrivateSize); } else { *pDevPrivate = NULL; } UnlockDisplay(dpy); SyncHandle(); TRACE("GetDeviceInfo... return True"); return True;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -