diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2005-09-03 16:43:02 +0000 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2005-09-03 16:43:02 +0000 |
commit | 687918b794d12a0ff5d395b8cf87880dbe8012bf (patch) | |
tree | 280d1b882dc3bfd0e105d14a1f9d90c7cef935dd /src/mesa/drivers/dri/r128/r128_state.c | |
parent | e6925b51e1e71dc45079636ce336a09806356999 (diff) |
SetBuffer, renderbuffer changes
Diffstat (limited to 'src/mesa/drivers/dri/r128/r128_state.c')
-rw-r--r-- | src/mesa/drivers/dri/r128/r128_state.c | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/src/mesa/drivers/dri/r128/r128_state.c b/src/mesa/drivers/dri/r128/r128_state.c index 29f490da89..a1cb6aafeb 100644 --- a/src/mesa/drivers/dri/r128/r128_state.c +++ b/src/mesa/drivers/dri/r128/r128_state.c @@ -51,6 +51,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "tnl/t_pipeline.h" +#include "drirenderbuffer.h" + /* ============================================================= * Alpha blending @@ -628,23 +630,29 @@ static void r128DDShadeModel( GLcontext *ctx, GLenum mode ) * Window position */ -void r128UpdateWindow( GLcontext *ctx ) +static void r128UpdateWindow( GLcontext *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); int x = rmesa->driDrawable->x; int y = rmesa->driDrawable->y; + struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[0][0]; + driRenderbuffer *drb = (driRenderbuffer *) rb; rmesa->setup.window_xy_offset = ((y << R128_WINDOW_Y_SHIFT) | (x << R128_WINDOW_X_SHIFT)); + rmesa->setup.dst_pitch_offset_c = (((drb->flippedPitch/8) << 21) | + (drb->flippedOffset >> 5)); + + rmesa->dirty |= R128_UPLOAD_CONTEXT | R128_UPLOAD_WINDOW; } + /* ============================================================= * Viewport */ - static void r128CalcViewport( GLcontext *ctx ) { r128ContextPtr rmesa = R128_CONTEXT(ctx); @@ -729,13 +737,6 @@ static void r128DDDrawBuffer( GLcontext *ctx, GLenum mode ) break; } - /* We want to update the s/w rast state too so that r128DDSetBuffer() - * gets called. - */ - _swrast_DrawBuffer(ctx, mode); - - rmesa->setup.dst_pitch_offset_c = (((rmesa->drawPitch/8) << 21) | - (rmesa->drawOffset >> 5)); rmesa->new_state |= R128_NEW_WINDOW; } @@ -1094,19 +1095,8 @@ void r128DDInitState( r128ContextPtr rmesa ) rmesa->Fallback = 0; - if ( rmesa->glCtx->Visual.doubleBufferMode && rmesa->sarea->pfCurrentPage == 0 ) { - rmesa->drawOffset = rmesa->readOffset = rmesa->r128Screen->backOffset; - rmesa->drawPitch = rmesa->readPitch = rmesa->r128Screen->backPitch; - } else { - rmesa->drawOffset = rmesa->readOffset = rmesa->r128Screen->frontOffset; - rmesa->drawPitch = rmesa->readPitch = rmesa->r128Screen->frontPitch; - } - - /* Harware state: + /* Hardware state: */ - rmesa->setup.dst_pitch_offset_c = (((rmesa->drawPitch/8) << 21) | - (rmesa->drawOffset >> 5)); - rmesa->setup.dp_gui_master_cntl_c = (R128_GMC_DST_PITCH_OFFSET_CNTL | R128_GMC_DST_CLIPPING | R128_GMC_BRUSH_SOLID_COLOR | |