Some of these are a bit subtle, but I think they're fine. Series is:
Reviewed-by: Nicolai Hähnle <[email protected]> On 02.04.2017 20:00, Marek Olšák wrote:
From: Marek Olšák <[email protected]> --- src/gallium/auxiliary/indices/u_primconvert.c | 10 ++++++++-- src/gallium/include/pipe/p_state.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/indices/u_primconvert.c b/src/gallium/auxiliary/indices/u_primconvert.c index 2bdfade..1ffca4b 100644 --- a/src/gallium/auxiliary/indices/u_primconvert.c +++ b/src/gallium/auxiliary/indices/u_primconvert.c @@ -121,39 +121,45 @@ util_primconvert_draw_vbo(struct primconvert_context *pc, util_draw_init_info(&new_info); new_info.indexed = true; new_info.min_index = info->min_index; new_info.max_index = info->max_index; new_info.index_bias = info->index_bias; new_info.start_instance = info->start_instance; new_info.instance_count = info->instance_count; new_info.primitive_restart = info->primitive_restart; new_info.restart_index = info->restart_index; if (info->indexed) { + enum pipe_prim_type mode = 0; + u_index_translator(pc->primtypes_mask, info->mode, pc->saved_ib.index_size, info->count, pc->api_pv, pc->api_pv, info->primitive_restart ? PR_ENABLE : PR_DISABLE, - &new_info.mode, &new_ib.index_size, &new_info.count, + &mode, &new_ib.index_size, &new_info.count, &trans_func); + new_info.mode = mode; src = ib->user_buffer; if (!src) { src = pipe_buffer_map(pc->pipe, ib->buffer, PIPE_TRANSFER_READ, &src_transfer); } src = (const uint8_t *)src + ib->offset; } else { + enum pipe_prim_type mode = 0; + u_index_generator(pc->primtypes_mask, info->mode, info->start, info->count, pc->api_pv, pc->api_pv, - &new_info.mode, &new_ib.index_size, &new_info.count, + &mode, &new_ib.index_size, &new_info.count, &gen_func); + new_info.mode = mode; } u_upload_alloc(pc->pipe->stream_uploader, 0, new_ib.index_size * new_info.count, 4, &new_ib.offset, &new_ib.buffer, &dst); if (info->indexed) { trans_func(src, info->start, info->count, new_info.count, info->restart_index, dst); } else { gen_func(info->start, new_info.count, dst); diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index d68a4d4..eeabf8b 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -634,21 +634,21 @@ struct pipe_index_buffer const void *user_buffer; /**< pointer to a user buffer if buffer == NULL */ }; /** * Information to describe a draw_vbo call. */ struct pipe_draw_info { boolean indexed; /**< use index buffer */ - enum pipe_prim_type mode; /**< the mode of the primitive */ + enum pipe_prim_type mode:8; /**< the mode of the primitive */ boolean primitive_restart; ubyte vertices_per_patch; /**< the number of vertices per patch */ unsigned start; /**< the index of the first vertex */ unsigned count; /**< number of vertices */ unsigned start_instance; /**< first instance id */ unsigned instance_count; /**< number of instances */ unsigned drawid; /**< id of this draw in a multidraw */
-- Lerne, wie die Welt wirklich ist, Aber vergiss niemals, wie sie sein sollte. _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
