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

Reply via email to