mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
glx: Move DRI CopySubBuffer extension to DRI1 code
We do this in the X server for DRI2.
This commit is contained in:
parent
bab13969d8
commit
a7292f2920
6 changed files with 14 additions and 39 deletions
|
|
@ -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 =
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -533,11 +533,6 @@ struct __GLXscreenConfigsRec
|
|||
int scr;
|
||||
|
||||
__GLXDRIscreen *driScreen;
|
||||
|
||||
#ifdef __DRI_COPY_SUB_BUFFER
|
||||
const __DRIcopySubBufferExtension *driCopySubBuffer;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue