Move GLX_MESA_swap_frame_usage DRI entry points to the new mechanism.
This commit is contained in:

committed by
Kristian Høgsberg

parent
78a6aa57a0
commit
a7a0a2beb5
@@ -61,6 +61,7 @@ typedef struct __DRIextensionRec __DRIextension;
|
|||||||
typedef struct __DRIcopySubBufferExtensionRec __DRIcopySubBufferExtension;
|
typedef struct __DRIcopySubBufferExtensionRec __DRIcopySubBufferExtension;
|
||||||
typedef struct __DRIswapControlExtensionRec __DRIswapControlExtension;
|
typedef struct __DRIswapControlExtensionRec __DRIswapControlExtension;
|
||||||
typedef struct __DRIallocateExtensionRec __DRIallocateExtension;
|
typedef struct __DRIallocateExtensionRec __DRIallocateExtension;
|
||||||
|
typedef struct __DRIframeTrackingExtensionRec __DRIframeTrackingExtension;
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
@@ -112,6 +113,30 @@ struct __DRIallocateExtensionRec {
|
|||||||
GLuint (*memoryOffset)(__DRIscreen *screen, const GLvoid *pointer);
|
GLuint (*memoryOffset)(__DRIscreen *screen, const GLvoid *pointer);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used by drivers that implement the GLX_MESA_swap_frame_usage extension.
|
||||||
|
*/
|
||||||
|
#define __DRI_FRAME_TRACKING "DRI_FrameTracking"
|
||||||
|
struct __DRIframeTrackingExtensionRec {
|
||||||
|
__DRIextension base;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or disable frame usage tracking.
|
||||||
|
*
|
||||||
|
* \since Internal API version 20030317.
|
||||||
|
*/
|
||||||
|
int (*frameTracking)(__DRIdrawable *drawable, GLboolean enable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve frame usage information.
|
||||||
|
*
|
||||||
|
* \since Internal API version 20030317.
|
||||||
|
*/
|
||||||
|
int (*queryFrameTracking)(__DRIdrawable *drawable,
|
||||||
|
int64_t * sbc, int64_t * missedFrames,
|
||||||
|
float * lastMissedUsage, float * usage);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \name Functions provided by the driver loader.
|
* \name Functions provided by the driver loader.
|
||||||
*/
|
*/
|
||||||
@@ -480,22 +505,6 @@ struct __DRIdrawableRec {
|
|||||||
int64_t (*swapBuffersMSC)(__DRIdrawable *drawable,
|
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);
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable or disable frame usage tracking.
|
|
||||||
*
|
|
||||||
* \since Internal API version 20030317.
|
|
||||||
*/
|
|
||||||
int (*frameTracking)(__DRIdrawable *drawable, GLboolean enable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve frame usage information.
|
|
||||||
*
|
|
||||||
* \since Internal API version 20030317.
|
|
||||||
*/
|
|
||||||
int (*queryFrameTracking)(__DRIdrawable *drawable,
|
|
||||||
int64_t * sbc, int64_t * missedFrames,
|
|
||||||
float * lastMissedUsage, float * usage);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -489,6 +489,10 @@ struct __GLXscreenConfigsRec {
|
|||||||
__DRIallocateExtension *allocate;
|
__DRIallocateExtension *allocate;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __DRI_FRAME_TRACKING
|
||||||
|
__DRIframeTrackingExtension *frameTracking;
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1835,15 +1835,13 @@ static int __glXGetSwapIntervalMESA(void)
|
|||||||
static GLint __glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable)
|
static GLint __glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable)
|
||||||
{
|
{
|
||||||
int status = GLX_BAD_CONTEXT;
|
int status = GLX_BAD_CONTEXT;
|
||||||
#ifdef GLX_DIRECT_RENDERING
|
#ifdef __DRI_FRAME_TRACKING
|
||||||
int screen;
|
int screen;
|
||||||
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
||||||
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
||||||
|
|
||||||
if ( (pdraw != NULL) && (pdraw->frameTracking != NULL)
|
if (pdraw != NULL && psc->frameTracking != NULL)
|
||||||
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
status = psc->frameTracking->frameTracking(pdraw, GL_TRUE);
|
||||||
status = pdraw->frameTracking(pdraw, GL_TRUE);
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
(void) drawable;
|
(void) drawable;
|
||||||
@@ -1855,15 +1853,13 @@ static GLint __glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable)
|
|||||||
static GLint __glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable)
|
static GLint __glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable)
|
||||||
{
|
{
|
||||||
int status = GLX_BAD_CONTEXT;
|
int status = GLX_BAD_CONTEXT;
|
||||||
#ifdef GLX_DIRECT_RENDERING
|
#ifdef __DRI_FRAME_TRACKING
|
||||||
int screen;
|
int screen;
|
||||||
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
||||||
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
||||||
|
|
||||||
if ( (pdraw != NULL) && (pdraw->frameTracking != NULL)
|
if (pdraw != NULL && psc->frameTracking != NULL)
|
||||||
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
status = psc->frameTracking->frameTracking(pdraw, GL_FALSE);
|
||||||
status = pdraw->frameTracking(pdraw, GL_FALSE);
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
(void) drawable;
|
(void) drawable;
|
||||||
@@ -1876,18 +1872,19 @@ static GLint __glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable,
|
|||||||
GLfloat *usage)
|
GLfloat *usage)
|
||||||
{
|
{
|
||||||
int status = GLX_BAD_CONTEXT;
|
int status = GLX_BAD_CONTEXT;
|
||||||
#ifdef GLX_DIRECT_RENDERING
|
#ifdef __DRI_FRAME_TRACKING
|
||||||
int screen;
|
int screen;
|
||||||
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
||||||
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
||||||
|
|
||||||
if ( (pdraw != NULL ) && (pdraw->queryFrameTracking != NULL)
|
if (pdraw != NULL && psc->frameTracking != NULL) {
|
||||||
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
int64_t sbc, missedFrames;
|
||||||
int64_t sbc, missedFrames;
|
float lastMissedUsage;
|
||||||
float lastMissedUsage;
|
|
||||||
|
|
||||||
status = pdraw->queryFrameTracking(pdraw, &sbc, &missedFrames,
|
status = psc->frameTracking->queryFrameTracking(pdraw, &sbc,
|
||||||
&lastMissedUsage, usage);
|
&missedFrames,
|
||||||
|
&lastMissedUsage,
|
||||||
|
usage);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
@@ -1903,17 +1900,16 @@ static GLint __glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable,
|
|||||||
GLfloat *lastMissedUsage)
|
GLfloat *lastMissedUsage)
|
||||||
{
|
{
|
||||||
int status = GLX_BAD_CONTEXT;
|
int status = GLX_BAD_CONTEXT;
|
||||||
#ifdef GLX_DIRECT_RENDERING
|
#ifdef __DRI_FRAME_TRACKING
|
||||||
int screen;
|
int screen;
|
||||||
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
__DRIdrawable * const pdraw = GetDRIDrawable(dpy, drawable, & screen);
|
||||||
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
|
||||||
|
|
||||||
if ( (pdraw != NULL ) && (pdraw->queryFrameTracking != NULL)
|
if (pdraw != NULL && psc->frameTracking != NULL) {
|
||||||
&& __glXExtensionBitIsEnabled( psc, MESA_swap_frame_usage_bit ) ) {
|
|
||||||
float usage;
|
float usage;
|
||||||
|
|
||||||
status = pdraw->queryFrameTracking(pdraw, sbc, missedFrames,
|
status = psc->frameTracking->queryFrameTracking(pdraw, sbc, missedFrames,
|
||||||
lastMissedUsage, &usage);
|
lastMissedUsage, &usage);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) dpy;
|
(void) dpy;
|
||||||
|
@@ -1024,7 +1024,6 @@ static void queryExtensions(__GLXscreenConfigs *psc)
|
|||||||
psc->copySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
|
psc->copySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
|
||||||
__glXScrEnableExtension(&psc->driScreen,
|
__glXScrEnableExtension(&psc->driScreen,
|
||||||
"GLX_MESA_copy_sub_buffer");
|
"GLX_MESA_copy_sub_buffer");
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1035,7 +1034,6 @@ static void queryExtensions(__GLXscreenConfigs *psc)
|
|||||||
"GLX_SGI_swap_control");
|
"GLX_SGI_swap_control");
|
||||||
__glXScrEnableExtension(&psc->driScreen,
|
__glXScrEnableExtension(&psc->driScreen,
|
||||||
"GLX_MESA_swap_control");
|
"GLX_MESA_swap_control");
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1046,7 +1044,14 @@ static void queryExtensions(__GLXscreenConfigs *psc)
|
|||||||
"GLX_SGI_swap_control");
|
"GLX_SGI_swap_control");
|
||||||
__glXScrEnableExtension(&psc->driScreen,
|
__glXScrEnableExtension(&psc->driScreen,
|
||||||
"GLX_MESA_swap_control");
|
"GLX_MESA_swap_control");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __DRI_FRAME_TRACKING
|
||||||
|
if (strcmp(extensions[i]->name, __DRI_FRAME_TRACKING) == 0) {
|
||||||
|
psc->frameTracking = (__DRIframeTrackingExtension *) extensions[i];
|
||||||
|
__glXScrEnableExtension(&psc->driScreen,
|
||||||
|
"GLX_MESA_swap_frame_usage");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -52,11 +52,6 @@ static const int empty_attribute_list[1] = { None };
|
|||||||
*/
|
*/
|
||||||
static int api_ver = 0;
|
static int api_ver = 0;
|
||||||
|
|
||||||
/* forward declarations */
|
|
||||||
static int driQueryFrameTracking( __DRIdrawable *drawable,
|
|
||||||
int64_t *sbc, int64_t *missedFrames,
|
|
||||||
float *lastMissedUsage, float *usage );
|
|
||||||
|
|
||||||
static void *driCreateNewDrawable(__DRIscreen *screen,
|
static void *driCreateNewDrawable(__DRIscreen *screen,
|
||||||
const __GLcontextModes *modes,
|
const __GLcontextModes *modes,
|
||||||
__DRIdrawable *pdraw,
|
__DRIdrawable *pdraw,
|
||||||
@@ -515,8 +510,6 @@ static void *driCreateNewDrawable(__DRIscreen *screen,
|
|||||||
pdraw->waitForSBC = driWaitForSBC;
|
pdraw->waitForSBC = driWaitForSBC;
|
||||||
pdraw->waitForMSC = driWaitForMSC;
|
pdraw->waitForMSC = driWaitForMSC;
|
||||||
pdraw->swapBuffersMSC = driSwapBuffersMSC;
|
pdraw->swapBuffersMSC = driSwapBuffersMSC;
|
||||||
pdraw->frameTracking = NULL;
|
|
||||||
pdraw->queryFrameTracking = driQueryFrameTracking;
|
|
||||||
|
|
||||||
/* This special default value is replaced with the configured
|
/* This special default value is replaced with the configured
|
||||||
* default value when the drawable is first bound to a direct
|
* default value when the drawable is first bound to a direct
|
||||||
@@ -825,6 +818,12 @@ int driCompareGLXAPIVersion( GLint required_version )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
driFrameTracking(__DRIdrawable *drawable, GLboolean enable)
|
||||||
|
{
|
||||||
|
return GLX_BAD_CONTEXT;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
driQueryFrameTracking(__DRIdrawable *drawable,
|
driQueryFrameTracking(__DRIdrawable *drawable,
|
||||||
int64_t * sbc, int64_t * missedFrames,
|
int64_t * sbc, int64_t * missedFrames,
|
||||||
@@ -849,6 +848,11 @@ driQueryFrameTracking(__DRIdrawable *drawable,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const __DRIframeTrackingExtension driFrameTrackingExtension = {
|
||||||
|
{ __DRI_FRAME_TRACKING },
|
||||||
|
driFrameTracking,
|
||||||
|
driQueryFrameTracking
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate amount of swap interval used between GLX buffer swaps.
|
* Calculate amount of swap interval used between GLX buffer swaps.
|
||||||
|
@@ -78,6 +78,7 @@ extern __GLcontextModes *__driDriverInitScreen(__DRIscreenPrivate *psp);
|
|||||||
*/
|
*/
|
||||||
extern const __DRIcopySubBufferExtension driCopySubBufferExtension;
|
extern const __DRIcopySubBufferExtension driCopySubBufferExtension;
|
||||||
extern const __DRIswapControlExtension driSwapControlExtension;
|
extern const __DRIswapControlExtension driSwapControlExtension;
|
||||||
|
extern const __DRIframeTrackingExtension driFrameTrackingExtension;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used by DRI_VALIDATE_DRAWABLE_INFO
|
* Used by DRI_VALIDATE_DRAWABLE_INFO
|
||||||
|
@@ -430,6 +430,7 @@ static const __DRIextension *intelExtensions[] = {
|
|||||||
&driCopySubBufferExtension.base,
|
&driCopySubBufferExtension.base,
|
||||||
&driSwapControlExtension.base,
|
&driSwapControlExtension.base,
|
||||||
&intelAllocateExtension.base,
|
&intelAllocateExtension.base,
|
||||||
|
&driFrameTrackingExtension.base,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -539,7 +540,6 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv)
|
|||||||
|
|
||||||
if (glx_enable_extension != NULL) {
|
if (glx_enable_extension != NULL) {
|
||||||
(*glx_enable_extension) (sPriv->psc, "GLX_SGI_video_sync");
|
(*glx_enable_extension) (sPriv->psc, "GLX_SGI_video_sync");
|
||||||
(*glx_enable_extension) (sPriv->psc, "GLX_MESA_swap_frame_usage");
|
|
||||||
(*glx_enable_extension) (sPriv->psc, "GLX_SGI_make_current_read");
|
(*glx_enable_extension) (sPriv->psc, "GLX_SGI_make_current_read");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -267,6 +267,7 @@ intelUpdateScreenFromSAREA(intelScreenPrivate *intelScreen,
|
|||||||
static const __DRIextension *intelExtensions[] = {
|
static const __DRIextension *intelExtensions[] = {
|
||||||
&driCopySubBufferExtension.base,
|
&driCopySubBufferExtension.base,
|
||||||
&driSwapControlExtension.base,
|
&driSwapControlExtension.base,
|
||||||
|
&driFrameTrackingExtension.base,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -359,7 +360,6 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv)
|
|||||||
|
|
||||||
if (glx_enable_extension != NULL) {
|
if (glx_enable_extension != NULL) {
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_MESA_swap_frame_usage" );
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -320,14 +320,13 @@ mach64CreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
mach64Screen->driScreen = sPriv;
|
mach64Screen->driScreen = sPriv;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
mach64Screen->extensions[i++] = &driFrameTrackingExtension.base;
|
||||||
if ( glx_enable_extension != NULL ) {
|
if ( glx_enable_extension != NULL ) {
|
||||||
if ( mach64Screen->irq != 0 ) {
|
if ( mach64Screen->irq != 0 ) {
|
||||||
mach64Screen->extensions[i++] = &driSwapControlExtension.base;
|
mach64Screen->extensions[i++] = &driSwapControlExtension.base;
|
||||||
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
||||||
}
|
}
|
||||||
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_MESA_swap_frame_usage" );
|
|
||||||
}
|
}
|
||||||
mach64Screen->extensions[i++] = NULL;
|
mach64Screen->extensions[i++] = NULL;
|
||||||
sPriv->extensions = mach64Screen->extensions;
|
sPriv->extensions = mach64Screen->extensions;
|
||||||
|
@@ -74,7 +74,7 @@ typedef struct {
|
|||||||
|
|
||||||
driOptionCache optionCache;
|
driOptionCache optionCache;
|
||||||
|
|
||||||
const __DRIextension *extensions[2];
|
const __DRIextension *extensions[3];
|
||||||
} mach64ScreenRec, *mach64ScreenPtr;
|
} mach64ScreenRec, *mach64ScreenPtr;
|
||||||
|
|
||||||
#endif /* __MACH64_SCREEN_H__ */
|
#endif /* __MACH64_SCREEN_H__ */
|
||||||
|
@@ -195,6 +195,7 @@ mgaFillInModes( unsigned pixel_bits, unsigned depth_bits,
|
|||||||
|
|
||||||
static const __DRIextension *mgaExtensions[] = {
|
static const __DRIextension *mgaExtensions[] = {
|
||||||
&driSwapControlExtension.base,
|
&driSwapControlExtension.base,
|
||||||
|
&driFrameTrackingExtension.base,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -242,7 +243,6 @@ mgaInitDriver(__DRIscreenPrivate *sPriv)
|
|||||||
sPriv->extensions = mgaExtensions;
|
sPriv->extensions = mgaExtensions;
|
||||||
|
|
||||||
if ( glx_enable_extension != NULL ) {
|
if ( glx_enable_extension != NULL ) {
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_MESA_swap_frame_usage" );
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
||||||
}
|
}
|
||||||
|
@@ -227,13 +227,12 @@ r128CreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
r128Screen->driScreen = sPriv;
|
r128Screen->driScreen = sPriv;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
r128Screen->extensions[i++] = &driFrameTrackingExtension.base;
|
||||||
if ( glx_enable_extension != NULL ) {
|
if ( glx_enable_extension != NULL ) {
|
||||||
if ( r128Screen->irq != 0 ) {
|
if ( r128Screen->irq != 0 ) {
|
||||||
r128Screen->extensions[i++] = &driSwapControlExtension.base;
|
r128Screen->extensions[i++] = &driSwapControlExtension.base;
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
||||||
}
|
}
|
||||||
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_MESA_swap_frame_usage" );
|
|
||||||
}
|
}
|
||||||
r128Screen->extensions[i++] = NULL;
|
r128Screen->extensions[i++] = NULL;
|
||||||
sPriv->extensions = r128Screen->extensions;
|
sPriv->extensions = r128Screen->extensions;
|
||||||
|
@@ -78,7 +78,7 @@ typedef struct {
|
|||||||
/* Configuration cache with default values for all contexts */
|
/* Configuration cache with default values for all contexts */
|
||||||
driOptionCache optionCache;
|
driOptionCache optionCache;
|
||||||
|
|
||||||
const __DRIextension *extensions[2];
|
const __DRIextension *extensions[3];
|
||||||
|
|
||||||
} r128ScreenRec, *r128ScreenPtr;
|
} r128ScreenRec, *r128ScreenPtr;
|
||||||
|
|
||||||
|
@@ -744,6 +744,7 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
screen->extensions[i++] = &driCopySubBufferExtension.base;
|
screen->extensions[i++] = &driCopySubBufferExtension.base;
|
||||||
|
screen->extensions[i++] = &driFrameTrackingExtension.base;
|
||||||
|
|
||||||
if ( glx_enable_extension != NULL ) {
|
if ( glx_enable_extension != NULL ) {
|
||||||
if ( screen->irq != 0 ) {
|
if ( screen->irq != 0 ) {
|
||||||
@@ -751,7 +752,6 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
|
||||||
}
|
}
|
||||||
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_MESA_swap_frame_usage" );
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -104,7 +104,7 @@ typedef struct {
|
|||||||
/* Configuration cache with default values for all contexts */
|
/* Configuration cache with default values for all contexts */
|
||||||
driOptionCache optionCache;
|
driOptionCache optionCache;
|
||||||
|
|
||||||
const __DRIextension *extensions[4];
|
const __DRIextension *extensions[5];
|
||||||
} radeonScreenRec, *radeonScreenPtr;
|
} radeonScreenRec, *radeonScreenPtr;
|
||||||
|
|
||||||
#define IS_R100_CLASS(screen) \
|
#define IS_R100_CLASS(screen) \
|
||||||
|
@@ -176,6 +176,7 @@ viaInitDriver(__DRIscreenPrivate *sPriv)
|
|||||||
viaScreen->sareaPrivOffset = gDRIPriv->sarea_priv_offset;
|
viaScreen->sareaPrivOffset = gDRIPriv->sarea_priv_offset;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
viaScreen->extensions[i++] = &driFrameTrackingExtension.base;
|
||||||
if ( glx_enable_extension != NULL ) {
|
if ( glx_enable_extension != NULL ) {
|
||||||
if ( viaScreen->irqEnabled ) {
|
if ( viaScreen->irqEnabled ) {
|
||||||
viaScreen->extensions[i++] = &driSwapControlExtension.base;
|
viaScreen->extensions[i++] = &driSwapControlExtension.base;
|
||||||
@@ -183,7 +184,6 @@ viaInitDriver(__DRIscreenPrivate *sPriv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
(*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
|
||||||
(*glx_enable_extension)( sPriv->psc, "GLX_MESA_swap_frame_usage" );
|
|
||||||
}
|
}
|
||||||
viaScreen->extensions[i++] = NULL;
|
viaScreen->extensions[i++] = NULL;
|
||||||
sPriv->extensions = viaScreen->extensions;
|
sPriv->extensions = viaScreen->extensions;
|
||||||
|
@@ -71,7 +71,7 @@ typedef struct {
|
|||||||
/* Configuration cache with default values for all contexts */
|
/* Configuration cache with default values for all contexts */
|
||||||
driOptionCache optionCache;
|
driOptionCache optionCache;
|
||||||
|
|
||||||
const __DRIextension *extensions[2];
|
const __DRIextension *extensions[3];
|
||||||
} viaScreenPrivate;
|
} viaScreenPrivate;
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user