[Mesa-dev] [PATCH 2/2] vbo: Don't discount stride == 0 for testing all varyings in VBOs.

Brian Paul brianp at vmware.com
Fri Jun 17 13:45:33 PDT 2011


On 06/17/2011 02:36 PM, Eric Anholt wrote:
> In fixed function, stride == 0 (e.g. glColor4f() outside of the draw
> call) would get turned into uniform inputs, which is why it was
> ignored originally in this test.  For shaders, drivers end up seeing a
> need to upload stride == 0 data, and get confused by needing to upload
> when vbo_all_varyings_in_vbos() returned true.  In the 965 driver
> case, it wouldn't bother to compute the min/max index, and uploaded
> nothing if the min/max wasn't known.
>
> We've talked about removing the ff stride=0-into-uniforms code, so
> this check shouldn't be missed once that's gone.

That optimization has caused a lot of grief but we should carefully 
consider whether to remove it.  Keith may want to chime in on that.


> Fixes ARB_vertex_buffer_object/mixed-immediate-and-vbo
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=37934
> ---
>   src/mesa/vbo/vbo_rebase.c |    3 +--
>   1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/vbo/vbo_rebase.c b/src/mesa/vbo/vbo_rebase.c
> index 15e5895..1de290f 100644
> --- a/src/mesa/vbo/vbo_rebase.c
> +++ b/src/mesa/vbo/vbo_rebase.c
> @@ -78,8 +78,7 @@ GLboolean vbo_all_varyings_in_vbos( const struct gl_client_array *arrays[] )
>      GLuint i;
>
>      for (i = 0; i<  VERT_ATTRIB_MAX; i++)
> -      if (arrays[i]->StrideB&&
> -	  arrays[i]->BufferObj->Name == 0)
> +      if (arrays[i]->BufferObj->Name == 0)
>   	 return GL_FALSE;
>
>      return GL_TRUE;


Reviewed-by: Brian Paul <brianp at vmware.com>

Same comment about _mesa_is_bufferobj().

-Brian


More information about the mesa-dev mailing list