nouveau: Always render offscreen, emulate front buffer rendering.
[mesa.git] / src / mesa / drivers / dri / nouveau / nouveau_driver.c
index 00956aa8f8b312655083a2e66c9f638d65663c5d..4851c6683560c0fa8f810d11ba981b1352e20e51 100644 (file)
@@ -41,7 +41,7 @@ GLboolean nouveauDRMGetParam(nouveauContextPtr nmesa,
                             unsigned int      param,
                             uint64_t*         value)
 {
-       drm_nouveau_getparam_t getp;
+       struct drm_nouveau_getparam getp;
 
        getp.param = param;
        if (!value || drmCommandWriteRead(nmesa->driFd, DRM_NOUVEAU_GETPARAM,
@@ -56,7 +56,7 @@ GLboolean nouveauDRMSetParam(nouveauContextPtr nmesa,
                             unsigned int      param,
                             uint64_t          value)
 {
-       drm_nouveau_setparam_t setp;
+       struct drm_nouveau_setparam setp;
 
        setp.param = param;
        setp.value = value;
@@ -117,6 +117,9 @@ static const GLubyte *nouveauGetString( GLcontext *ctx, GLenum name )
 static void nouveauFlush( GLcontext *ctx )
 {
        nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
+
+       if (ctx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_FRONT_LEFT)
+               nouveauDoSwapBuffers(nmesa, nmesa->driDrawable);
        FIRE_RING();
 }
 
@@ -124,6 +127,7 @@ static void nouveauFlush( GLcontext *ctx )
 static void nouveauFinish( GLcontext *ctx )
 {
        nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
+
        nouveauFlush( ctx );
        nouveauWaitForIdle( nmesa );
 }