mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
glx/dri: Add a driconf option to disable GLX_SGI_video_sync
Drivers on virtual hardware don't want to expose this extension to GLX compositors, similarly to GLX_OML_sync_control, since that significantly increases latency. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Sinclair Yeh <syeh@vmware.com> Reviewed-by: Deepak Rawat <drawat@vmware.com>
This commit is contained in:
parent
0c90264da4
commit
f4070956d4
3 changed files with 16 additions and 4 deletions
|
|
@ -1102,7 +1102,6 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv,
|
|||
|
||||
extensions = psc->core->getExtensions(psc->driScreen);
|
||||
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_video_sync");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_swap_control");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_swap_control");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
|
||||
|
|
@ -1207,6 +1206,7 @@ dri2CreateScreen(int screen, struct glx_display * priv)
|
|||
char *driverName = NULL, *loader_driverName, *deviceName, *tmp;
|
||||
drm_magic_t magic;
|
||||
int i;
|
||||
unsigned char disable;
|
||||
|
||||
psc = calloc(1, sizeof *psc);
|
||||
if (psc == NULL)
|
||||
|
|
@ -1325,8 +1325,6 @@ dri2CreateScreen(int screen, struct glx_display * priv)
|
|||
psp->getBufferAge = NULL;
|
||||
|
||||
if (pdp->driMinor >= 2) {
|
||||
unsigned char disable;
|
||||
|
||||
psp->getDrawableMSC = dri2DrawableGetMSC;
|
||||
psp->waitForMSC = dri2WaitForMSC;
|
||||
psp->waitForSBC = dri2WaitForSBC;
|
||||
|
|
@ -1338,6 +1336,11 @@ dri2CreateScreen(int screen, struct glx_display * priv)
|
|||
__glXEnableDirectExtension(&psc->base, "GLX_OML_sync_control");
|
||||
}
|
||||
|
||||
if (psc->config->configQueryb(psc->driScreen,
|
||||
"glx_disable_sgi_video_sync",
|
||||
&disable) || !disable)
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_video_sync");
|
||||
|
||||
/* DRI2 supports SubBuffer through DRI2CopyRegion, so it's always
|
||||
* available.*/
|
||||
psp->copySubBuffer = dri2CopySubBuffer;
|
||||
|
|
|
|||
|
|
@ -721,7 +721,6 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv,
|
|||
|
||||
extensions = psc->core->getExtensions(psc->driScreen);
|
||||
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_video_sync");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_swap_control");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_swap_control");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
|
||||
|
|
@ -956,6 +955,11 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
|||
&disable) || !disable)
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_OML_sync_control");
|
||||
|
||||
if (psc->config->configQueryb(psc->driScreen,
|
||||
"glx_disable_sgi_video_sync",
|
||||
&disable) || !disable)
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_video_sync");
|
||||
|
||||
psp->copySubBuffer = dri3_copy_sub_buffer;
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_copy_sub_buffer");
|
||||
|
||||
|
|
|
|||
|
|
@ -346,6 +346,11 @@ DRI_CONF_OPT_BEGIN_B(glx_disable_oml_sync_control, def) \
|
|||
DRI_CONF_DESC(en, gettext("Disable the GLX_OML_sync_control extension")) \
|
||||
DRI_CONF_OPT_END
|
||||
|
||||
#define DRI_CONF_DISABLE_SGI_VIDEO_SYNC(def) \
|
||||
DRI_CONF_OPT_BEGIN_B(glx_disable_sgi_video_sync, def) \
|
||||
DRI_CONF_DESC(en, gettext("Disable the GLX_SGI_video_sync extension")) \
|
||||
DRI_CONF_OPT_END
|
||||
|
||||
|
||||
/**
|
||||
* \brief Software-fallback options. To allow using features (like
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue