Convert all DRI entrypoints to take pointers to __DRI* types.
The entrypoints take a mix of __DRIscreen * and void * (screen private) arguments (similarly for contexts and drawables). This patch does away with passing the private void pointer and always only passes the fully typed __DRIscreen pointer and always as the first argument. This makes the interface more consistent and increases type safety, and catches a bug where we would pass a screen private to DRIdrawable::getSBC.
This commit is contained in:
parent
aac367f48a
commit
5987a03f99
|
@ -273,7 +273,7 @@ struct __DRIscreenRec {
|
||||||
/**
|
/**
|
||||||
* Method to destroy the private DRI screen data.
|
* Method to destroy the private DRI screen data.
|
||||||
*/
|
*/
|
||||||
void (*destroyScreen)(void *screenPrivate);
|
void (*destroyScreen)(__DRIscreen *screen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to create the private DRI drawable data and initialize the
|
* Method to create the private DRI drawable data and initialize the
|
||||||
|
@ -298,7 +298,7 @@ struct __DRIscreenRec {
|
||||||
*
|
*
|
||||||
* \since Internal API version 20030317.
|
* \since Internal API version 20030317.
|
||||||
*/
|
*/
|
||||||
int (*getMSC)( void *screenPrivate, int64_t *msc );
|
int (*getMSC)(__DRIscreen *screen, int64_t *msc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Functions associated with MESA_allocate_memory.
|
* Functions associated with MESA_allocate_memory.
|
||||||
|
@ -348,7 +348,7 @@ struct __DRIcontextRec {
|
||||||
/**
|
/**
|
||||||
* Method to destroy the private DRI context data.
|
* Method to destroy the private DRI context data.
|
||||||
*/
|
*/
|
||||||
void (*destroyContext)(void *contextPrivate);
|
void (*destroyContext)(__DRIcontext *context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opaque pointer to private per context direct rendering data.
|
* Opaque pointer to private per context direct rendering data.
|
||||||
|
@ -362,9 +362,9 @@ struct __DRIcontextRec {
|
||||||
*
|
*
|
||||||
* \since Internal API version 20050727.
|
* \since Internal API version 20050727.
|
||||||
*/
|
*/
|
||||||
GLboolean (*bindContext)(__DRIdrawable *pdraw,
|
GLboolean (*bindContext)(__DRIcontext *ctx,
|
||||||
__DRIdrawable *pread,
|
__DRIdrawable *pdraw,
|
||||||
__DRIcontext *ctx);
|
__DRIdrawable *pread);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to unbind a DRI drawable from a DRI graphics context.
|
* Method to unbind a DRI drawable from a DRI graphics context.
|
||||||
|
@ -384,12 +384,12 @@ struct __DRIdrawableRec {
|
||||||
/**
|
/**
|
||||||
* Method to destroy the private DRI drawable data.
|
* Method to destroy the private DRI drawable data.
|
||||||
*/
|
*/
|
||||||
void (*destroyDrawable)(void *drawablePrivate);
|
void (*destroyDrawable)(__DRIdrawable *drawable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to swap the front and back buffers.
|
* Method to swap the front and back buffers.
|
||||||
*/
|
*/
|
||||||
void (*swapBuffers)(void *drawablePrivate);
|
void (*swapBuffers)(__DRIdrawable *drawable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opaque pointer to private per drawable direct rendering data.
|
* Opaque pointer to private per drawable direct rendering data.
|
||||||
|
@ -403,16 +403,16 @@ struct __DRIdrawableRec {
|
||||||
*
|
*
|
||||||
* \since Internal API version 20030317.
|
* \since Internal API version 20030317.
|
||||||
*/
|
*/
|
||||||
int (*getSBC)(void *drawablePrivate, int64_t *sbc );
|
int (*getSBC)(__DRIdrawable *drawable, int64_t *sbc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wait for the SBC to be greater than or equal target_sbc.
|
* Wait for the SBC to be greater than or equal target_sbc.
|
||||||
*
|
*
|
||||||
* \since Internal API version 20030317.
|
* \since Internal API version 20030317.
|
||||||
*/
|
*/
|
||||||
int (*waitForSBC)( void *drawablePriv,
|
int (*waitForSBC)(__DRIdrawable *drawable,
|
||||||
int64_t target_sbc,
|
int64_t target_sbc,
|
||||||
int64_t * msc, int64_t * sbc );
|
int64_t * msc, int64_t * sbc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wait for the MSC to equal target_msc, or, if that has already passed,
|
* Wait for the MSC to equal target_msc, or, if that has already passed,
|
||||||
|
@ -422,9 +422,9 @@ struct __DRIdrawableRec {
|
||||||
*
|
*
|
||||||
* \since Internal API version 20030317.
|
* \since Internal API version 20030317.
|
||||||
*/
|
*/
|
||||||
int (*waitForMSC)( void *drawablePriv,
|
int (*waitForMSC)(__DRIdrawable *drawable,
|
||||||
int64_t target_msc, int64_t divisor, int64_t remainder,
|
int64_t target_msc, int64_t divisor, int64_t remainder,
|
||||||
int64_t * msc, int64_t * sbc );
|
int64_t * msc, int64_t * sbc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Like \c swapBuffers, but does NOT have an implicit \c glFlush. Once
|
* Like \c swapBuffers, but does NOT have an implicit \c glFlush. Once
|
||||||
|
@ -435,7 +435,7 @@ struct __DRIdrawableRec {
|
||||||
*
|
*
|
||||||
* \since Internal API version 20030317.
|
* \since Internal API version 20030317.
|
||||||
*/
|
*/
|
||||||
int64_t (*swapBuffersMSC)(void *drawablePrivate,
|
int64_t (*swapBuffersMSC)(__DRIdrawable *drawable,
|
||||||
int64_t target_msc,
|
int64_t target_msc,
|
||||||
int64_t divisor, int64_t remainder);
|
int64_t divisor, int64_t remainder);
|
||||||
|
|
||||||
|
@ -444,16 +444,16 @@ struct __DRIdrawableRec {
|
||||||
*
|
*
|
||||||
* \since Internal API version 20030317.
|
* \since Internal API version 20030317.
|
||||||
*/
|
*/
|
||||||
int (*frameTracking)(void *drawablePrivate, GLboolean enable);
|
int (*frameTracking)(__DRIdrawable *drawable, GLboolean enable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve frame usage information.
|
* Retrieve frame usage information.
|
||||||
*
|
*
|
||||||
* \since Internal API version 20030317.
|
* \since Internal API version 20030317.
|
||||||
*/
|
*/
|
||||||
int (*queryFrameTracking)(void *drawablePrivate,
|
int (*queryFrameTracking)(__DRIdrawable *drawable,
|
||||||
int64_t * sbc, int64_t * missedFrames,
|
int64_t * sbc, int64_t * missedFrames,
|
||||||
float * lastMissedUsage, float * usage );
|
float * lastMissedUsage, float * usage);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used by drivers that implement the GLX_SGI_swap_control or
|
* Used by drivers that implement the GLX_SGI_swap_control or
|
||||||
|
@ -468,7 +468,7 @@ struct __DRIdrawableRec {
|
||||||
*
|
*
|
||||||
* \since Internal API version 20060314.
|
* \since Internal API version 20060314.
|
||||||
*/
|
*/
|
||||||
void (*copySubBuffer)(void *drawablePrivate,
|
void (*copySubBuffer)(__DRIdrawable *drawable,
|
||||||
int x, int y, int w, int h);
|
int x, int y, int w, int h);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ static void GarbageCollectDRIDrawables(Display *dpy, __GLXscreenConfigs *sc)
|
||||||
if (!windowExistsFlag) {
|
if (!windowExistsFlag) {
|
||||||
/* Destroy the local drawable data, if the drawable no
|
/* Destroy the local drawable data, if the drawable no
|
||||||
longer exists in the Xserver */
|
longer exists in the Xserver */
|
||||||
(*pdraw->driDrawable.destroyDrawable)(pdraw->driDrawable.private);
|
(*pdraw->driDrawable.destroyDrawable)(&pdraw->driDrawable);
|
||||||
XF86DRIDestroyDrawable(dpy, sc->scr, draw);
|
XF86DRIDestroyDrawable(dpy, sc->scr, draw);
|
||||||
Xfree(pdraw);
|
Xfree(pdraw);
|
||||||
}
|
}
|
||||||
|
@ -530,7 +530,7 @@ DestroyContext(Display *dpy, GLXContext gc)
|
||||||
/* Destroy the direct rendering context */
|
/* Destroy the direct rendering context */
|
||||||
if (gc->isDirect) {
|
if (gc->isDirect) {
|
||||||
if (gc->driContext.private) {
|
if (gc->driContext.private) {
|
||||||
(*gc->driContext.destroyContext)(gc->driContext.private);
|
(*gc->driContext.destroyContext)(&gc->driContext);
|
||||||
XF86DRIDestroyContext(dpy, gc->psc->scr, gc->hwContextID);
|
XF86DRIDestroyContext(dpy, gc->psc->scr, gc->hwContextID);
|
||||||
gc->driContext.private = NULL;
|
gc->driContext.private = NULL;
|
||||||
}
|
}
|
||||||
|
@ -859,7 +859,7 @@ PUBLIC void glXSwapBuffers(Display *dpy, GLXDrawable drawable)
|
||||||
__DRIdrawable *pdraw = GetDRIDrawable( dpy, drawable, NULL );
|
__DRIdrawable *pdraw = GetDRIDrawable( dpy, drawable, NULL );
|
||||||
|
|
||||||
if ( pdraw != NULL ) {
|
if ( pdraw != NULL ) {
|
||||||
(*pdraw->swapBuffers)(pdraw->private);
|
(*pdraw->swapBuffers)(pdraw);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1845,7 +1845,7 @@ static GLint __glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable)
|
||||||
|
|
||||||
if ( (pdraw != NULL) && (pdraw->frameTracking != NULL)
|
if ( (pdraw != NULL) && (pdraw->frameTracking != NULL)
|
||||||
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
||||||
status = pdraw->frameTracking( pdraw->private, GL_TRUE );
|
status = pdraw->frameTracking(pdraw, GL_TRUE);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
|
@ -1865,7 +1865,7 @@ static GLint __glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable)
|
||||||
|
|
||||||
if ( (pdraw != NULL) && (pdraw->frameTracking != NULL)
|
if ( (pdraw != NULL) && (pdraw->frameTracking != NULL)
|
||||||
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
||||||
status = pdraw->frameTracking( pdraw->private, GL_FALSE );
|
status = pdraw->frameTracking(pdraw, GL_FALSE);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
|
@ -1889,9 +1889,8 @@ static GLint __glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable,
|
||||||
int64_t sbc, missedFrames;
|
int64_t sbc, missedFrames;
|
||||||
float lastMissedUsage;
|
float lastMissedUsage;
|
||||||
|
|
||||||
status = pdraw->queryFrameTracking( pdraw->private, &sbc,
|
status = pdraw->queryFrameTracking(pdraw, &sbc, &missedFrames,
|
||||||
&missedFrames, &lastMissedUsage,
|
&lastMissedUsage, usage);
|
||||||
usage );
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
|
@ -1916,9 +1915,8 @@ static GLint __glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable,
|
||||||
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
||||||
float usage;
|
float usage;
|
||||||
|
|
||||||
status = pdraw->queryFrameTracking( pdraw->private, sbc,
|
status = pdraw->queryFrameTracking(pdraw, sbc, missedFrames,
|
||||||
missedFrames, lastMissedUsage,
|
lastMissedUsage, &usage);
|
||||||
& usage );
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
|
@ -1952,7 +1950,7 @@ static int __glXGetVideoSyncSGI(unsigned int *count)
|
||||||
int ret;
|
int ret;
|
||||||
int64_t temp;
|
int64_t temp;
|
||||||
|
|
||||||
ret = psc->driScreen.getMSC( psc->driScreen.private, & temp );
|
ret = psc->driScreen.getMSC(&psc->driScreen, &temp);
|
||||||
*count = (unsigned) temp;
|
*count = (unsigned) temp;
|
||||||
return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
|
return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
|
||||||
}
|
}
|
||||||
|
@ -1983,9 +1981,8 @@ static int __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count
|
||||||
int64_t msc;
|
int64_t msc;
|
||||||
int64_t sbc;
|
int64_t sbc;
|
||||||
|
|
||||||
ret = (*pdraw->waitForMSC)( pdraw->private,
|
ret = (*pdraw->waitForMSC)(pdraw, 0,
|
||||||
0, divisor, remainder,
|
divisor, remainder, &msc, &sbc);
|
||||||
& msc, & sbc );
|
|
||||||
*count = (unsigned) msc;
|
*count = (unsigned) msc;
|
||||||
return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
|
return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
|
||||||
}
|
}
|
||||||
|
@ -2151,8 +2148,8 @@ static Bool __glXGetSyncValuesOML(Display *dpy, GLXDrawable drawable,
|
||||||
assert( (pdraw == NULL) || (i != -1) );
|
assert( (pdraw == NULL) || (i != -1) );
|
||||||
return ( (pdraw && pdraw->getSBC && psc->driScreen.getMSC)
|
return ( (pdraw && pdraw->getSBC && psc->driScreen.getMSC)
|
||||||
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit )
|
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit )
|
||||||
&& ((*psc->driScreen.getMSC)( psc->driScreen.private, msc ) == 0)
|
&& ((*psc->driScreen.getMSC)(&psc->driScreen, msc) == 0)
|
||||||
&& ((*pdraw->getSBC)( psc->driScreen.private, sbc ) == 0)
|
&& ((*pdraw->getSBC)(pdraw, sbc ) == 0)
|
||||||
&& (__glXGetUST( ust ) == 0) );
|
&& (__glXGetUST( ust ) == 0) );
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -2275,8 +2272,7 @@ static int64_t __glXSwapBuffersMscOML(Display *dpy, GLXDrawable drawable,
|
||||||
|
|
||||||
if ( (pdraw != NULL) && (pdraw->swapBuffersMSC != NULL)
|
if ( (pdraw != NULL) && (pdraw->swapBuffersMSC != NULL)
|
||||||
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit ) ) {
|
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit ) ) {
|
||||||
return (*pdraw->swapBuffersMSC)(pdraw->private, target_msc,
|
return (*pdraw->swapBuffersMSC)(pdraw, target_msc, divisor, remainder);
|
||||||
divisor, remainder);
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
|
@ -2310,8 +2306,8 @@ static Bool __glXWaitForMscOML(Display * dpy, GLXDrawable drawable,
|
||||||
|
|
||||||
if ( (pdraw != NULL) && (pdraw->waitForMSC != NULL)
|
if ( (pdraw != NULL) && (pdraw->waitForMSC != NULL)
|
||||||
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit ) ) {
|
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit ) ) {
|
||||||
ret = (*pdraw->waitForMSC)( pdraw->private, target_msc,
|
ret = (*pdraw->waitForMSC)(pdraw, target_msc,
|
||||||
divisor, remainder, msc, sbc );
|
divisor, remainder, msc, sbc);
|
||||||
|
|
||||||
/* __glXGetUST returns zero on success and non-zero on failure.
|
/* __glXGetUST returns zero on success and non-zero on failure.
|
||||||
* This function returns True on success and False on failure.
|
* This function returns True on success and False on failure.
|
||||||
|
@ -2350,7 +2346,7 @@ static Bool __glXWaitForSbcOML(Display * dpy, GLXDrawable drawable,
|
||||||
|
|
||||||
if ( (pdraw != NULL) && (pdraw->waitForSBC != NULL)
|
if ( (pdraw != NULL) && (pdraw->waitForSBC != NULL)
|
||||||
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit )) {
|
&& __glXExtensionBitIsEnabled( psc, OML_sync_control_bit )) {
|
||||||
ret = (*pdraw->waitForSBC)( pdraw->private, target_sbc, msc, sbc );
|
ret = (*pdraw->waitForSBC)(pdraw, target_sbc, msc, sbc);
|
||||||
|
|
||||||
/* __glXGetUST returns zero on success and non-zero on failure.
|
/* __glXGetUST returns zero on success and non-zero on failure.
|
||||||
* This function returns True on success and False on failure.
|
* This function returns True on success and False on failure.
|
||||||
|
@ -2508,7 +2504,7 @@ static void __glXCopySubBufferMESA(Display *dpy, GLXDrawable drawable,
|
||||||
if ( pdraw != NULL ) {
|
if ( pdraw != NULL ) {
|
||||||
__GLXscreenConfigs * const psc = GetGLXScreenConfigs( dpy, screen );
|
__GLXscreenConfigs * const psc = GetGLXScreenConfigs( dpy, screen );
|
||||||
if ( __glXExtensionBitIsEnabled( psc, MESA_copy_sub_buffer_bit ) ) {
|
if ( __glXExtensionBitIsEnabled( psc, MESA_copy_sub_buffer_bit ) ) {
|
||||||
(*pdraw->copySubBuffer)(pdraw->private, x, y, width, height);
|
(*pdraw->copySubBuffer)(pdraw, x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -360,7 +360,7 @@ static void FreeScreenConfigs(__GLXdisplayPrivate *priv)
|
||||||
#ifdef GLX_DIRECT_RENDERING
|
#ifdef GLX_DIRECT_RENDERING
|
||||||
/* Free the direct rendering per screen data */
|
/* Free the direct rendering per screen data */
|
||||||
if (psc->driScreen.private)
|
if (psc->driScreen.private)
|
||||||
(*psc->driScreen.destroyScreen)(psc->driScreen.private);
|
(*psc->driScreen.destroyScreen)(&psc->driScreen);
|
||||||
psc->driScreen.private = NULL;
|
psc->driScreen.private = NULL;
|
||||||
__glxHashDestroy(psc->drawHash);
|
__glxHashDestroy(psc->drawHash);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1656,7 +1656,7 @@ FetchDRIDrawable( Display *dpy, GLXDrawable drawable, GLXContext gc)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__glxHashInsert(sc->drawHash, drawable, pdraw)) {
|
if (__glxHashInsert(sc->drawHash, drawable, pdraw)) {
|
||||||
(*pdraw->driDrawable.destroyDrawable)(pdraw->driDrawable.private);
|
(*pdraw->driDrawable.destroyDrawable)(&pdraw->driDrawable);
|
||||||
XF86DRIDestroyDrawable(dpy, sc->scr, drawable);
|
XF86DRIDestroyDrawable(dpy, sc->scr, drawable);
|
||||||
Xfree(pdraw);
|
Xfree(pdraw);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1671,7 +1671,7 @@ static Bool BindContextWrapper( Display *dpy, GLXContext gc,
|
||||||
__DRIdrawable *pdraw = FetchDRIDrawable(dpy, draw, gc);
|
__DRIdrawable *pdraw = FetchDRIDrawable(dpy, draw, gc);
|
||||||
__DRIdrawable *pread = FetchDRIDrawable(dpy, read, gc);
|
__DRIdrawable *pread = FetchDRIDrawable(dpy, read, gc);
|
||||||
|
|
||||||
return (*gc->driContext.bindContext)(pdraw, pread, &gc->driContext);
|
return (*gc->driContext.bindContext)(&gc->driContext, pdraw, pread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1789,7 +1789,7 @@ USED static Bool MakeContextCurrent(Display *dpy, GLXDrawable draw,
|
||||||
if (oldGC->isDirect) {
|
if (oldGC->isDirect) {
|
||||||
if (oldGC->driContext.private) {
|
if (oldGC->driContext.private) {
|
||||||
(*oldGC->driContext.destroyContext)
|
(*oldGC->driContext.destroyContext)
|
||||||
(oldGC->driContext.private);
|
(&oldGC->driContext);
|
||||||
XF86DRIDestroyContext(oldGC->createDpy,
|
XF86DRIDestroyContext(oldGC->createDpy,
|
||||||
oldGC->psc->scr,
|
oldGC->psc->scr,
|
||||||
gc->hwContextID);
|
gc->hwContextID);
|
||||||
|
|
|
@ -53,7 +53,7 @@ static const int empty_attribute_list[1] = { None };
|
||||||
static int api_ver = 0;
|
static int api_ver = 0;
|
||||||
|
|
||||||
/* forward declarations */
|
/* forward declarations */
|
||||||
static int driQueryFrameTracking( void *priv,
|
static int driQueryFrameTracking( __DRIdrawable *drawable,
|
||||||
int64_t *sbc, int64_t *missedFrames,
|
int64_t *sbc, int64_t *missedFrames,
|
||||||
float *lastMissedUsage, float *usage );
|
float *lastMissedUsage, float *usage );
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ static void *driCreateNewDrawable(__DRIscreen *screen,
|
||||||
drm_drawable_t hwDrawable,
|
drm_drawable_t hwDrawable,
|
||||||
int renderType, const int *attrs);
|
int renderType, const int *attrs);
|
||||||
|
|
||||||
static void driDestroyDrawable(void *drawablePrivate);
|
static void driDestroyDrawable(__DRIdrawable *drawable);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -169,9 +169,9 @@ static GLboolean driUnbindContext(__DRIcontext *ctx)
|
||||||
* for \c glXMakeCurrentReadSGI or GLX 1.3's \c glXMakeContextCurrent
|
* for \c glXMakeCurrentReadSGI or GLX 1.3's \c glXMakeContextCurrent
|
||||||
* function.
|
* function.
|
||||||
*/
|
*/
|
||||||
static GLboolean DoBindContext(__DRIdrawable *pdraw,
|
static GLboolean DoBindContext(__DRIcontext *ctx,
|
||||||
__DRIdrawable *pread,
|
__DRIdrawable *pdraw,
|
||||||
__DRIcontext *ctx)
|
__DRIdrawable *pread)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *pdp;
|
__DRIdrawablePrivate *pdp;
|
||||||
__DRIdrawablePrivate *prp;
|
__DRIdrawablePrivate *prp;
|
||||||
|
@ -218,9 +218,9 @@ static GLboolean DoBindContext(__DRIdrawable *pdraw,
|
||||||
* for \c glXMakeCurrentReadSGI or GLX 1.3's \c glXMakeContextCurrent
|
* for \c glXMakeCurrentReadSGI or GLX 1.3's \c glXMakeContextCurrent
|
||||||
* function.
|
* function.
|
||||||
*/
|
*/
|
||||||
static GLboolean driBindContext(__DRIdrawable *pdraw,
|
static GLboolean driBindContext(__DRIcontext * ctx,
|
||||||
__DRIdrawable *pread,
|
__DRIdrawable *pdraw,
|
||||||
__DRIcontext * ctx)
|
__DRIdrawable *pread)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
** Assume error checking is done properly in glXMakeCurrent before
|
** Assume error checking is done properly in glXMakeCurrent before
|
||||||
|
@ -230,7 +230,7 @@ static GLboolean driBindContext(__DRIdrawable *pdraw,
|
||||||
if (ctx == NULL || pdraw == None || pread == None)
|
if (ctx == NULL || pdraw == None || pread == None)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
return DoBindContext( pdraw, pread, ctx );
|
return DoBindContext( ctx, pdraw, pread );
|
||||||
}
|
}
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
|
@ -328,9 +328,9 @@ __driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp)
|
||||||
*
|
*
|
||||||
* Is called directly from glXSwapBuffers().
|
* Is called directly from glXSwapBuffers().
|
||||||
*/
|
*/
|
||||||
static void driSwapBuffers(void *drawablePrivate)
|
static void driSwapBuffers(__DRIdrawable *drawable)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePrivate;
|
__DRIdrawablePrivate *dPriv = drawable->private;
|
||||||
drm_clip_rect_t rect;
|
drm_clip_rect_t rect;
|
||||||
|
|
||||||
dPriv->swapBuffers(dPriv);
|
dPriv->swapBuffers(dPriv);
|
||||||
|
@ -356,9 +356,9 @@ static void driSwapBuffers(void *drawablePrivate)
|
||||||
/**
|
/**
|
||||||
* Called directly from a number of higher-level GLX functions.
|
* Called directly from a number of higher-level GLX functions.
|
||||||
*/
|
*/
|
||||||
static int driGetMSC( void *screenPrivate, int64_t *msc )
|
static int driGetMSC( __DRIscreen *screen, int64_t *msc )
|
||||||
{
|
{
|
||||||
__DRIscreenPrivate *sPriv = (__DRIscreenPrivate *) screenPrivate;
|
__DRIscreenPrivate *sPriv = screen->private;
|
||||||
|
|
||||||
return sPriv->DriverAPI.GetMSC( sPriv, msc );
|
return sPriv->DriverAPI.GetMSC( sPriv, msc );
|
||||||
}
|
}
|
||||||
|
@ -366,9 +366,9 @@ static int driGetMSC( void *screenPrivate, int64_t *msc )
|
||||||
/**
|
/**
|
||||||
* Called directly from a number of higher-level GLX functions.
|
* Called directly from a number of higher-level GLX functions.
|
||||||
*/
|
*/
|
||||||
static int driGetSBC( void *drawablePrivate, int64_t *sbc )
|
static int driGetSBC(__DRIdrawable *drawable, int64_t *sbc)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePrivate;
|
__DRIdrawablePrivate *dPriv = drawable->private;
|
||||||
__DRIswapInfo sInfo;
|
__DRIswapInfo sInfo;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
|
@ -379,20 +379,20 @@ static int driGetSBC( void *drawablePrivate, int64_t *sbc )
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int driWaitForSBC( void *drawablePriv, int64_t target_sbc,
|
static int driWaitForSBC(__DRIdrawable *drawable, int64_t target_sbc,
|
||||||
int64_t * msc, int64_t * sbc )
|
int64_t * msc, int64_t * sbc)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePriv;
|
__DRIdrawablePrivate *dPriv = drawable->private;
|
||||||
|
|
||||||
return dPriv->driScreenPriv->DriverAPI.WaitForSBC( dPriv, target_sbc,
|
return dPriv->driScreenPriv->DriverAPI.WaitForSBC( dPriv, target_sbc,
|
||||||
msc, sbc );
|
msc, sbc );
|
||||||
}
|
}
|
||||||
|
|
||||||
static int driWaitForMSC( void *drawablePriv, int64_t target_msc,
|
static int driWaitForMSC(__DRIdrawable *drawable, int64_t target_msc,
|
||||||
int64_t divisor, int64_t remainder,
|
int64_t divisor, int64_t remainder,
|
||||||
int64_t * msc, int64_t * sbc )
|
int64_t * msc, int64_t * sbc)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePriv;
|
__DRIdrawablePrivate *dPriv = drawable->private;
|
||||||
__DRIswapInfo sInfo;
|
__DRIswapInfo sInfo;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
|
@ -414,20 +414,20 @@ static int driWaitForMSC( void *drawablePriv, int64_t target_msc,
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int64_t driSwapBuffersMSC( void *drawablePriv, int64_t target_msc,
|
static int64_t driSwapBuffersMSC(__DRIdrawable *drawable, int64_t target_msc,
|
||||||
int64_t divisor, int64_t remainder )
|
int64_t divisor, int64_t remainder)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePriv;
|
__DRIdrawablePrivate *dPriv = drawable->private;
|
||||||
|
|
||||||
return dPriv->driScreenPriv->DriverAPI.SwapBuffersMSC( dPriv, target_msc,
|
return dPriv->driScreenPriv->DriverAPI.SwapBuffersMSC( dPriv, target_msc,
|
||||||
divisor,
|
divisor,
|
||||||
remainder );
|
remainder );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void driCopySubBuffer( void *drawablePrivate,
|
static void driCopySubBuffer(__DRIdrawable *drawable,
|
||||||
int x, int y, int w, int h)
|
int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePrivate;
|
__DRIdrawablePrivate *dPriv = drawable->private;
|
||||||
dPriv->driScreenPriv->DriverAPI.CopySubBuffer(dPriv, x, y, w, h);
|
dPriv->driScreenPriv->DriverAPI.CopySubBuffer(dPriv, x, y, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,9 +508,9 @@ static void *driCreateNewDrawable(__DRIscreen *screen,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
driDestroyDrawable(void *drawablePrivate)
|
driDestroyDrawable(__DRIdrawable *drawable)
|
||||||
{
|
{
|
||||||
__DRIdrawablePrivate *pdp = (__DRIdrawablePrivate *) drawablePrivate;
|
__DRIdrawablePrivate *pdp = drawable->private;
|
||||||
__DRIscreenPrivate *psp;
|
__DRIscreenPrivate *psp;
|
||||||
|
|
||||||
if (pdp) {
|
if (pdp) {
|
||||||
|
@ -546,9 +546,9 @@ driDestroyDrawable(void *drawablePrivate)
|
||||||
* drmDestroyContext(), and finally frees \p contextPrivate.
|
* drmDestroyContext(), and finally frees \p contextPrivate.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
driDestroyContext(void *contextPrivate)
|
driDestroyContext(__DRIcontext *context)
|
||||||
{
|
{
|
||||||
__DRIcontextPrivate *pcp = (__DRIcontextPrivate *) contextPrivate;
|
__DRIcontextPrivate *pcp = context->private;
|
||||||
|
|
||||||
if (pcp) {
|
if (pcp) {
|
||||||
(*pcp->driScreenPriv->DriverAPI.DestroyContext)(pcp);
|
(*pcp->driScreenPriv->DriverAPI.DestroyContext)(pcp);
|
||||||
|
@ -641,9 +641,9 @@ driCreateNewContext(__DRIscreen *screen, const __GLcontextModes *modes,
|
||||||
* This function calls __DriverAPIRec::DestroyScreen on \p screenPrivate, calls
|
* This function calls __DriverAPIRec::DestroyScreen on \p screenPrivate, calls
|
||||||
* drmClose(), and finally frees \p screenPrivate.
|
* drmClose(), and finally frees \p screenPrivate.
|
||||||
*/
|
*/
|
||||||
static void driDestroyScreen(void *screenPrivate)
|
static void driDestroyScreen(__DRIscreen *screen)
|
||||||
{
|
{
|
||||||
__DRIscreenPrivate *psp = (__DRIscreenPrivate *) screenPrivate;
|
__DRIscreenPrivate *psp = screen->private;
|
||||||
|
|
||||||
if (psp) {
|
if (psp) {
|
||||||
/* No interaction with the X-server is possible at this point. This
|
/* No interaction with the X-server is possible at this point. This
|
||||||
|
@ -808,14 +808,14 @@ int driCompareGLXAPIVersion( GLint required_version )
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
driQueryFrameTracking( void * priv,
|
driQueryFrameTracking(__DRIdrawable *drawable,
|
||||||
int64_t * sbc, int64_t * missedFrames,
|
int64_t * sbc, int64_t * missedFrames,
|
||||||
float * lastMissedUsage, float * usage )
|
float * lastMissedUsage, float * usage)
|
||||||
{
|
{
|
||||||
__DRIswapInfo sInfo;
|
__DRIswapInfo sInfo;
|
||||||
int status;
|
int status;
|
||||||
int64_t ust;
|
int64_t ust;
|
||||||
__DRIdrawablePrivate * dpriv = (__DRIdrawablePrivate *) priv;
|
__DRIdrawablePrivate * dpriv = drawable->private;
|
||||||
|
|
||||||
|
|
||||||
status = dpriv->driScreenPriv->DriverAPI.GetSwapInfo( dpriv, & sInfo );
|
status = dpriv->driScreenPriv->DriverAPI.GetSwapInfo( dpriv, & sInfo );
|
||||||
|
|
Loading…
Reference in New Issue