nine: replace unnecessary dynamic-sized array with bitfield

PIPE_MAX_VERTEX_STREAMS is 4, so this can be simplified to reduce cpu usage

Reviewed-by: <Axel Davy davyaxel0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12523>
This commit is contained in:
Mike Blumenkrantz 2021-08-23 10:43:22 -04:00 committed by Marge Bot
parent 16b4916432
commit e645e3c523
1 changed files with 4 additions and 7 deletions

View File

@ -841,14 +841,13 @@ update_vertex_elements(struct NineDevice9 *device)
unsigned n, b, i;
int index;
char vdecl_index_map[16]; /* vs->num_inputs <= 16 */
char used_streams[device->caps.MaxStreams];
uint16_t used_streams = 0;
int dummy_vbo_stream = -1;
BOOL need_dummy_vbo = FALSE;
struct cso_velems_state ve;
context->stream_usage_mask = 0;
memset(vdecl_index_map, -1, 16);
memset(used_streams, 0, device->caps.MaxStreams);
vs = context->programmable_vs ? context->vs : device->ff.vs;
if (vdecl) {
@ -859,7 +858,7 @@ update_vertex_elements(struct NineDevice9 *device)
for (i = 0; i < vdecl->nelems; i++) {
if (vdecl->usage_map[i] == vs->input_map[n].ndecl) {
vdecl_index_map[n] = i;
used_streams[vdecl->elems[i].vertex_buffer_index] = 1;
used_streams |= BITFIELD_BIT(vdecl->elems[i].vertex_buffer_index);
break;
}
}
@ -873,11 +872,9 @@ update_vertex_elements(struct NineDevice9 *device)
}
if (need_dummy_vbo) {
for (i = 0; i < device->caps.MaxStreams; i++ ) {
if (!used_streams[i]) {
dummy_vbo_stream = i;
u_foreach_bit(bit, BITFIELD_MASK(device->caps.MaxStreams) & ~used_streams) {
dummy_vbo_stream = bit;
break;
}
}
}
/* there are less vertex shader inputs than stream slots,