GLX/DRI2: expose swap control extensions if DDX support is present
Export DDX swap control status from the DRI2 module and check for it in GLX when initializing extensions. Reviewed-by: Mario Kleiner <mario.kleiner@tuebingen.mpg.de> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
5933b0abc6
commit
165a4a9c7d
|
@ -616,6 +616,7 @@ glxDRILeaveVT (int index, int flags)
|
||||||
static void
|
static void
|
||||||
initializeExtensions(__GLXDRIscreen *screen)
|
initializeExtensions(__GLXDRIscreen *screen)
|
||||||
{
|
{
|
||||||
|
ScreenPtr pScreen = screen->base.pScreen;
|
||||||
const __DRIextension **extensions;
|
const __DRIextension **extensions;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -625,10 +626,17 @@ initializeExtensions(__GLXDRIscreen *screen)
|
||||||
"GLX_MESA_copy_sub_buffer");
|
"GLX_MESA_copy_sub_buffer");
|
||||||
LogMessage(X_INFO, "AIGLX: enabled GLX_MESA_copy_sub_buffer\n");
|
LogMessage(X_INFO, "AIGLX: enabled GLX_MESA_copy_sub_buffer\n");
|
||||||
|
|
||||||
/* FIXME: only if DDX supports it */
|
|
||||||
__glXEnableExtension(screen->glx_enable_bits, "GLX_INTEL_swap_event");
|
__glXEnableExtension(screen->glx_enable_bits, "GLX_INTEL_swap_event");
|
||||||
LogMessage(X_INFO, "AIGLX: enabled GLX_INTEL_swap_event\n");
|
LogMessage(X_INFO, "AIGLX: enabled GLX_INTEL_swap_event\n");
|
||||||
|
|
||||||
|
if (DRI2HasSwapControl(pScreen)) {
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits,
|
||||||
|
"GLX_SGI_swap_control");
|
||||||
|
__glXEnableExtension(screen->glx_enable_bits,
|
||||||
|
"GLX_MESA_swap_control");
|
||||||
|
LogMessage(X_INFO, "AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control\n");
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; extensions[i]; i++) {
|
for (i = 0; extensions[i]; i++) {
|
||||||
#ifdef __DRI_READ_DRAWABLE
|
#ifdef __DRI_READ_DRAWABLE
|
||||||
if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
|
if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
|
||||||
|
@ -639,19 +647,6 @@ initializeExtensions(__GLXDRIscreen *screen)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __DRI_SWAP_CONTROL
|
|
||||||
if (strcmp(extensions[i]->name, __DRI_SWAP_CONTROL) == 0) {
|
|
||||||
screen->swapControl =
|
|
||||||
(const __DRIswapControlExtension *) extensions[i];
|
|
||||||
__glXEnableExtension(screen->glx_enable_bits,
|
|
||||||
"GLX_SGI_swap_control");
|
|
||||||
__glXEnableExtension(screen->glx_enable_bits,
|
|
||||||
"GLX_MESA_swap_control");
|
|
||||||
|
|
||||||
LogMessage(X_INFO, "AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __DRI_TEX_BUFFER
|
#ifdef __DRI_TEX_BUFFER
|
||||||
if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) {
|
if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) {
|
||||||
screen->texBuffer =
|
screen->texBuffer =
|
||||||
|
|
|
@ -830,6 +830,14 @@ DRI2DestroyDrawable(DrawablePtr pDraw)
|
||||||
DRI2FreeDrawable(pDraw);
|
DRI2FreeDrawable(pDraw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bool
|
||||||
|
DRI2HasSwapControl(ScreenPtr pScreen)
|
||||||
|
{
|
||||||
|
DRI2ScreenPtr ds = DRI2GetScreen(pScreen);
|
||||||
|
|
||||||
|
return (ds->ScheduleSwap && ds->GetMSC);
|
||||||
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
DRI2Connect(ScreenPtr pScreen, unsigned int driverType, int *fd,
|
DRI2Connect(ScreenPtr pScreen, unsigned int driverType, int *fd,
|
||||||
const char **driverName, const char **deviceName)
|
const char **driverName, const char **deviceName)
|
||||||
|
|
|
@ -188,6 +188,8 @@ extern _X_EXPORT Bool DRI2ScreenInit(ScreenPtr pScreen,
|
||||||
|
|
||||||
extern _X_EXPORT void DRI2CloseScreen(ScreenPtr pScreen);
|
extern _X_EXPORT void DRI2CloseScreen(ScreenPtr pScreen);
|
||||||
|
|
||||||
|
extern _X_EXPORT Bool DRI2HasSwapControl(ScreenPtr pScreen);
|
||||||
|
|
||||||
extern _X_EXPORT Bool DRI2Connect(ScreenPtr pScreen,
|
extern _X_EXPORT Bool DRI2Connect(ScreenPtr pScreen,
|
||||||
unsigned int driverType,
|
unsigned int driverType,
|
||||||
int *fd,
|
int *fd,
|
||||||
|
|
Loading…
Reference in New Issue