On Wed, 2009-09-30 at 00:32 +0100, Peter Clifton wrote:

[snip]

> > After a bit of a false lead, I finally tracked the behaviour change to:
> > 
> > 50d8b295f6c950da3b8783ff6e1803bdfbb5c7cc is first bad commit
> > commit 50d8b295f6c950da3b8783ff6e1803bdfbb5c7cc
> > Author: Brian Paul <[email protected]>
> > Date:   Tue Sep 1 12:05:41 2009 -0600
> > 
> >     intel: use _mesa_meta_clear(), it's a bit faster
> > 
> > :040000 040000 81f24fd1186fda701bd343d7e3c4428c10494477
> > 40f6ebb2f756d7054fb2ea940183bc8ad5154ed0 M  src

[snip]

> Reverting the change from the old meta-ops code fixes the issue on
> master, but I can't determine any real differences between the old / new
> code.
> 
> One clue I managed to find though..

[snip]

The attached diff "fixes" the issue for me. Does this yield any clues as
to the source of the problem?

(I've still not had any chance to distil a test-case yet, and will be
away the rest of the week!)

diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index a152087..de368df 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -1229,25 +1229,23 @@ _mesa_meta_Clear(GLcontext *ctx, GLbitfield buffers)
 
       /* create vertex array object */
       _mesa_GenVertexArrays(1, &clear->ArrayObj);
-      _mesa_BindVertexArray(clear->ArrayObj);
 
       /* create vertex array buffer */
       _mesa_GenBuffersARB(1, &clear->VBO);
-      _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, clear->VBO);
-      _mesa_BufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts),
-                          NULL, GL_DYNAMIC_DRAW_ARB);
-
-      /* setup vertex arrays */
-      _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
-      _mesa_ColorPointer(4, GL_FLOAT, sizeof(struct vertex), OFFSET(r));
-      _mesa_EnableClientState(GL_VERTEX_ARRAY);
-      _mesa_EnableClientState(GL_COLOR_ARRAY);
-   }
-   else {
-      _mesa_BindVertexArray(clear->ArrayObj);
-      _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, clear->VBO);
    }
 
+   _mesa_BindVertexArray(clear->ArrayObj);
+
+   _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, clear->VBO);
+   _mesa_BufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts),
+                       NULL, GL_DYNAMIC_DRAW_ARB);
+
+   /* setup vertex arrays */
+   _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
+   _mesa_ColorPointer(4, GL_FLOAT, sizeof(struct vertex), OFFSET(r));
+   _mesa_EnableClientState(GL_VERTEX_ARRAY);
+   _mesa_EnableClientState(GL_COLOR_ARRAY);
+
    /* GL_COLOR_BUFFER_BIT */
    if (buffers & BUFFER_BITS_COLOR) {
       /* leave colormask, glDrawBuffer state as-is */
------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to