dri_interface.h revision 79cbcb663d738b424466219cf8a1221eac106a6f
1192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/* 2192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. 3e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * Copyright 2007-2008 Red Hat, Inc. 4192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * (C) Copyright IBM Corporation 2004 5192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * All Rights Reserved. 6192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 7192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 8192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * copy of this software and associated documentation files (the "Software"), 9192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * to deal in the Software without restriction, including without limitation 10192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * on the rights to use, copy, modify, merge, publish, distribute, sub 11192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * license, and/or sell copies of the Software, and to permit persons to whom 12192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * the Software is furnished to do so, subject to the following conditions: 13192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 14192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * The above copyright notice and this permission notice (including the next 15192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * paragraph) shall be included in all copies or substantial portions of the 16192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * Software. 17192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 18192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 21192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 22192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 23192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 24192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * USE OR OTHER DEALINGS IN THE SOFTWARE. 25192c988c7360d026a6f345b21acc2cdf41977915Brian Paul */ 26192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 27192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/** 28192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * \file dri_interface.h 29192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 30192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * This file contains all the types and functions that define the interface 31192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * between a DRI driver and driver loader. Currently, the most common driver 32192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * loader is the XFree86 libGL.so. However, other loaders do exist, and in 33192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * the future the server-side libglx.a will also be a loader. 34192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 35192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * \author Kevin E. Martin <kevin@precisioninsight.com> 36192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * \author Ian Romanick <idr@us.ibm.com> 37e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * \author Kristian Høgsberg <krh@redhat.com> 38192c988c7360d026a6f345b21acc2cdf41977915Brian Paul */ 39192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 4074d563cdfbfb07cc666d60dc909e90ddb9949cbbKeith Whitwell#ifndef DRI_INTERFACE_H 4174d563cdfbfb07cc666d60dc909e90ddb9949cbbKeith Whitwell#define DRI_INTERFACE_H 4274d563cdfbfb07cc666d60dc909e90ddb9949cbbKeith Whitwell 438e7599892f5dd2f85a74eccf9ff7a80dd277122bJon Turney/* For archs with no drm.h */ 44d18dd6ad11268c7a6c2835f4f5fa999c735da300Samuel Thibault#if !defined(__APPLE__) && !defined(__CYGWIN__) && !defined(__GNU__) 45fabe2b9ba38e95bd21a35b265bfc403fa3cb2883Ian Romanick#include <drm.h> 4601ac4540f04d47b64aeead8984c92e39b436b5f9Jeremy Huddleston#else 4701ac4540f04d47b64aeead8984c92e39b436b5f9Jeremy Huddlestontypedef unsigned int drm_context_t; 4801ac4540f04d47b64aeead8984c92e39b436b5f9Jeremy Huddlestontypedef unsigned int drm_drawable_t; 4901ac4540f04d47b64aeead8984c92e39b436b5f9Jeremy Huddlestontypedef struct drm_clip_rect drm_clip_rect_t; 5001ac4540f04d47b64aeead8984c92e39b436b5f9Jeremy Huddleston#endif 51192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 52192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/** 53192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * \name DRI interface structures 54192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 55192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * The following structures define the interface between the GLX client 56192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * side library and the DRI (direct rendering infrastructure). 57192c988c7360d026a6f345b21acc2cdf41977915Brian Paul */ 58192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/*@{*/ 594a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsbergtypedef struct __DRIdisplayRec __DRIdisplay; 604a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsbergtypedef struct __DRIscreenRec __DRIscreen; 614a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsbergtypedef struct __DRIcontextRec __DRIcontext; 624a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsbergtypedef struct __DRIdrawableRec __DRIdrawable; 63e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsbergtypedef struct __DRIconfigRec __DRIconfig; 644a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsbergtypedef struct __DRIframebufferRec __DRIframebuffer; 654a22ae8d446855d839cc199df8eb1b057045cb88Kristian Høgsbergtypedef struct __DRIversionRec __DRIversion; 66f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg 67e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsbergtypedef struct __DRIcoreExtensionRec __DRIcoreExtension; 6878a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsbergtypedef struct __DRIextensionRec __DRIextension; 69ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsbergtypedef struct __DRIcopySubBufferExtensionRec __DRIcopySubBufferExtension; 70efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsbergtypedef struct __DRIswapControlExtensionRec __DRIswapControlExtension; 7178a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsbergtypedef struct __DRIallocateExtensionRec __DRIallocateExtension; 72a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsbergtypedef struct __DRIframeTrackingExtensionRec __DRIframeTrackingExtension; 73106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsbergtypedef struct __DRImediaStreamCounterExtensionRec __DRImediaStreamCounterExtension; 74f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsbergtypedef struct __DRItexOffsetExtensionRec __DRItexOffsetExtension; 756d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsbergtypedef struct __DRItexBufferExtensionRec __DRItexBufferExtension; 76e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsbergtypedef struct __DRIlegacyExtensionRec __DRIlegacyExtension; 77280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzistypedef struct __DRIswrastExtensionRec __DRIswrastExtension; 78f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsbergtypedef struct __DRIbufferRec __DRIbuffer; 79f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsbergtypedef struct __DRIdri2ExtensionRec __DRIdri2Extension; 80f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsbergtypedef struct __DRIdri2LoaderExtensionRec __DRIdri2LoaderExtension; 8165562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihanetypedef struct __DRI2flushExtensionRec __DRI2flushExtension; 82f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 83192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/*@}*/ 84192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 85192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 86192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/** 87f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg * Extension struct. Drivers 'inherit' from this struct by embedding 88e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * it as the first element in the extension struct. 89ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * 90ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * We never break API in for a DRI extension. If we need to change 91ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * the way things work in a non-backwards compatible manner, we 92ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * introduce a new extension. During a transition period, we can 93ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * leave both the old and the new extension in the driver, which 94ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * allows us to move to the new interface without having to update the 95ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * loader(s) in lock step. 96ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * 97ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * However, we can add entry points to an extension over time as long 98ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * as we don't break the old ones. As we add entry points to an 99ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * extension, we increase the version number. The corresponding 100ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * #define can be used to guard code that accesses the new entry 101ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * points at compile time and the version field in the extension 102ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * struct can be used at run-time to determine how to use the 103ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg * extension. 104f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg */ 105f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsbergstruct __DRIextensionRec { 106f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg const char *name; 107ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg int version; 108f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg}; 109f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg 110ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg/** 111e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * The first set of extension are the screen extensions, returned by 112e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * __DRIcore::getExtensions(). This entry point will return a list of 113e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * extensions and the loader can use the ones it knows about by 114e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * casting them to more specific extensions and advertising any GLX 115e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * extensions the DRI extensions enables. 116e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg */ 117e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 118e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/** 119f968f67e6214416f04b8875ce59a94a02f464c81Kristian Høgsberg * Used by drivers to indicate support for setting the read drawable. 120f968f67e6214416f04b8875ce59a94a02f464c81Kristian Høgsberg */ 121f968f67e6214416f04b8875ce59a94a02f464c81Kristian Høgsberg#define __DRI_READ_DRAWABLE "DRI_ReadDrawable" 122ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg#define __DRI_READ_DRAWABLE_VERSION 1 123f968f67e6214416f04b8875ce59a94a02f464c81Kristian Høgsberg 124f968f67e6214416f04b8875ce59a94a02f464c81Kristian Høgsberg/** 125ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg * Used by drivers that implement the GLX_MESA_copy_sub_buffer extension. 126ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg */ 127ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg#define __DRI_COPY_SUB_BUFFER "DRI_CopySubBuffer" 128ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg#define __DRI_COPY_SUB_BUFFER_VERSION 1 129ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsbergstruct __DRIcopySubBufferExtensionRec { 130ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg __DRIextension base; 131ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg void (*copySubBuffer)(__DRIdrawable *drawable, int x, int y, int w, int h); 132ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg}; 133ac3e838fa748c8c8a6ffc04d1ab13da71f75f103Kristian Høgsberg 134efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg/** 135efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg * Used by drivers that implement the GLX_SGI_swap_control or 136efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg * GLX_MESA_swap_control extension. 137efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg */ 138efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg#define __DRI_SWAP_CONTROL "DRI_SwapControl" 139ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg#define __DRI_SWAP_CONTROL_VERSION 1 140efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsbergstruct __DRIswapControlExtensionRec { 141efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg __DRIextension base; 142efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg void (*setSwapInterval)(__DRIdrawable *drawable, unsigned int inteval); 143efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg unsigned int (*getSwapInterval)(__DRIdrawable *drawable); 144efaf90b03e8b69e04909bce071f8ef6b65cc0e9dKristian Høgsberg}; 145f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg 146f616a263a25eda135800bea7d3a863c569b93e30Kristian Høgsberg/** 14778a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg * Used by drivers that implement the GLX_MESA_allocate_memory. 14878a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg */ 14978a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg#define __DRI_ALLOCATE "DRI_Allocate" 150ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg#define __DRI_ALLOCATE_VERSION 1 15178a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsbergstruct __DRIallocateExtensionRec { 15278a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg __DRIextension base; 15378a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg 15478a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg void *(*allocateMemory)(__DRIscreen *screen, GLsizei size, 15578a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg GLfloat readfreq, GLfloat writefreq, 15678a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg GLfloat priority); 15778a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg 15878a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg void (*freeMemory)(__DRIscreen *screen, GLvoid *pointer); 15978a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg 16078a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg GLuint (*memoryOffset)(__DRIscreen *screen, const GLvoid *pointer); 16178a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg}; 16278a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg 16378a6aa57a0155d72280dd91c05513c847bf76f3bKristian Høgsberg/** 164a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg * Used by drivers that implement the GLX_MESA_swap_frame_usage extension. 165a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg */ 166a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg#define __DRI_FRAME_TRACKING "DRI_FrameTracking" 167ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg#define __DRI_FRAME_TRACKING_VERSION 1 168a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsbergstruct __DRIframeTrackingExtensionRec { 169a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg __DRIextension base; 170a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg 171a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg /** 172a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg * Enable or disable frame usage tracking. 173a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg * 174a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg * \since Internal API version 20030317. 175a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg */ 176a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg int (*frameTracking)(__DRIdrawable *drawable, GLboolean enable); 177a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg 178a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg /** 179a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg * Retrieve frame usage information. 180a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg * 181a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg * \since Internal API version 20030317. 182a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg */ 183a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg int (*queryFrameTracking)(__DRIdrawable *drawable, 184a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg int64_t * sbc, int64_t * missedFrames, 185a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg float * lastMissedUsage, float * usage); 186a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg}; 187a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg 188106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg 189106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg/** 190106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg * Used by drivers that implement the GLX_SGI_video_sync extension. 191106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg */ 192106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg#define __DRI_MEDIA_STREAM_COUNTER "DRI_MediaStreamCounter" 1936e8d21d72f35767e07081a8bee4323aaaf5e2aaeKristian Høgsberg#define __DRI_MEDIA_STREAM_COUNTER_VERSION 1 194106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsbergstruct __DRImediaStreamCounterExtensionRec { 195106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg __DRIextension base; 196106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg 197106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg /** 198106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg * Wait for the MSC to equal target_msc, or, if that has already passed, 199106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg * the next time (MSC % divisor) is equal to remainder. If divisor is 200106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg * zero, the function will return as soon as MSC is greater than or equal 201106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg * to target_msc. 202106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg */ 203106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg int (*waitForMSC)(__DRIdrawable *drawable, 204106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg int64_t target_msc, int64_t divisor, int64_t remainder, 205106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg int64_t * msc, int64_t * sbc); 20638fdb47d26055e19d50cd407266b56ed4317ae0aJesse Barnes 20738fdb47d26055e19d50cd407266b56ed4317ae0aJesse Barnes /** 20838fdb47d26055e19d50cd407266b56ed4317ae0aJesse Barnes * Get the number of vertical refreshes since some point in time before 20938fdb47d26055e19d50cd407266b56ed4317ae0aJesse Barnes * this function was first called (i.e., system start up). 21038fdb47d26055e19d50cd407266b56ed4317ae0aJesse Barnes */ 2116e8d21d72f35767e07081a8bee4323aaaf5e2aaeKristian Høgsberg int (*getDrawableMSC)(__DRIscreen *screen, __DRIdrawable *drawable, 21238fdb47d26055e19d50cd407266b56ed4317ae0aJesse Barnes int64_t *msc); 213106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg}; 214106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg 215106a6f29bbdc71982afd629bdf89369cefd1459eKristian Høgsberg 216f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg#define __DRI_TEX_OFFSET "DRI_TexOffset" 217ccff0cb26378ce370fc8697a2a2ada138d2e119eKristian Høgsberg#define __DRI_TEX_OFFSET_VERSION 1 218f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsbergstruct __DRItexOffsetExtensionRec { 219f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg __DRIextension base; 220f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg 221f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg /** 222f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg * Method to override base texture image with a driver specific 'offset'. 223f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg * The depth passed in allows e.g. to ignore the alpha channel of texture 224f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg * images where the non-alpha components don't occupy a whole texel. 225f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg * 226f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg * For GLX_EXT_texture_from_pixmap with AIGLX. 227f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg */ 228f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg void (*setTexOffset)(__DRIcontext *pDRICtx, GLint texname, 229f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg unsigned long long offset, GLint depth, GLuint pitch); 230f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg}; 231f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg 232f29f0ae8383888a6493b615edc3bab254cf6df39Kristian Høgsberg 233debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5Kristian Høgsberg/* Valid values for format in the setTexBuffer2 function below. These 234debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5Kristian Høgsberg * values match the GLX tokens for compatibility reasons, but we 235debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5Kristian Høgsberg * define them here since the DRI interface can't depend on GLX. */ 236debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5Kristian Høgsberg#define __DRI_TEXTURE_FORMAT_NONE 0x20D8 237debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5Kristian Høgsberg#define __DRI_TEXTURE_FORMAT_RGB 0x20D9 238debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5Kristian Høgsberg#define __DRI_TEXTURE_FORMAT_RGBA 0x20DA 239debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5Kristian Høgsberg 2406d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg#define __DRI_TEX_BUFFER "DRI_TexBuffer" 24166175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt#define __DRI_TEX_BUFFER_VERSION 2 2426d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsbergstruct __DRItexBufferExtensionRec { 2436d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg __DRIextension base; 2446d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg 2456d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg /** 246dcbe215c015c8dc48440f578023c2b9d12b934e4Kristian Høgsberg * Method to override base texture image with the contents of a 247dcbe215c015c8dc48440f578023c2b9d12b934e4Kristian Høgsberg * __DRIdrawable. 2486d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg * 24966175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt * For GLX_EXT_texture_from_pixmap with AIGLX. Deprecated in favor of 25066175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt * setTexBuffer2 in version 2 of this interface 2516d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg */ 2526d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg void (*setTexBuffer)(__DRIcontext *pDRICtx, 253dcbe215c015c8dc48440f578023c2b9d12b934e4Kristian Høgsberg GLint target, 254dcbe215c015c8dc48440f578023c2b9d12b934e4Kristian Høgsberg __DRIdrawable *pDraw); 25566175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt 25666175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt /** 25766175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt * Method to override base texture image with the contents of a 25866175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt * __DRIdrawable, including the required texture format attribute. 25966175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt * 26066175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt * For GLX_EXT_texture_from_pixmap with AIGLX. 26166175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt */ 26266175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt void (*setTexBuffer2)(__DRIcontext *pDRICtx, 26366175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt GLint target, 26466175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt GLint format, 26566175aac7609ad314f25fbdff0d3958af310dc24Eric Anholt __DRIdrawable *pDraw); 2666d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg}; 2676d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg 26865562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane/** 26965562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane * Used by drivers that implement DRI2 27065562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane */ 27165562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane#define __DRI2_FLUSH "DRI2_Flush" 27261d26bc82e7c4100acfb551cbb0ba9d84bbc4ba5Francisco Jerez#define __DRI2_FLUSH_VERSION 3 27365562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihanestruct __DRI2flushExtensionRec { 27465562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane __DRIextension base; 27565562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane void (*flush)(__DRIdrawable *drawable); 276a35f6bb207efe3c959bbd16a37f2049e5aceeea9Jesse Barnes 277a35f6bb207efe3c959bbd16a37f2049e5aceeea9Jesse Barnes /** 27861d26bc82e7c4100acfb551cbb0ba9d84bbc4ba5Francisco Jerez * Ask the driver to call getBuffers/getBuffersWithFormat before 27961d26bc82e7c4100acfb551cbb0ba9d84bbc4ba5Francisco Jerez * it starts rendering again. 280a35f6bb207efe3c959bbd16a37f2049e5aceeea9Jesse Barnes * 28161d26bc82e7c4100acfb551cbb0ba9d84bbc4ba5Francisco Jerez * \param drawable the drawable to invalidate 282a35f6bb207efe3c959bbd16a37f2049e5aceeea9Jesse Barnes * 28361d26bc82e7c4100acfb551cbb0ba9d84bbc4ba5Francisco Jerez * \since 3 284a35f6bb207efe3c959bbd16a37f2049e5aceeea9Jesse Barnes */ 28561d26bc82e7c4100acfb551cbb0ba9d84bbc4ba5Francisco Jerez void (*invalidate)(__DRIdrawable *drawable); 28665562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane}; 28765562453fba69e862d5e3b381d18db9c40d9353cAlan Hourihane 2886d48779c7e5c9002d1bec4b1266ca05a474218efKristian Høgsberg 289a7a0a2beb54dcb78d7e0ab64cf2f5a6ede8191a4Kristian Høgsberg/** 290192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * XML document describing the configuration options supported by the 291192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * driver. 292192c988c7360d026a6f345b21acc2cdf41977915Brian Paul */ 293192c988c7360d026a6f345b21acc2cdf41977915Brian Paulextern const char __driConfigOptions[]; 294192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 295192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/*@}*/ 296192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 2976cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg/** 2986cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * The following extensions describe loader features that the DRI 2996cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * driver can make use of. Some of these are mandatory, such as the 300e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * getDrawableInfo extension for DRI and the DRI Loader extensions for 3016cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * DRI2, while others are optional, and if present allow the driver to 3026cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * expose certain features. The loader pass in a NULL terminated 3036cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * array of these extensions to the driver in the createNewScreen 3046cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * constructor. 3056cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg */ 3065f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 3076cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsbergtypedef struct __DRIgetDrawableInfoExtensionRec __DRIgetDrawableInfoExtension; 3086cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsbergtypedef struct __DRIsystemTimeExtensionRec __DRIsystemTimeExtension; 3096cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsbergtypedef struct __DRIdamageExtensionRec __DRIdamageExtension; 310e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsbergtypedef struct __DRIloaderExtensionRec __DRIloaderExtension; 311280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzistypedef struct __DRIswrastLoaderExtensionRec __DRIswrastLoaderExtension; 3125f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 3135f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 3146cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg/** 3156cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * Callback to getDrawableInfo protocol 3166cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg */ 3176cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg#define __DRI_GET_DRAWABLE_INFO "DRI_GetDrawableInfo" 3186cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg#define __DRI_GET_DRAWABLE_INFO_VERSION 1 3196cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsbergstruct __DRIgetDrawableInfoExtensionRec { 3206cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg __DRIextension base; 3215f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 3225f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick /** 3235f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * This function is used to get information about the position, size, and 3245f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * clip rects of a drawable. 3255f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick */ 3264ff95e78e19e5902352ea3759d32d9f013255f42Kristian Høgsberg GLboolean (* getDrawableInfo) ( __DRIdrawable *drawable, 327aceccda56b08338e217991e54607f1c9f18fc3e6Kristian Høgsberg unsigned int * index, unsigned int * stamp, 3285f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick int * x, int * y, int * width, int * height, 3295f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick int * numClipRects, drm_clip_rect_t ** pClipRects, 3305f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick int * backX, int * backY, 331e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int * numBackClipRects, drm_clip_rect_t ** pBackClipRects, 332e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 3336cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg}; 3345f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 3356cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg/** 3366cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * Callback to get system time for media stream counter extensions. 3376cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg */ 3386cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg#define __DRI_SYSTEM_TIME "DRI_SystemTime" 3396cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg#define __DRI_SYSTEM_TIME_VERSION 1 3406cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsbergstruct __DRIsystemTimeExtensionRec { 3416cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg __DRIextension base; 3425f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 3435f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick /** 3445f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * Get the 64-bit unadjusted system time (UST). 3455f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick */ 3465f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick int (*getUST)(int64_t * ust); 3475f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 3485f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick /** 3495f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * Get the media stream counter (MSC) rate. 3505f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * 3515f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * Matching the definition in GLX_OML_sync_control, this function returns 3525f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * the rate of the "media stream counter". In practical terms, this is 3535f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick * the frame refresh rate of the display. 3545f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick */ 355aceccda56b08338e217991e54607f1c9f18fc3e6Kristian Høgsberg GLboolean (*getMSCRate)(__DRIdrawable *draw, 356e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int32_t * numerator, int32_t * denominator, 357e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 3586cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg}; 3596cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg 3606cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg/** 3616cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg * Damage reporting 3626cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg */ 3636cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg#define __DRI_DAMAGE "DRI_Damage" 3646cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg#define __DRI_DAMAGE_VERSION 1 3656cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsbergstruct __DRIdamageExtensionRec { 3666cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg __DRIextension base; 367c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt 368c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt /** 369c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * Reports areas of the given drawable which have been modified by the 370c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * driver. 371c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * 372c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * \param drawable which the drawing was done to. 373c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * \param rects rectangles affected, with the drawable origin as the 374c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * origin. 375c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * \param x X offset of the drawable within the screen (used in the 376c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * front_buffer case) 377c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * \param y Y offset of the drawable within the screen. 378c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * \param front_buffer boolean flag for whether the drawing to the 379c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * drawable was actually done directly to the front buffer (instead 380c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt * of backing storage, for example) 381e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * \param loaderPrivate the data passed in at createNewDrawable time 382c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt */ 383aceccda56b08338e217991e54607f1c9f18fc3e6Kristian Høgsberg void (*reportDamage)(__DRIdrawable *draw, 384c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt int x, int y, 385c2b185cff82a6cdb723cda4e05ffe1a213a9de3eEric Anholt drm_clip_rect_t *rects, int num_rects, 386e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg GLboolean front_buffer, 387e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 3886cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg}; 3896cb3f5c4d8618a14bb7ad1d9df10ed7e648a7b2bKristian Høgsberg 390280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis#define __DRI_SWRAST_IMAGE_OP_DRAW 1 391280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis#define __DRI_SWRAST_IMAGE_OP_CLEAR 2 392280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis#define __DRI_SWRAST_IMAGE_OP_SWAP 3 393280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 394280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis/** 395280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis * SWRast Loader extension. 396280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis */ 397280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis#define __DRI_SWRAST_LOADER "DRI_SWRastLoader" 398280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis#define __DRI_SWRAST_LOADER_VERSION 1 399280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzisstruct __DRIswrastLoaderExtensionRec { 400280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis __DRIextension base; 401280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 402280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis /* 403280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis * Drawable position and size 404280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis */ 405280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void (*getDrawableInfo)(__DRIdrawable *drawable, 406280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis int *x, int *y, int *width, int *height, 407280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void *loaderPrivate); 408280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 409280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis /** 410280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis * Put image to drawable 411280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis */ 412280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void (*putImage)(__DRIdrawable *drawable, int op, 413280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis int x, int y, int width, int height, char *data, 414280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void *loaderPrivate); 415280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 416280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis /** 417280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis * Get image from drawable 418280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis */ 419280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void (*getImage)(__DRIdrawable *drawable, 420280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis int x, int y, int width, int height, char *data, 421280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void *loaderPrivate); 422280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis}; 423280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 424e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/** 425e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * The remaining extensions describe driver extensions, immediately 426e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * available interfaces provided by the driver. To start using the 427e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * driver, dlsym() for the __DRI_DRIVER_EXTENSIONS symbol and look for 428e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * the extension you need in the array. 429e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg */ 430e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_DRIVER_EXTENSIONS "__driDriverExtensions" 431e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 432e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/** 433e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * Tokens for __DRIconfig attribs. A number of attributes defined by 434e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * GLX or EGL standards are not in the table, as they must be provided 435e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * by the loader. For example, FBConfig ID or visual ID, drawable type. 436e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg */ 437e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 438e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_BUFFER_SIZE 1 439e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_LEVEL 2 440e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_RED_SIZE 3 441e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_GREEN_SIZE 4 442e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_BLUE_SIZE 5 443e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_LUMINANCE_SIZE 6 444e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_ALPHA_SIZE 7 445e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_ALPHA_MASK_SIZE 8 446e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_DEPTH_SIZE 9 447e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_STENCIL_SIZE 10 448e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_ACCUM_RED_SIZE 11 449e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_ACCUM_GREEN_SIZE 12 450e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_ACCUM_BLUE_SIZE 13 451e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_ACCUM_ALPHA_SIZE 14 452e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_SAMPLE_BUFFERS 15 453e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_SAMPLES 16 454e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_RENDER_TYPE 17 455e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_CONFIG_CAVEAT 18 456e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_CONFORMANT 19 457e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_DOUBLE_BUFFER 20 458e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_STEREO 21 459e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_AUX_BUFFERS 22 460e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_TYPE 23 461e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_INDEX_VALUE 24 462e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_RED_VALUE 25 463e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_GREEN_VALUE 26 464e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_BLUE_VALUE 27 465e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE 28 466e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_FLOAT_MODE 29 467e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_RED_MASK 30 468e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_GREEN_MASK 31 469e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_BLUE_MASK 32 470e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_ALPHA_MASK 33 471e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_MAX_PBUFFER_WIDTH 34 472e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_MAX_PBUFFER_HEIGHT 35 473e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_MAX_PBUFFER_PIXELS 36 474e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH 37 475e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT 38 476e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_VISUAL_SELECT_GROUP 39 477e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_SWAP_METHOD 40 478e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_MAX_SWAP_INTERVAL 41 479e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_MIN_SWAP_INTERVAL 42 480e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGB 43 481e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA 44 482e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE 45 483e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS 46 484e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_YINVERTED 47 485e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 486e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/* __DRI_ATTRIB_RENDER_TYPE */ 487e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_RGBA_BIT 0x01 488e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_COLOR_INDEX_BIT 0x02 489e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_LUMINANCE_BIT 0x04 490e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 491e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/* __DRI_ATTRIB_CONFIG_CAVEAT */ 492e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_SLOW_BIT 0x01 493e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_NON_CONFORMANT_CONFIG 0x02 494e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 495e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/* __DRI_ATTRIB_TRANSPARENT_TYPE */ 496e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_RGB 0x00 497e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TRANSPARENT_INDEX 0x01 498e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 499e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/* __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS */ 500e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TEXTURE_1D_BIT 0x01 501e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TEXTURE_2D_BIT 0x02 502e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_ATTRIB_TEXTURE_RECTANGLE_BIT 0x04 503e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 504e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/** 505e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * This extension defines the core DRI functionality. 506e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg */ 507e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_CORE "DRI_Core" 508e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_CORE_VERSION 1 509e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 510e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsbergstruct __DRIcoreExtensionRec { 511e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIextension base; 512e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 513e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIscreen *(*createNewScreen)(int screen, int fd, 514e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg unsigned int sarea_handle, 515e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIextension **extensions, 516e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIconfig ***driverConfigs, 517e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 518e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 519e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void (*destroyScreen)(__DRIscreen *screen); 520e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 521e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIextension **(*getExtensions)(__DRIscreen *screen); 522e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 523e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int (*getConfigAttrib)(const __DRIconfig *config, 524e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg unsigned int attrib, 525e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg unsigned int *value); 526e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 527e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int (*indexConfigAttrib)(const __DRIconfig *config, int index, 528e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg unsigned int *attrib, unsigned int *value); 529e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 530e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, 531e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIconfig *config, 532e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg unsigned int drawable_id, 533e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg unsigned int head, 534e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 535e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 536e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void (*destroyDrawable)(__DRIdrawable *drawable); 537e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 538e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void (*swapBuffers)(__DRIdrawable *drawable); 539e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 540e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIcontext *(*createNewContext)(__DRIscreen *screen, 541e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIconfig *config, 542e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIcontext *shared, 543e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 544e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 545e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int (*copyContext)(__DRIcontext *dest, 546e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIcontext *src, 547e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg unsigned long mask); 548e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 549e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void (*destroyContext)(__DRIcontext *context); 550e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 551e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int (*bindContext)(__DRIcontext *ctx, 552e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIdrawable *pdraw, 553e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIdrawable *pread); 554e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 555e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int (*unbindContext)(__DRIcontext *ctx); 556e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg}; 557e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 558e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg/** 559e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * Stored version of some component (i.e., server-side DRI module, kernel-side 560e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * DRM, etc.). 561e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * 562e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * \todo 563e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * There are several data structures that explicitly store a major version, 564e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * minor version, and patch level. These structures should be modified to 565e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * have a \c __DRIversionRec instead. 566e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg */ 567e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsbergstruct __DRIversionRec { 568e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int major; /**< Major version number. */ 569e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int minor; /**< Minor version number. */ 570e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int patch; /**< Patch-level. */ 5715f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick}; 5725f1ba3e21b62cee1a4f900a2e6964728f3eeea9bIan Romanick 573192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/** 574192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * Framebuffer information record. Used by libGL to communicate information 575192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * about the framebuffer to the driver's \c __driCreateNewScreen function. 576192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 577192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * In XFree86, most of this information is derrived from data returned by 578192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * calling \c XF86DRIGetDeviceInfo. 579192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 580192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * \sa XF86DRIGetDeviceInfo __DRIdisplayRec::createNewScreen 581192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * __driUtilCreateNewScreen CallCreateNewScreen 582192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * 583192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * \bug This structure could be better named. 584192c988c7360d026a6f345b21acc2cdf41977915Brian Paul */ 585192c988c7360d026a6f345b21acc2cdf41977915Brian Paulstruct __DRIframebufferRec { 586192c988c7360d026a6f345b21acc2cdf41977915Brian Paul unsigned char *base; /**< Framebuffer base address in the CPU's 587192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * address space. This value is calculated by 588192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * calling \c drmMap on the framebuffer handle 589192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * returned by \c XF86DRIGetDeviceInfo (or a 590192c988c7360d026a6f345b21acc2cdf41977915Brian Paul * similar function). 591192c988c7360d026a6f345b21acc2cdf41977915Brian Paul */ 592192c988c7360d026a6f345b21acc2cdf41977915Brian Paul int size; /**< Framebuffer size, in bytes. */ 593192c988c7360d026a6f345b21acc2cdf41977915Brian Paul int stride; /**< Number of bytes from one line to the next. */ 594192c988c7360d026a6f345b21acc2cdf41977915Brian Paul int width; /**< Pixel width of the framebuffer. */ 595192c988c7360d026a6f345b21acc2cdf41977915Brian Paul int height; /**< Pixel height of the framebuffer. */ 596192c988c7360d026a6f345b21acc2cdf41977915Brian Paul int dev_priv_size; /**< Size of the driver's dev-priv structure. */ 597192c988c7360d026a6f345b21acc2cdf41977915Brian Paul void *dev_priv; /**< Pointer to the driver's dev-priv structure. */ 598192c988c7360d026a6f345b21acc2cdf41977915Brian Paul}; 599192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 600192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 601192c988c7360d026a6f345b21acc2cdf41977915Brian Paul/** 602e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * This extension provides alternative screen, drawable and context 603e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * constructors for legacy DRI functionality. This is used in 604e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg * conjunction with the core extension. 605192c988c7360d026a6f345b21acc2cdf41977915Brian Paul */ 606e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_LEGACY "DRI_Legacy" 607e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg#define __DRI_LEGACY_VERSION 1 608192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 609e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsbergstruct __DRIlegacyExtensionRec { 610e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIextension base; 611192c988c7360d026a6f345b21acc2cdf41977915Brian Paul 612e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIscreen *(*createNewScreen)(int screen, 613e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIversion *ddx_version, 614e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIversion *dri_version, 615e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIversion *drm_version, 616e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIframebuffer *frame_buffer, 617e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *pSAREA, int fd, 618e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIextension **extensions, 619e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIconfig ***driver_configs, 620e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 621e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 622e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, 623e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIconfig *config, 624e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg drm_drawable_t hwDrawable, 625e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int renderType, const int *attrs, 626e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 627e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg 628e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIcontext *(*createNewContext)(__DRIscreen *screen, 629e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg const __DRIconfig *config, 630e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg int render_type, 631e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg __DRIcontext *shared, 632e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg drm_context_t hwContext, 633e82dd8c6e1fa2fff5b960de26961080ba5e9651dKristian Høgsberg void *loaderPrivate); 634192c988c7360d026a6f345b21acc2cdf41977915Brian Paul}; 63574d563cdfbfb07cc666d60dc909e90ddb9949cbbKeith Whitwell 636280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis/** 637280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis * This extension provides alternative screen, drawable and context 638280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis * constructors for swrast DRI functionality. This is used in 639280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis * conjunction with the core extension. 640280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis */ 641280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis#define __DRI_SWRAST "DRI_SWRast" 642280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis#define __DRI_SWRAST_VERSION 1 643280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 644280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzisstruct __DRIswrastExtensionRec { 645280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis __DRIextension base; 646280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 647280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis __DRIscreen *(*createNewScreen)(int screen, 648280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis const __DRIextension **extensions, 649280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis const __DRIconfig ***driver_configs, 650280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void *loaderPrivate); 651280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 652280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, 653280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis const __DRIconfig *config, 654280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis void *loaderPrivate); 655280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis}; 656280bf89bd4a6bb7977abb00b88d59234d2c80844George Sapountzis 657f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg/** 658f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg * DRI2 Loader extension. 659f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg */ 660f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_BUFFER_FRONT_LEFT 0 661f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_BUFFER_BACK_LEFT 1 662f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_BUFFER_FRONT_RIGHT 2 663f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_BUFFER_BACK_RIGHT 3 664f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_BUFFER_DEPTH 4 665f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_BUFFER_STENCIL 5 666f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_BUFFER_ACCUM 6 667396711b840683809565507e47a4311e5b7503ef2Alan Hourihane#define __DRI_BUFFER_FAKE_FRONT_LEFT 7 668396711b840683809565507e47a4311e5b7503ef2Alan Hourihane#define __DRI_BUFFER_FAKE_FRONT_RIGHT 8 669dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick#define __DRI_BUFFER_DEPTH_STENCIL 9 /**< Only available with DRI2 1.1 */ 670f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 671f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsbergstruct __DRIbufferRec { 672f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg unsigned int attachment; 673f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg unsigned int name; 674f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg unsigned int pitch; 675f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg unsigned int cpp; 676f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg unsigned int flags; 677f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg}; 678f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 679f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_DRI2_LOADER "DRI_DRI2Loader" 680dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick#define __DRI_DRI2_LOADER_VERSION 3 681f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsbergstruct __DRIdri2LoaderExtensionRec { 682f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg __DRIextension base; 683f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 684f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg __DRIbuffer *(*getBuffers)(__DRIdrawable *driDrawable, 685f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg int *width, int *height, 686f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg unsigned int *attachments, int count, 687f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg int *out_count, void *loaderPrivate); 68882634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick 68982634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick /** 69082634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * Flush pending front-buffer rendering 69182634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * 69282634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * Any rendering that has been performed to the 69382634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * \c __DRI_BUFFER_FAKE_FRONT_LEFT will be flushed to the 69482634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * \c __DRI_BUFFER_FRONT_LEFT. 69582634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * 69682634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * \param driDrawable Drawable whose front-buffer is to be flushed 69782634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * \param loaderPrivate Loader's private data that was previously passed 69882634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick * into __DRIdri2ExtensionRec::createNewDrawable 69982634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick */ 70082634ee8df7328b9235abd8352d33b0b3d953600Ian Romanick void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate); 701dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick 702dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick 703dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick /** 704dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * Get list of buffers from the server 705dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * 706dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * Gets a list of buffer for the specified set of attachments. Unlike 707dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \c ::getBuffers, this function takes a list of attachments paired with 708dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * opaque \c unsigned \c int value describing the format of the buffer. 709dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * It is the responsibility of the caller to know what the service that 710dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * allocates the buffers will expect to receive for the format. 711dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * 712dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \param driDrawable Drawable whose buffers are being queried. 713dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \param width Output where the width of the buffers is stored. 714dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \param height Output where the height of the buffers is stored. 715dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \param attachments List of pairs of attachment ID and opaque format 716dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * requested for the drawable. 717dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \param count Number of attachment / format pairs stored in 718dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \c attachments. 719dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * \param loaderPrivate Loader's private data that was previously passed 720dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick * into __DRIdri2ExtensionRec::createNewDrawable. 721dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick */ 722dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick __DRIbuffer *(*getBuffersWithFormat)(__DRIdrawable *driDrawable, 723dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick int *width, int *height, 724dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick unsigned int *attachments, int count, 725dbf87f23126cc869637575e9ea2cb58774efe888Ian Romanick int *out_count, void *loaderPrivate); 726f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg}; 727f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 728f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg/** 729f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg * This extension provides alternative screen, drawable and context 730f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg * constructors for DRI2. 731f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg */ 732f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_DRI2 "DRI_DRI2" 733f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg#define __DRI_DRI2_VERSION 1 734f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 735f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsbergstruct __DRIdri2ExtensionRec { 736f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg __DRIextension base; 737f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 738f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg __DRIscreen *(*createNewScreen)(int screen, int fd, 739f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg const __DRIextension **extensions, 740f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg const __DRIconfig ***driver_configs, 741f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg void *loaderPrivate); 742f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 743f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, 744f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg const __DRIconfig *config, 745f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg void *loaderPrivate); 746f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 747f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg __DRIcontext *(*createNewContext)(__DRIscreen *screen, 748f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg const __DRIconfig *config, 749f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg __DRIcontext *shared, 750f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg void *loaderPrivate); 751f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 752f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg}; 753f56b569e9af356c11869ee49a4669bb01b75397eKristian Høgsberg 75479cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 75579cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg/** 75679cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * This extension provides functionality to enable various EGLImage 75779cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * extensions. 75879cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg */ 75979cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg#define __DRI_IMAGE "DRI_IMAGE" 76079cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg#define __DRI_IMAGE_VERSION 1 76179cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 76279cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg/** 76379cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * These formats correspond to the similarly named MESA_FORMAT_* 76479cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * tokens, except in the native endian of the CPU. For example, on 76579cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * little endian __DRI_IMAGE_FORMAT_XRGB8888 corresponds to 76679cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * MESA_FORMAT_XRGB8888, but MESA_FORMAT_XRGB8888_REV on big endian. 76779cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg */ 76879cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg#define __DRI_IMAGE_FORMAT_RGB565 0x1001 76979cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg#define __DRI_IMAGE_FORMAT_XRGB8888 0x1002 77079cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg#define __DRI_IMAGE_FORMAT_ARGB8888 0x1003 77179cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 77279cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsbergtypedef struct __DRIimageRec __DRIimage; 77379cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsbergtypedef struct __DRIimageExtensionRec __DRIimageExtension; 77479cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsbergstruct __DRIimageExtensionRec { 77579cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg __DRIextension base; 77679cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 77779cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg __DRIimage *(*createImageFromName)(__DRIcontext *context, 77879cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg int width, int height, int format, 77979cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg int name, int pitch, 78079cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg void *loaderPrivate); 78179cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 78279cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg __DRIimage *(*createImageFromRenderbuffer)(__DRIcontext *context, 78379cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg int renderbuffer, 78479cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg void *loaderPrivate); 78579cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 78679cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg void (*destroyImage)(__DRIimage *image); 78779cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg}; 78879cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 78979cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg/** 79079cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * This extension must be implemented by the loader and passed to the 79179cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * driver at screen creation time. The EGLImage entry points in the 79279cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * various client APIs take opaque EGLImage handles and use this 79379cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * extension to map them to a __DRIimage. At version 1, this 79479cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * extensions allows mapping EGLImage pointers to __DRIimage pointers, 79579cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * but future versions could support other EGLImage-like, opaque types 79679cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg * with new lookup functions. 79779cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg */ 79879cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg#define __DRI_IMAGE_LOOKUP "DRI_IMAGE_LOOKUP" 79979cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg#define __DRI_IMAGE_LOOKUP_VERSION 1 80079cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 80179cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsbergtypedef struct __DRIimageLookupExtensionRec __DRIimageLookupExtension; 80279cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsbergstruct __DRIimageLookupExtensionRec { 80379cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg __DRIextension base; 80479cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 80579cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg __DRIimage *(*lookupEGLImage)(__DRIcontext *context, void *image, 80679cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg void *loaderPrivate); 80779cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg}; 80879cbcb663d738b424466219cf8a1221eac106a6fKristian Høgsberg 80974d563cdfbfb07cc666d60dc909e90ddb9949cbbKeith Whitwell#endif 810