if (VIA_DEBUG) fprintf(stderr, "%s in\n", __FUNCTION__);
if (mode == GL_FRONT) {
VIA_FLUSH_DMA(vmesa);
- vmesa->drawMap = (char *)vmesa->driScreen->pFB;
- vmesa->readMap = (char *)vmesa->driScreen->pFB;
- vmesa->drawPitch = vmesa->front.pitch;
- vmesa->readPitch = vmesa->front.pitch;
- viaXMesaSetFrontClipRects(vmesa);
+ vmesa->drawBuffer = vmesa->readBuffer = &vmesa->front;
FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE);
return;
}
else if (mode == GL_BACK) {
VIA_FLUSH_DMA(vmesa);
- vmesa->drawMap = vmesa->back.map;
- vmesa->readMap = vmesa->back.map;
- vmesa->drawPitch = vmesa->back.pitch;
- vmesa->readPitch = vmesa->back.pitch;
- viaXMesaSetBackClipRects(vmesa);
+ vmesa->drawBuffer = vmesa->readBuffer = &vmesa->back;
FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE);
return;
}
return;
}
+ viaXMesaWindowMoved(vmesa);
+
/* We want to update the s/w rast state too so that r200SetBuffer()
* gets called.
*/
*/
+/* Using drawXoff like this is incorrect outside of locked regions.
+ * This hardware just isn't capable of private back buffers without
+ * glitches and/or a hefty locking scheme.
+ */
void viaCalcViewport(GLcontext *ctx)
{
viaContextPtr vmesa = VIA_CONTEXT(ctx);
viaChooseStencilState(ctx);
if (!vmesa->Fallback) {
+ viaChooseVertexState(ctx);
+ viaChooseRenderState(ctx);
via_emit_state(vmesa);
vmesa->newState = 0;
}