[Mesa-dev] [PATCH 9/9] gallium: decrease the size of pipe_draw_info - 88 -> 80 bytes
Nicolai Hähnle
nhaehnle at gmail.com
Mon Apr 3 08:46:33 UTC 2017
Some of these are a bit subtle, but I think they're fine. Series is:
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
On 02.04.2017 20:00, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
> 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.
More information about the mesa-dev
mailing list