-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 keith whitwell wrote: > Hey Kristian, > > The first question is whether this is necessary - from vague memory I > have an idea that current attributes need not be updated by vertex > buffer rendering - ie. it's optional/implementation-dependent. > > I assume you're concerned with the case where you have something like > > // ctx->Current.Color is xyz > > glDrawArrays(); > > // has ctx->Current.Color been updated?? > > But assuming I'm wrong about that & we really do want to make > DrawArrays set the current values, the patch looks good...
The OpenGL 2.1 spec says: "The effect of DrawArrays (mode, f irst, count); is the same as the effect of the command sequence if (mode or count is invalid ) generate appropriate error else { Begin(mode); for (int i = 0; i < count ; i++) ArrayElement(f irst+ i); End(); } with one exception: the current normal coordinates, color, secondary color, color index, edge flag, fog coordinate, texture coordinates, and generic attributes are each indeterminate after execution of DrawArrays, if the corresponding array is enabled. Current values corresponding to disabled arrays are not modified by the execution of DrawArrays." So, after calling glDrawArrays, the current color is allowed to have any value (if GL_COLOR_ARRAY was enabled). > 2010/9/13 Kristian Høgsberg <k...@bitplanet.net>: >> Setting constant vertex attributes with glDrawArrays() doesn't work right >> because the last attribute isn't copied to ctx->Current. Typically, >> only the last attribute doesn't get set, since vbo_exec_wrap_upgrade_vertex() >> ends up getting called when setting a new attribute, and it will copy all >> previously set attributes to Current. >> --- >> src/mesa/vbo/vbo_exec_api.c | 3 +++ >> 1 files changed, 3 insertions(+), 0 deletions(-) >> >> I'm not too familiar with this code, so I'd appreciate if somebody who >> knows the vbo code better could take a quick look. >> >> Kristian >> >> diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c >> index 9df75a8..90c3dd4 100644 >> --- a/src/mesa/vbo/vbo_exec_api.c >> +++ b/src/mesa/vbo/vbo_exec_api.c >> @@ -359,6 +359,9 @@ static void vbo_exec_fixup_vertex( GLcontext *ctx, >> do { \ >> struct vbo_exec_context *exec = &vbo_context(ctx)->exec; \ >> \ >> + /* FLUSH_UPDATE_CURRENT needs to be set manually */ \ >> + exec->ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ >> + \ >> if (exec->vtx.active_sz[A] != N) \ >> vbo_exec_fixup_vertex(ctx, A, N); \ >> \ >> -- >> 1.7.2.1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkyOq6MACgkQX1gOwKyEAw/anwCcCl/dvqP31vjoQcqAcDm+PXi/ saYAoIRC5Ln/2j+p09Y7pbyBCaARCSsL =6S78 -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev