glx: Move DRI CopySubBuffer extension to DRI1 code

We do this in the X server for DRI2.
This commit is contained in:
Kristian Høgsberg 2010-07-19 22:40:22 -04:00
parent bab13969d8
commit a7292f2920
6 changed files with 14 additions and 39 deletions

View file

@ -675,6 +675,7 @@ dri2BindExtensions(struct dri2_screen *psc, const __DRIextension **extensions)
__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");
/* FIXME: if DRI2 version supports it... */
__glXEnableDirectExtension(&psc->base, "INTEL_swap_event");
@ -779,7 +780,6 @@ dri2CreateScreen(int screen, __GLXdisplayPrivate * priv)
}
extensions = psc->core->getExtensions(psc->driScreen);
driBindCommonExtensions(&psc->base, extensions);
dri2BindExtensions(psc, extensions);
psc->base.configs =

View file

@ -346,29 +346,4 @@ driDestroyConfigs(const __DRIconfig **configs)
free(configs);
}
/* Bind extensions common to DRI1 and DRI2 */
_X_HIDDEN void
driBindCommonExtensions(__GLXscreenConfigs *psc,
const __DRIextension **extensions)
{
int i;
for (i = 0; extensions[i]; i++) {
#ifdef __DRI_COPY_SUB_BUFFER
if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
psc->driCopySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
__glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer");
}
#endif
#ifdef __DRI_READ_DRAWABLE
if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
__glXEnableDirectExtension(psc, "GLX_SGI_make_current_read");
}
#endif
/* Ignore unknown extensions */
}
}
#endif /* GLX_DIRECT_RENDERING */

View file

@ -58,7 +58,4 @@ extern void ErrorMessageF(const char *f, ...);
extern void *driOpenDriver(const char *driverName);
extern void driBindCommonExtensions(__GLXscreenConfigs * psc,
const __DRIextension **extensions);
#endif /* _DRI_COMMON_H */

View file

@ -70,6 +70,7 @@ struct dri_screen
const __DRIswapControlExtension *swapControl;
const __DRImediaStreamCounterExtension *msc;
const __DRIconfig **driver_configs;
const __DRIcopySubBufferExtension *driCopySubBuffer;
void *driver;
int fd;
@ -652,9 +653,10 @@ driCopySubBuffer(__GLXDRIdrawable * pdraw,
int x, int y, int width, int height)
{
struct dri_drawable *pdp = (struct dri_drawable *) pdraw;
struct dri_screen *psc = (struct dri_screen *) pdp->base.psc;
(*pdp->base.psc->driCopySubBuffer->copySubBuffer) (pdp->driDrawable,
x, y, width, height);
(*psc->driCopySubBuffer->copySubBuffer) (pdp->driDrawable,
x, y, width, height);
}
static void
@ -788,6 +790,14 @@ driBindExtensions(struct dri_screen *psc, const __DRIextension **extensions)
__glXEnableDirectExtension(&psc->base, "GLX_SGI_video_sync");
}
if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
psc->driCopySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
__glXEnableDirectExtension(&psc->base, "GLX_MESA_copy_sub_buffer");
}
if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
__glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
}
/* Ignore unknown extensions */
}
}
@ -852,11 +862,10 @@ driCreateScreen(int screen, __GLXdisplayPrivate *priv)
extensions = psc->core->getExtensions(psc->driScreen);
driBindExtensions(psc, extensions);
driBindCommonExtensions(&psc->base, extensions);
psp = &psc->vtable;
psc->base.driScreen = psp;
if (psc->base.driCopySubBuffer)
if (psc->driCopySubBuffer)
psp->copySubBuffer = driCopySubBuffer;
psp->destroyScreen = driDestroyScreen;

View file

@ -452,7 +452,6 @@ driCreateScreen(int screen, __GLXdisplayPrivate *priv)
}
extensions = psc->core->getExtensions(psc->driScreen);
driBindCommonExtensions(&psc->base, extensions);
psc->base.configs =
driConvertConfigs(psc->core, psc->base.configs, driver_configs);

View file

@ -533,11 +533,6 @@ struct __GLXscreenConfigsRec
int scr;
__GLXDRIscreen *driScreen;
#ifdef __DRI_COPY_SUB_BUFFER
const __DRIcopySubBufferExtension *driCopySubBuffer;
#endif
#endif
/**