An initial workaround that helped discover this was written by:
Illia Polishchuk illia.a.polishchuk@globallogic.com
Closes: #8440
Fixes:
a18b9d07 ("st/mesa: optimize uploading zero-stride vertex attribs")
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21805>
vbo_set_vertex_format(&vbo->current[i].Format,
exec->vtx.attr[i].size >> dmul_shift,
exec->vtx.attr[i].type);
+ /* The format changed. We need to update gallium vertex elements.
+ * Material attributes don't need this because they don't have formats.
+ */
+ if (i <= VBO_ATTRIB_EDGEFLAG)
+ ctx->NewState |= _NEW_CURRENT_ATTRIB;
}
}
}
if (type != currval->Format.User.Type ||
- (size >> dmul_shift) != currval->Format.User.Size)
+ (size >> dmul_shift) != currval->Format.User.Size) {
vbo_set_vertex_format(&currval->Format, size >> dmul_shift, type);
+ /* The format changed. We need to update gallium vertex elements. */
+ if (state == _NEW_CURRENT_ATTRIB)
+ ctx->NewState |= state;
+ }
*data += size;
}