From: Ian Romanick <ian.d.roman...@intel.com> text data bss dec hex filename 7155246 256860 37332 7449438 71ab5e 32-bit i965_dri.so before 7155058 256860 37332 7449250 71aaa2 32-bit i965_dri.so after 6788683 328056 50704 7167443 6d5dd3 64-bit i965_dri.so before 6788611 328056 50704 7167371 6d5d8b 64-bit i965_dri.so after
Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> --- src/mesa/drivers/common/meta.c | 47 ++++++++++++++++-------------------------- src/mesa/drivers/common/meta.h | 1 - 2 files changed, 18 insertions(+), 30 deletions(-) diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 9c1a4f2..85e766a 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -655,31 +655,31 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) } if (state & MESA_META_TRANSFORM) { - GLuint activeTexture = ctx->Texture.CurrentUnit; memcpy(save->ModelviewMatrix, ctx->ModelviewMatrixStack.Top->m, 16 * sizeof(GLfloat)); memcpy(save->ProjectionMatrix, ctx->ProjectionMatrixStack.Top->m, 16 * sizeof(GLfloat)); memcpy(save->TextureMatrix, ctx->TextureMatrixStack[0].Top->m, 16 * sizeof(GLfloat)); - save->MatrixMode = ctx->Transform.MatrixMode; + /* set 1:1 vertex:pixel coordinate transform */ - _mesa_ActiveTexture(GL_TEXTURE0); - _mesa_MatrixMode(GL_TEXTURE); - _mesa_LoadIdentity(); - _mesa_ActiveTexture(GL_TEXTURE0 + activeTexture); - _mesa_MatrixMode(GL_MODELVIEW); - _mesa_LoadIdentity(); - _mesa_MatrixMode(GL_PROJECTION); - _mesa_LoadIdentity(); + _mesa_load_identity_matrix(ctx, &ctx->ModelviewMatrixStack); + _mesa_load_identity_matrix(ctx, &ctx->ProjectionMatrixStack); + _mesa_load_identity_matrix(ctx, &ctx->TextureMatrixStack[0]); /* glOrtho with width = 0 or height = 0 generates GL_INVALID_VALUE. * This can occur when there is no draw buffer. */ - if (ctx->DrawBuffer->Width != 0 && ctx->DrawBuffer->Height != 0) - _mesa_Ortho(0.0, ctx->DrawBuffer->Width, - 0.0, ctx->DrawBuffer->Height, - -1.0, 1.0); + if (ctx->DrawBuffer->Width != 0 && ctx->DrawBuffer->Height != 0) { + /* Don't FLUSH_VERTICES here because _mesa_load_identity_matrix will + * have already done it. + */ + _math_matrix_ortho(ctx->ProjectionMatrixStack.Top, + 0.0f, (GLfloat) ctx->DrawBuffer->Width, + 0.0f, (GLfloat) ctx->DrawBuffer->Height, + -1.0f, 1.0f); + ctx->NewState |= ctx->ProjectionMatrixStack.DirtyFlag; + } if (ctx->Extensions.ARB_clip_control) { save->ClipOrigin = ctx->Transform.ClipOrigin; @@ -1066,19 +1066,9 @@ _mesa_meta_end(struct gl_context *ctx) } if (state & MESA_META_TRANSFORM) { - GLuint activeTexture = ctx->Texture.CurrentUnit; - _mesa_ActiveTexture(GL_TEXTURE0); - _mesa_MatrixMode(GL_TEXTURE); - _mesa_LoadMatrixf(save->TextureMatrix); - _mesa_ActiveTexture(GL_TEXTURE0 + activeTexture); - - _mesa_MatrixMode(GL_MODELVIEW); - _mesa_LoadMatrixf(save->ModelviewMatrix); - - _mesa_MatrixMode(GL_PROJECTION); - _mesa_LoadMatrixf(save->ProjectionMatrix); - - _mesa_MatrixMode(save->MatrixMode); + _mesa_load_matrix(ctx, &ctx->ModelviewMatrixStack, save->ModelviewMatrix); + _mesa_load_matrix(ctx, &ctx->ProjectionMatrixStack, save->ProjectionMatrix); + _mesa_load_matrix(ctx, &ctx->TextureMatrixStack[0], save->TextureMatrix); if (ctx->Extensions.ARB_clip_control) _mesa_ClipControl(save->ClipOrigin, save->ClipDepthMode); @@ -1455,8 +1445,7 @@ _mesa_meta_setup_ff_tnl_for_blit(struct gl_context *ctx, 0); /* setup projection matrix */ - _mesa_MatrixMode(GL_PROJECTION); - _mesa_LoadIdentity(); + _mesa_load_identity_matrix(ctx, &ctx->ProjectionMatrixStack); } /** diff --git a/src/mesa/drivers/common/meta.h b/src/mesa/drivers/common/meta.h index c09cb3e..fa84995 100644 --- a/src/mesa/drivers/common/meta.h +++ b/src/mesa/drivers/common/meta.h @@ -133,7 +133,6 @@ struct save_state struct gl_stencil_attrib Stencil; /** MESA_META_TRANSFORM */ - GLenum MatrixMode; GLfloat ModelviewMatrix[16]; GLfloat ProjectionMatrix[16]; GLfloat TextureMatrix[16]; -- 2.9.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev