(st/)mesa: use x86 POPCNT, skip no-op vertex element updates after gl*Pointer (with C++ templates)
gl_vertex_array_object::NewArrays
is split into NewVertexBuffers
and NewVertexElements
. Some gl*Pointer
calls don't update the format, and this MR detects that cases and skips vertex element updates.
The x86 POPCNT
instruction is used in st_update_array
.
st_update_array
becomes a C++ template parameterized by whether to use POPCNT and whether to skip setting vertex elements.
Edited by Marek Olšák