mesa: avoid redundant viewport changes in meta code
This commit is contained in:
parent
c28f253ac2
commit
0243f79eac
|
@ -432,13 +432,23 @@ _mesa_meta_begin(GLcontext *ctx, GLbitfield state)
|
|||
}
|
||||
|
||||
if (state & META_VIEWPORT) {
|
||||
/* save viewport state */
|
||||
save->ViewportX = ctx->Viewport.X;
|
||||
save->ViewportY = ctx->Viewport.Y;
|
||||
save->ViewportW = ctx->Viewport.Width;
|
||||
save->ViewportH = ctx->Viewport.Height;
|
||||
_mesa_Viewport(0, 0, ctx->DrawBuffer->Width, ctx->DrawBuffer->Height);
|
||||
/* set viewport to match window size */
|
||||
if (ctx->Viewport.X != 0 ||
|
||||
ctx->Viewport.Y != 0 ||
|
||||
ctx->Viewport.Width != ctx->DrawBuffer->Width ||
|
||||
ctx->Viewport.Height != ctx->DrawBuffer->Height) {
|
||||
_mesa_set_viewport(ctx, 0, 0,
|
||||
ctx->DrawBuffer->Width, ctx->DrawBuffer->Height);
|
||||
}
|
||||
/* save depth range state */
|
||||
save->DepthNear = ctx->Viewport.Near;
|
||||
save->DepthFar = ctx->Viewport.Far;
|
||||
/* set depth range to default */
|
||||
_mesa_DepthRange(0.0, 1.0);
|
||||
}
|
||||
|
||||
|
@ -642,8 +652,13 @@ _mesa_meta_end(GLcontext *ctx)
|
|||
}
|
||||
|
||||
if (state & META_VIEWPORT) {
|
||||
_mesa_Viewport(save->ViewportX, save->ViewportY,
|
||||
save->ViewportW, save->ViewportH);
|
||||
if (save->ViewportX != ctx->Viewport.X ||
|
||||
save->ViewportY != ctx->Viewport.Y ||
|
||||
save->ViewportW != ctx->Viewport.Width ||
|
||||
save->ViewportH != ctx->Viewport.Height) {
|
||||
_mesa_set_viewport(ctx, save->ViewportX, save->ViewportY,
|
||||
save->ViewportW, save->ViewportH);
|
||||
}
|
||||
_mesa_DepthRange(save->DepthNear, save->DepthFar);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue