mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-23 17:18:11 +02:00
124 lines
3.6 KiB
C
124 lines
3.6 KiB
C
/**
|
|
* \file miniglxP.h
|
|
* \brief Define replacements for some X data types and define the DRI-related
|
|
* data structures.
|
|
*
|
|
* \note Cut down version of glxclient.h.
|
|
*
|
|
*/
|
|
|
|
#ifndef _dri_h_
|
|
#define _dri_h_
|
|
|
|
#include "driver.h"
|
|
|
|
typedef struct __DRIscreenRec __DRIscreen; /**< \copydoc __DRIscreenRec */
|
|
typedef struct __DRIcontextRec __DRIcontext; /**< \copydoc __DRIcontextRec */
|
|
typedef struct __DRIdrawableRec __DRIdrawable; /**< \copydoc __DRIdrawableRec */
|
|
|
|
/**
|
|
* \brief Screen dependent methods.
|
|
*
|
|
* This structure is initialized during the MiniGLXDisplayRec::createScreen
|
|
* call.
|
|
*/
|
|
struct __DRIscreenRec {
|
|
/**
|
|
* \brief Method to destroy the private DRI screen data.
|
|
*/
|
|
void (*destroyScreen)(__DRIscreen *screen);
|
|
|
|
/**
|
|
* \brief Method to create the private DRI context data and initialize the
|
|
* context dependent methods.
|
|
*/
|
|
void *(*createContext)(__DRIscreen *screen, const __GLcontextModes *glVisual,
|
|
void *sharedPrivate);
|
|
/**
|
|
* \brief Method to create the private DRI drawable data and initialize the
|
|
* drawable dependent methods.
|
|
*/
|
|
void *(*createDrawable)(__DRIscreen *screen,
|
|
int width, int height, int index,
|
|
const __GLcontextModes *glVisual);
|
|
|
|
/*
|
|
* XXX in the future, implement this:
|
|
void *(*createPBuffer)(Display *dpy, int scrn, GLXPbuffer pbuffer,
|
|
GLXFBConfig config, __DRIdrawable *pdraw);
|
|
*/
|
|
|
|
/**
|
|
* \brief Opaque pointer to private per screen direct rendering data.
|
|
*
|
|
* \c NULL if direct rendering is not supported on this screen. Never
|
|
* dereferenced in libGL.
|
|
*/
|
|
};
|
|
|
|
/**
|
|
* \brief Context dependent methods.
|
|
*
|
|
* This structure is initialized during the __DRIscreenRec::createContext call.
|
|
*/
|
|
struct __DRIcontextRec {
|
|
/**
|
|
* \brief Method to destroy the private DRI context data.
|
|
*/
|
|
void (*destroyContext)(__DRIcontext *context);
|
|
|
|
/**
|
|
* \brief Method to bind a DRI drawable to a DRI graphics context.
|
|
*
|
|
* \todo XXX in the future, also pass a 'read' GLXDrawable for
|
|
* glXMakeCurrentReadSGI() and GLX 1.3's glXMakeContextCurrent().
|
|
*/
|
|
GLboolean (*bindContext)(__DRIscreen *screen, __DRIdrawable *drawable, __DRIcontext *context);
|
|
|
|
/**
|
|
* \brief Method to unbind a DRI drawable to a DRI graphics context.
|
|
*/
|
|
GLboolean (*unbindContext)(__DRIdrawable *drawable, __DRIcontext *context);
|
|
/**
|
|
* \brief Opaque pointer to private per context direct rendering data.
|
|
*
|
|
* NULL if direct rendering is not supported on the display or
|
|
* screen used to create this context. Never dereferenced in libGL.
|
|
*/
|
|
};
|
|
|
|
/**
|
|
* \brief Drawable dependent methods.
|
|
*
|
|
* This structure is initialized during the __DRIscreenRec::createDrawable call.
|
|
*
|
|
* __DRIscreenRec::createDrawable is not called by libGL at this time. It's
|
|
* currently used via the dri_util.c utility code instead.
|
|
*/
|
|
struct __DRIdrawableRec {
|
|
/**
|
|
* \brief Method to destroy the private DRI drawable data.
|
|
*/
|
|
void (*destroyDrawable)(__DRIdrawable *drawable);
|
|
|
|
|
|
/**
|
|
* \brief Method to swap the front and back buffers.
|
|
*/
|
|
void (*swapBuffers)(__DRIdrawable *drawable);
|
|
|
|
/**
|
|
* \brief 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.
|
|
*/
|
|
};
|
|
|
|
typedef void *(driCreateScreenFunc)(struct DRIDriverRec *driver,
|
|
struct DRIDriverContextRec *driverContext);
|
|
|
|
/** This must be implemented in each driver */
|
|
extern driCreateScreenFunc __driCreateScreen;
|
|
|
|
#endif /* _dri_h_ */
|