intel/DRI2: add DRI2flushExtension support with invalidate hook
Needed to support the SwapBuffers code properly. Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:

committed by
Jesse Barnes

parent
c642f3941b
commit
7c50d29f7c
@@ -236,6 +236,31 @@ static const __DRItexBufferExtension intelTexBufferExtension = {
|
||||
intelSetTexBuffer2,
|
||||
};
|
||||
|
||||
static void
|
||||
intelDRI2Flush(__DRIdrawable *drawable)
|
||||
{
|
||||
struct intel_context *intel = drawable->driContextPriv->driverPrivate;
|
||||
|
||||
if (intel->gen < 4)
|
||||
INTEL_FIREVERTICES(intel);
|
||||
|
||||
if (intel->batch->map != intel->batch->ptr)
|
||||
intel_batchbuffer_flush(intel->batch);
|
||||
}
|
||||
|
||||
static void
|
||||
intelDRI2FlushInvalidate(__DRIdrawable *drawable)
|
||||
{
|
||||
intelDRI2Flush(drawable);
|
||||
drawable->validBuffers = GL_FALSE;
|
||||
}
|
||||
|
||||
static const struct __DRI2flushExtensionRec intelFlushExtension = {
|
||||
{ __DRI2_FLUSH, __DRI2_FLUSH_VERSION },
|
||||
intelDRI2Flush,
|
||||
intelDRI2FlushInvalidate,
|
||||
};
|
||||
|
||||
static const __DRIextension *intelScreenExtensions[] = {
|
||||
&driReadDrawableExtension,
|
||||
&driCopySubBufferExtension.base,
|
||||
@@ -244,6 +269,7 @@ static const __DRIextension *intelScreenExtensions[] = {
|
||||
&driMediaStreamCounterExtension.base,
|
||||
&intelTexOffsetExtension.base,
|
||||
&intelTexBufferExtension.base,
|
||||
&intelFlushExtension.base,
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -524,11 +550,9 @@ intelFillInModes(__DRIscreenPrivate *psp,
|
||||
unsigned back_buffer_factor;
|
||||
int i;
|
||||
|
||||
/* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't
|
||||
* support pageflipping at all.
|
||||
*/
|
||||
static const GLenum back_buffer_modes[] = {
|
||||
GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
|
||||
GLX_NONE, GLX_SWAP_UNDEFINED_OML,
|
||||
GLX_SWAP_EXCHANGE_OML, GLX_SWAP_COPY_OML
|
||||
};
|
||||
|
||||
uint8_t depth_bits_array[3];
|
||||
@@ -711,11 +735,10 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
|
||||
intelScreenPrivate *intelScreen;
|
||||
GLenum fb_format[3];
|
||||
GLenum fb_type[3];
|
||||
/* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't
|
||||
* support pageflipping at all.
|
||||
*/
|
||||
|
||||
static const GLenum back_buffer_modes[] = {
|
||||
GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
|
||||
GLX_NONE, GLX_SWAP_UNDEFINED_OML,
|
||||
GLX_SWAP_EXCHANGE_OML, GLX_SWAP_COPY_OML
|
||||
};
|
||||
uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1];
|
||||
int color;
|
||||
|
Reference in New Issue
Block a user