[Mesa-dev] [Mesa3d-dev] r300g: hack around issue with doom3 and 0 stride

Luca Barbieri luca at luca-barbieri.com
Sun Apr 11 00:32:46 PDT 2010


> I'd like to get rid of the zero stride concept and require the state tracker
> to either turn those values into proper constant (easy now we can bind >1
> constant buffer)
Wouldn't that require changing and recompiling the vertex shaders,
reading the constants from the driver anyway, or just binding that
constant buffer as a vertex buffer like things are done now? (unless
the GPU has special fetch-from-constant-buffer support)

> or use instancing to get the same effect.
How is this possible? Non-per-instance data still varies per vertex.

IMHO what could be done is to add an explicit API for that instead
("set_vertex_attrib") and have a special vertex buffer index in the
vertex element state that means "I'll call set_vertex_attrib for this
element".

As an additional step, "begin_draw", "end_draw" and "emit_vertex"
could be added, allowing to implement glBegin/glVertexAttrib/glEnd
directly over Gallium and getting rid of the vbo module, probably with
significant performance gains.

A vbo-like Gallium auxiliary module could handle GPUs that lack such
support, if there are any.


More information about the mesa-dev mailing list