📄 dri_interface.h
字号:
* Framebuffer information record. Used by libGL to communicate information * about the framebuffer to the driver's \c __driCreateNewScreen function. * * In XFree86, most of this information is derrived from data returned by * calling \c XF86DRIGetDeviceInfo. * * \sa XF86DRIGetDeviceInfo __DRIdisplayRec::createNewScreen * __driUtilCreateNewScreen CallCreateNewScreen * * \bug This structure could be better named. */struct __DRIframebufferRec { unsigned char *base; /**< Framebuffer base address in the CPU's * address space. This value is calculated by * calling \c drmMap on the framebuffer handle * returned by \c XF86DRIGetDeviceInfo (or a * similar function). */ int size; /**< Framebuffer size, in bytes. */ int stride; /**< Number of bytes from one line to the next. */ int width; /**< Pixel width of the framebuffer. */ int height; /**< Pixel height of the framebuffer. */ int dev_priv_size; /**< Size of the driver's dev-priv structure. */ void *dev_priv; /**< Pointer to the driver's dev-priv structure. */};/** * Screen dependent methods. This structure is initialized during the * \c __DRIdisplayRec::createScreen call. */struct __DRIscreenRec { /** * Method to destroy the private DRI screen data. */ void (*destroyScreen)(__DRInativeDisplay *dpy, int scrn, void *screenPrivate); /** * Method to create the private DRI drawable data and initialize the * drawable dependent methods. */ void *(*createNewDrawable)(__DRInativeDisplay *dpy, const __GLcontextModes *modes, __DRIid draw, __DRIdrawable *pdraw, int renderType, const int *attrs); /** * Method to return a pointer to the DRI drawable data. */ __DRIdrawable *(*getDrawable)(__DRInativeDisplay *dpy, __DRIid draw, void *drawablePrivate); /** * Opaque pointer to private per screen direct rendering data. \c NULL * if direct rendering is not supported on this screen. Never * dereferenced in libGL. */ void *private; /** * Get the number of vertical refreshes since some point in time before * this function was first called (i.e., system start up). * * \since Internal API version 20030317. */ int (*getMSC)( void *screenPrivate, int64_t *msc ); /** * Opaque pointer that points back to the containing * \c __GLXscreenConfigs. This data structure is shared with DRI drivers * but \c __GLXscreenConfigs is not. However, they are needed by some GLX * functions called by DRI drivers. * * \since Internal API version 20030813. */ void *screenConfigs; /** * Functions associated with MESA_allocate_memory. * * \since Internal API version 20030815. */ /*@{*/ void *(*allocateMemory)(__DRInativeDisplay *dpy, int scrn, GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); void (*freeMemory)(__DRInativeDisplay *dpy, int scrn, GLvoid *pointer); GLuint (*memoryOffset)(__DRInativeDisplay *dpy, int scrn, const GLvoid *pointer); /*@}*/ /** * Method to create the private DRI context data and initialize the * context dependent methods. * * \since Internal API version 20031201. */ void * (*createNewContext)(__DRInativeDisplay *dpy, const __GLcontextModes *modes, int render_type, void *sharedPrivate, __DRIcontext *pctx);};/** * Context dependent methods. This structure is initialized during the * \c __DRIscreenRec::createContext call. */struct __DRIcontextRec { /** * Method to destroy the private DRI context data. */ void (*destroyContext)(__DRInativeDisplay *dpy, int scrn, void *contextPrivate); /** * Opaque pointer to private per context direct rendering data. * \c NULL if direct rendering is not supported on the display or * screen used to create this context. Never dereferenced in libGL. */ void *private; /** * Pointer to the mode used to create this context. * * \since Internal API version 20040317. */ const __GLcontextModes * mode; /** * Method to bind a DRI drawable to a DRI graphics context. * * \since Internal API version 20050727. */ GLboolean (*bindContext)(__DRInativeDisplay *dpy, int scrn, __DRIid draw, __DRIid read, __DRIcontext *ctx); /** * Method to unbind a DRI drawable from a DRI graphics context. * * \since Internal API version 20050727. */ GLboolean (*unbindContext)(__DRInativeDisplay *dpy, int scrn, __DRIid draw, __DRIid read, __DRIcontext *ctx);};/** * Drawable dependent methods. This structure is initialized during the * \c __DRIscreenRec::createDrawable call. \c createDrawable is not called * by libGL at this time. It's currently used via the dri_util.c utility code * instead. */struct __DRIdrawableRec { /** * Method to destroy the private DRI drawable data. */ void (*destroyDrawable)(__DRInativeDisplay *dpy, void *drawablePrivate); /** * Method to swap the front and back buffers. */ void (*swapBuffers)(__DRInativeDisplay *dpy, void *drawablePrivate); /** * Opaque pointer to private per drawable direct rendering data. * \c NULL if direct rendering is not supported on the display or * screen used to create this drawable. Never dereferenced in libGL. */ void *private; /** * Get the number of completed swap buffers for this drawable. * * \since Internal API version 20030317. */ int (*getSBC)(__DRInativeDisplay *dpy, void *drawablePrivate, int64_t *sbc ); /** * Wait for the SBC to be greater than or equal target_sbc. * * \since Internal API version 20030317. */ int (*waitForSBC)( __DRInativeDisplay * dpy, void *drawablePriv, int64_t target_sbc, int64_t * msc, int64_t * sbc ); /** * Wait for the MSC to equal target_msc, or, if that has already passed, * the next time (MSC % divisor) is equal to remainder. If divisor is * zero, the function will return as soon as MSC is greater than or equal * to target_msc. * * \since Internal API version 20030317. */ int (*waitForMSC)( __DRInativeDisplay * dpy, void *drawablePriv, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * msc, int64_t * sbc ); /** * Like \c swapBuffers, but does NOT have an implicit \c glFlush. Once * rendering is complete, waits until MSC is equal to target_msc, or * if that has already passed, waits until (MSC % divisor) is equal * to remainder. If divisor is zero, the swap will happen as soon as * MSC is greater than or equal to target_msc. * * \since Internal API version 20030317. */ int64_t (*swapBuffersMSC)(__DRInativeDisplay *dpy, void *drawablePrivate, int64_t target_msc, int64_t divisor, int64_t remainder); /** * Enable or disable frame usage tracking. * * \since Internal API version 20030317. */ int (*frameTracking)(__DRInativeDisplay *dpy, void *drawablePrivate, GLboolean enable); /** * Retrieve frame usage information. * * \since Internal API version 20030317. */ int (*queryFrameTracking)(__DRInativeDisplay *dpy, void *drawablePrivate, int64_t * sbc, int64_t * missedFrames, float * lastMissedUsage, float * usage ); /** * Used by drivers that implement the GLX_SGI_swap_control or * GLX_MESA_swap_control extension. * * \since Internal API version 20030317. */ unsigned swap_interval; /** * Used by drivers that implement the GLX_MESA_copy_sub_buffer extension. * * \since Internal API version 20060314. */ void (*copySubBuffer)(__DRInativeDisplay *dpy, void *drawablePrivate, int x, int y, int w, int h);};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -