[Mesa-dev] [PATCH 17/17] vbo: whitespace/formatting fixes in vbo_split_inplace.c
Roland Scheidegger
sroland at vmware.com
Sat Jan 20 00:25:51 UTC 2018
Looks all good to me albeit I'm still no vbo expert...
For the series:
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Am 19.01.2018 um 18:47 schrieb Brian Paul:
> ---
> src/mesa/vbo/vbo_split_inplace.c | 215 ++++++++++++++++++++-------------------
> 1 file changed, 111 insertions(+), 104 deletions(-)
>
> diff --git a/src/mesa/vbo/vbo_split_inplace.c b/src/mesa/vbo/vbo_split_inplace.c
> index a2717ab..2c363c2 100644
> --- a/src/mesa/vbo/vbo_split_inplace.c
> +++ b/src/mesa/vbo/vbo_split_inplace.c
> @@ -59,26 +59,27 @@ struct split_context {
>
>
>
> -static void flush_vertex( struct split_context *split )
> +static void
> +flush_vertex( struct split_context *split)
> {
> struct gl_context *ctx = split->ctx;
> const struct gl_vertex_array **saved_arrays = ctx->Array._DrawArrays;
> struct _mesa_index_buffer ib;
> GLuint i;
>
> - if (!split->dstprim_nr)
> + if (!split->dstprim_nr)
> return;
>
> if (split->ib) {
> ib = *split->ib;
>
> ib.count = split->max_index - split->min_index + 1;
> - ib.ptr = (const void *)((const char *)ib.ptr +
> + ib.ptr = (const void *)((const char *)ib.ptr +
> split->min_index * ib.index_size);
>
> /* Rebase the primitives to save index buffer entries. */
> for (i = 0; i < split->dstprim_nr; i++)
> - split->dstprim[i].start -= split->min_index;
> + split->dstprim[i].start -= split->min_index;
> }
>
> assert(split->max_index >= split->min_index);
> @@ -87,13 +88,13 @@ static void flush_vertex( struct split_context *split )
> ctx->NewDriverState |= ctx->DriverFlags.NewArray;
>
> split->draw(ctx,
> - split->dstprim,
> - split->dstprim_nr,
> - split->ib ? &ib : NULL,
> - !split->ib,
> - split->min_index,
> - split->max_index,
> - NULL, 0, NULL);
> + split->dstprim,
> + split->dstprim_nr,
> + split->ib ? &ib : NULL,
> + !split->ib,
> + split->min_index,
> + split->max_index,
> + NULL, 0, NULL);
>
> ctx->Array._DrawArrays = saved_arrays;
> ctx->NewDriverState |= ctx->DriverFlags.NewArray;
> @@ -104,7 +105,8 @@ static void flush_vertex( struct split_context *split )
> }
>
>
> -static struct _mesa_prim *next_outprim( struct split_context *split )
> +static struct _mesa_prim *
> +next_outprim(struct split_context *split)
> {
> if (split->dstprim_nr == MAX_PRIM-1) {
> flush_vertex(split);
> @@ -117,22 +119,26 @@ static struct _mesa_prim *next_outprim( struct split_context *split )
> }
> }
>
> -static void update_index_bounds(struct split_context *split,
> - const struct _mesa_prim *prim)
> +
> +static void
> +update_index_bounds(struct split_context *split,
> + const struct _mesa_prim *prim)
> {
> split->min_index = MIN2(split->min_index, prim->start);
> split->max_index = MAX2(split->max_index, prim->start + prim->count - 1);
> }
>
> +
> /* Return the maximum amount of vertices that can be emitted for a
> * primitive starting at 'prim->start', depending on the previous
> * index bounds.
> */
> -static GLuint get_max_vertices(struct split_context *split,
> - const struct _mesa_prim *prim)
> +static GLuint
> +get_max_vertices(struct split_context *split,
> + const struct _mesa_prim *prim)
> {
> if ((prim->start > split->min_index &&
> - prim->start - split->min_index >= split->limit) ||
> + prim->start - split->min_index >= split->limit) ||
> (prim->start < split->max_index &&
> split->max_index - prim->start >= split->limit))
> /* "prim" starts too far away from the old range. */
> @@ -141,10 +147,12 @@ static GLuint get_max_vertices(struct split_context *split,
> return MIN2(split->min_index, prim->start) + split->limit - prim->start;
> }
>
> +
> /* Break large primitives into smaller ones. If not possible, convert
> * the primitive to indexed and pass to split_elts().
> */
> -static void split_prims( struct split_context *split)
> +static void
> +split_prims(struct split_context *split)
> {
> GLuint i;
>
> @@ -156,103 +164,101 @@ static void split_prims( struct split_context *split)
> GLuint count = prim->count - (prim->count - first) % incr;
>
> if (prim->count < first)
> - continue;
> + continue;
>
> if ((available < count && !split_inplace) ||
> - (available < first && split_inplace)) {
> - flush_vertex(split);
> - available = get_max_vertices(split, prim);
> + (available < first && split_inplace)) {
> + flush_vertex(split);
> + available = get_max_vertices(split, prim);
> }
> -
> +
> if (available >= count) {
> - struct _mesa_prim *outprim = next_outprim(split);
> + struct _mesa_prim *outprim = next_outprim(split);
>
> - *outprim = *prim;
> - update_index_bounds(split, outprim);
> + *outprim = *prim;
> + update_index_bounds(split, outprim);
> }
> else if (split_inplace) {
> - GLuint j, nr;
> + GLuint j, nr;
>
> - for (j = 0 ; j < count ; ) {
> - GLuint remaining = count - j;
> - struct _mesa_prim *outprim = next_outprim(split);
> + for (j = 0 ; j < count ;) {
> + GLuint remaining = count - j;
> + struct _mesa_prim *outprim = next_outprim(split);
>
> - nr = MIN2( available, remaining );
> - nr -= (nr - first) % incr;
> + nr = MIN2(available, remaining);
> + nr -= (nr - first) % incr;
>
> - outprim->mode = prim->mode;
> - outprim->begin = (j == 0 && prim->begin);
> - outprim->end = (nr == remaining && prim->end);
> - outprim->start = prim->start + j;
> - outprim->count = nr;
> + outprim->mode = prim->mode;
> + outprim->begin = (j == 0 && prim->begin);
> + outprim->end = (nr == remaining && prim->end);
> + outprim->start = prim->start + j;
> + outprim->count = nr;
> outprim->num_instances = prim->num_instances;
> outprim->base_instance = prim->base_instance;
>
> - update_index_bounds(split, outprim);
> -
> - if (nr == remaining) {
> - /* Finished.
> - */
> - j += nr;
> - }
> - else {
> - /* Wrapped the primitive:
> - */
> - j += nr - (first - incr);
> - flush_vertex(split);
> - available = get_max_vertices(split, prim);
> - }
> - }
> + update_index_bounds(split, outprim);
> +
> + if (nr == remaining) {
> + /* Finished */
> + j += nr;
> + }
> + else {
> + /* Wrapped the primitive */
> + j += nr - (first - incr);
> + flush_vertex(split);
> + available = get_max_vertices(split, prim);
> + }
> + }
> }
> else if (split->ib == NULL) {
> - /* XXX: could at least send the first max_verts off from the
> - * inplace buffers.
> - */
> -
> - /* else convert to indexed primitive and pass to split_elts,
> - * which will do the necessary copying and turn it back into a
> - * vertex primitive for rendering...
> - */
> - struct _mesa_index_buffer ib;
> - struct _mesa_prim tmpprim;
> - GLuint *elts = malloc(count * sizeof(GLuint));
> - GLuint j;
> -
> - for (j = 0; j < count; j++)
> - elts[j] = prim->start + j;
> -
> - ib.count = count;
> - ib.index_size = 4;
> - ib.obj = split->ctx->Shared->NullBufferObj;
> - ib.ptr = elts;
> -
> - tmpprim = *prim;
> - tmpprim.indexed = 1;
> - tmpprim.start = 0;
> - tmpprim.count = count;
> + /* XXX: could at least send the first max_verts off from the
> + * inplace buffers.
> + */
> +
> + /* else convert to indexed primitive and pass to split_elts,
> + * which will do the necessary copying and turn it back into a
> + * vertex primitive for rendering...
> + */
> + struct _mesa_index_buffer ib;
> + struct _mesa_prim tmpprim;
> + GLuint *elts = malloc(count * sizeof(GLuint));
> + GLuint j;
> +
> + for (j = 0; j < count; j++)
> + elts[j] = prim->start + j;
> +
> + ib.count = count;
> + ib.index_size = 4;
> + ib.obj = split->ctx->Shared->NullBufferObj;
> + ib.ptr = elts;
> +
> + tmpprim = *prim;
> + tmpprim.indexed = 1;
> + tmpprim.start = 0;
> + tmpprim.count = count;
> tmpprim.num_instances = 1;
> tmpprim.base_instance = 0;
>
> - flush_vertex(split);
> + flush_vertex(split);
> +
> + vbo_split_copy(split->ctx,
> + split->array,
> + &tmpprim, 1,
> + &ib,
> + split->draw,
> + split->limits);
>
> - vbo_split_copy(split->ctx,
> - split->array,
> - &tmpprim, 1,
> - &ib,
> - split->draw,
> - split->limits);
> -
> - free(elts);
> + free(elts);
> }
> else {
> - flush_vertex(split);
> -
> - vbo_split_copy(split->ctx,
> - split->array,
> - prim, 1,
> - split->ib,
> - split->draw,
> - split->limits);
> + flush_vertex(split);
> +
> + vbo_split_copy(split->ctx,
> + split->array,
> + prim, 1,
> + split->ib,
> + split->draw,
> + split->limits);
> }
> }
>
> @@ -260,15 +266,16 @@ static void split_prims( struct split_context *split)
> }
>
>
> -void vbo_split_inplace( struct gl_context *ctx,
> - const struct gl_vertex_array *arrays[],
> - const struct _mesa_prim *prim,
> - GLuint nr_prims,
> - const struct _mesa_index_buffer *ib,
> - GLuint min_index,
> - GLuint max_index,
> - vbo_draw_func draw,
> - const struct split_limits *limits )
> +void
> +vbo_split_inplace(struct gl_context *ctx,
> + const struct gl_vertex_array *arrays[],
> + const struct _mesa_prim *prim,
> + GLuint nr_prims,
> + const struct _mesa_index_buffer *ib,
> + GLuint min_index,
> + GLuint max_index,
> + vbo_draw_func draw,
> + const struct split_limits *limits)
> {
> struct split_context split;
>
> @@ -288,7 +295,7 @@ void vbo_split_inplace( struct gl_context *ctx,
> split.limits = limits;
> split.limit = ib ? limits->max_indices : limits->max_verts;
>
> - split_prims( &split );
> + split_prims(&split);
> }
>
>
>
More information about the mesa-dev
mailing list