📄 dri_interface.h
字号:
#define __DRI_DAMAGE_VERSION 1struct __DRIdamageExtensionRec { __DRIextension base; /** * Reports areas of the given drawable which have been modified by the * driver. * * \param drawable which the drawing was done to. * \param rects rectangles affected, with the drawable origin as the * origin. * \param x X offset of the drawable within the screen (used in the * front_buffer case) * \param y Y offset of the drawable within the screen. * \param front_buffer boolean flag for whether the drawing to the * drawable was actually done directly to the front buffer (instead * of backing storage, for example) * \param loaderPrivate the data passed in at createNewDrawable time */ void (*reportDamage)(__DRIdrawable *draw, int x, int y, drm_clip_rect_t *rects, int num_rects, GLboolean front_buffer, void *loaderPrivate);};/** * DRI2 Loader extension. This extension describes the basic * functionality the loader needs to provide for the DRI driver. */#define __DRI_LOADER "DRI_Loader"#define __DRI_LOADER_VERSION 1struct __DRIloaderExtensionRec { __DRIextension base; /** * Ping the windowing system to get it to reemit info for the * specified drawable in the DRI2 event buffer. * * \param draw the drawable for which to request info * \param tail the new event buffer tail pointer */ void (*reemitDrawableInfo)(__DRIdrawable *draw, unsigned int *tail, void *loaderPrivate); void (*postDamage)(__DRIdrawable *draw, struct drm_clip_rect *rects, int num_rects, void *loaderPrivate);};#define __DRI_SWRAST_IMAGE_OP_DRAW 1#define __DRI_SWRAST_IMAGE_OP_CLEAR 2#define __DRI_SWRAST_IMAGE_OP_SWAP 3/** * SWRast Loader extension. */#define __DRI_SWRAST_LOADER "DRI_SWRastLoader"#define __DRI_SWRAST_LOADER_VERSION 1struct __DRIswrastLoaderExtensionRec { __DRIextension base; /* * Drawable position and size */ void (*getDrawableInfo)(__DRIdrawable *drawable, int *x, int *y, int *width, int *height, void *loaderPrivate); /** * Put image to drawable */ void (*putImage)(__DRIdrawable *drawable, int op, int x, int y, int width, int height, char *data, void *loaderPrivate); /** * Get image from drawable */ void (*getImage)(__DRIdrawable *drawable, int x, int y, int width, int height, char *data, void *loaderPrivate);};/** * The remaining extensions describe driver extensions, immediately * available interfaces provided by the driver. To start using the * driver, dlsym() for the __DRI_DRIVER_EXTENSIONS symbol and look for * the extension you need in the array. */#define __DRI_DRIVER_EXTENSIONS "__driDriverExtensions"/** * Tokens for __DRIconfig attribs. A number of attributes defined by * GLX or EGL standards are not in the table, as they must be provided * by the loader. For example, FBConfig ID or visual ID, drawable type. */#define __DRI_ATTRIB_BUFFER_SIZE 1#define __DRI_ATTRIB_LEVEL 2#define __DRI_ATTRIB_RED_SIZE 3#define __DRI_ATTRIB_GREEN_SIZE 4#define __DRI_ATTRIB_BLUE_SIZE 5#define __DRI_ATTRIB_LUMINANCE_SIZE 6#define __DRI_ATTRIB_ALPHA_SIZE 7#define __DRI_ATTRIB_ALPHA_MASK_SIZE 8#define __DRI_ATTRIB_DEPTH_SIZE 9#define __DRI_ATTRIB_STENCIL_SIZE 10#define __DRI_ATTRIB_ACCUM_RED_SIZE 11#define __DRI_ATTRIB_ACCUM_GREEN_SIZE 12#define __DRI_ATTRIB_ACCUM_BLUE_SIZE 13#define __DRI_ATTRIB_ACCUM_ALPHA_SIZE 14#define __DRI_ATTRIB_SAMPLE_BUFFERS 15#define __DRI_ATTRIB_SAMPLES 16#define __DRI_ATTRIB_RENDER_TYPE 17#define __DRI_ATTRIB_CONFIG_CAVEAT 18#define __DRI_ATTRIB_CONFORMANT 19#define __DRI_ATTRIB_DOUBLE_BUFFER 20#define __DRI_ATTRIB_STEREO 21#define __DRI_ATTRIB_AUX_BUFFERS 22#define __DRI_ATTRIB_TRANSPARENT_TYPE 23#define __DRI_ATTRIB_TRANSPARENT_INDEX_VALUE 24#define __DRI_ATTRIB_TRANSPARENT_RED_VALUE 25#define __DRI_ATTRIB_TRANSPARENT_GREEN_VALUE 26#define __DRI_ATTRIB_TRANSPARENT_BLUE_VALUE 27#define __DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE 28#define __DRI_ATTRIB_FLOAT_MODE 29#define __DRI_ATTRIB_RED_MASK 30#define __DRI_ATTRIB_GREEN_MASK 31#define __DRI_ATTRIB_BLUE_MASK 32#define __DRI_ATTRIB_ALPHA_MASK 33#define __DRI_ATTRIB_MAX_PBUFFER_WIDTH 34#define __DRI_ATTRIB_MAX_PBUFFER_HEIGHT 35#define __DRI_ATTRIB_MAX_PBUFFER_PIXELS 36#define __DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH 37#define __DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT 38#define __DRI_ATTRIB_VISUAL_SELECT_GROUP 39#define __DRI_ATTRIB_SWAP_METHOD 40#define __DRI_ATTRIB_MAX_SWAP_INTERVAL 41#define __DRI_ATTRIB_MIN_SWAP_INTERVAL 42#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGB 43#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA 44#define __DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE 45#define __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS 46#define __DRI_ATTRIB_YINVERTED 47/* __DRI_ATTRIB_RENDER_TYPE */#define __DRI_ATTRIB_RGBA_BIT 0x01 #define __DRI_ATTRIB_COLOR_INDEX_BIT 0x02#define __DRI_ATTRIB_LUMINANCE_BIT 0x04/* __DRI_ATTRIB_CONFIG_CAVEAT */#define __DRI_ATTRIB_SLOW_BIT 0x01#define __DRI_ATTRIB_NON_CONFORMANT_CONFIG 0x02/* __DRI_ATTRIB_TRANSPARENT_TYPE */#define __DRI_ATTRIB_TRANSPARENT_RGB 0x00#define __DRI_ATTRIB_TRANSPARENT_INDEX 0x01/* __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS */#define __DRI_ATTRIB_TEXTURE_1D_BIT 0x01#define __DRI_ATTRIB_TEXTURE_2D_BIT 0x02#define __DRI_ATTRIB_TEXTURE_RECTANGLE_BIT 0x04/** * This extension defines the core DRI functionality. */#define __DRI_CORE "DRI_Core"#define __DRI_CORE_VERSION 1struct __DRIcoreExtensionRec { __DRIextension base; __DRIscreen *(*createNewScreen)(int screen, int fd, unsigned int sarea_handle, const __DRIextension **extensions, const __DRIconfig ***driverConfigs, void *loaderPrivate); void (*destroyScreen)(__DRIscreen *screen); const __DRIextension **(*getExtensions)(__DRIscreen *screen); int (*getConfigAttrib)(const __DRIconfig *config, unsigned int attrib, unsigned int *value); int (*indexConfigAttrib)(const __DRIconfig *config, int index, unsigned int *attrib, unsigned int *value); __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, const __DRIconfig *config, unsigned int drawable_id, unsigned int head, void *loaderPrivate); void (*destroyDrawable)(__DRIdrawable *drawable); void (*swapBuffers)(__DRIdrawable *drawable); __DRIcontext *(*createNewContext)(__DRIscreen *screen, const __DRIconfig *config, __DRIcontext *shared, void *loaderPrivate); int (*copyContext)(__DRIcontext *dest, __DRIcontext *src, unsigned long mask); void (*destroyContext)(__DRIcontext *context); int (*bindContext)(__DRIcontext *ctx, __DRIdrawable *pdraw, __DRIdrawable *pread); int (*unbindContext)(__DRIcontext *ctx);};/** * Stored version of some component (i.e., server-side DRI module, kernel-side * DRM, etc.). * * \todo * There are several data structures that explicitly store a major version, * minor version, and patch level. These structures should be modified to * have a \c __DRIversionRec instead. */struct __DRIversionRec { int major; /**< Major version number. */ int minor; /**< Minor version number. */ int patch; /**< Patch-level. */};/** * 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. */};/** * This extension provides alternative screen, drawable and context * constructors for legacy DRI functionality. This is used in * conjunction with the core extension. */#define __DRI_LEGACY "DRI_Legacy"#define __DRI_LEGACY_VERSION 1struct __DRIlegacyExtensionRec { __DRIextension base; __DRIscreen *(*createNewScreen)(int screen, const __DRIversion *ddx_version, const __DRIversion *dri_version, const __DRIversion *drm_version, const __DRIframebuffer *frame_buffer, void *pSAREA, int fd, const __DRIextension **extensions, const __DRIconfig ***driver_configs, void *loaderPrivate); __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, const __DRIconfig *config, drm_drawable_t hwDrawable, int renderType, const int *attrs, void *loaderPrivate); __DRIcontext *(*createNewContext)(__DRIscreen *screen, const __DRIconfig *config, int render_type, __DRIcontext *shared, drm_context_t hwContext, void *loaderPrivate);};/** * This extension provides alternative screen, drawable and context * constructors for swrast DRI functionality. This is used in * conjunction with the core extension. */#define __DRI_SWRAST "DRI_SWRast"#define __DRI_SWRAST_VERSION 1struct __DRIswrastExtensionRec { __DRIextension base; __DRIscreen *(*createNewScreen)(int screen, const __DRIextension **extensions, const __DRIconfig ***driver_configs, void *loaderPrivate); __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, const __DRIconfig *config, void *loaderPrivate);};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -