[Mesa-dev] [PATCH v2] mesa/vbo: reduce prim array size
Nicolai Hähnle
nhaehnle at gmail.com
Wed May 3 16:24:41 UTC 2017
On 03.05.2017 18:16, Bartosz Tomczyk wrote:
> Yes, please push it for me.
Done.
Cheers,
Nicolai
>
> On 03.05.2017 17:41, Nicolai Hähnle wrote:
>> Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
>>
>> Do you need somebody to push this?
>>
>> On 02.05.2017 13:19, Bartosz Tomczyk wrote:
>>> We always use only single element.
>>>
>>> v2: Change signle element arrays to variables
>>> ---
>>> src/mesa/vbo/vbo_exec_array.c | 74
>>> +++++++++++++++++++++----------------------
>>> 1 file changed, 37 insertions(+), 37 deletions(-)
>>>
>>> diff --git a/src/mesa/vbo/vbo_exec_array.c
>>> b/src/mesa/vbo/vbo_exec_array.c
>>> index 15382eaaae..0fcaefe30a 100644
>>> --- a/src/mesa/vbo/vbo_exec_array.c
>>> +++ b/src/mesa/vbo/vbo_exec_array.c
>>> @@ -462,7 +462,7 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum
>>> mode, GLint start,
>>> GLuint drawID)
>>> {
>>> struct vbo_context *vbo = vbo_context(ctx);
>>> - struct _mesa_prim prim[2];
>>> + struct _mesa_prim prim;
>>>
>>> if (skip_validated_draw(ctx))
>>> return;
>>> @@ -472,18 +472,18 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum
>>> mode, GLint start,
>>> /* OpenGL 4.5 says that primitive restart is ignored with
>>> non-indexed
>>> * draws.
>>> */
>>> - memset(prim, 0, sizeof(prim));
>>> - prim[0].begin = 1;
>>> - prim[0].end = 1;
>>> - prim[0].mode = mode;
>>> - prim[0].num_instances = numInstances;
>>> - prim[0].base_instance = baseInstance;
>>> - prim[0].draw_id = drawID;
>>> - prim[0].is_indirect = 0;
>>> - prim[0].start = start;
>>> - prim[0].count = count;
>>> -
>>> - vbo->draw_prims(ctx, prim, 1, NULL,
>>> + memset(&prim, 0, sizeof(prim));
>>> + prim.begin = 1;
>>> + prim.end = 1;
>>> + prim.mode = mode;
>>> + prim.num_instances = numInstances;
>>> + prim.base_instance = baseInstance;
>>> + prim.draw_id = drawID;
>>> + prim.is_indirect = 0;
>>> + prim.start = start;
>>> + prim.count = count;
>>> +
>>> + vbo->draw_prims(ctx, &prim, 1, NULL,
>>> GL_TRUE, start, start + count - 1, NULL, 0, NULL);
>>>
>>> if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
>>> @@ -853,7 +853,7 @@ vbo_validated_drawrangeelements(struct gl_context
>>> *ctx, GLenum mode,
>>> {
>>> struct vbo_context *vbo = vbo_context(ctx);
>>> struct _mesa_index_buffer ib;
>>> - struct _mesa_prim prim[1];
>>> + struct _mesa_prim prim;
>>>
>>> if (skip_draw_elements(ctx, count, indices))
>>> return;
>>> @@ -865,19 +865,19 @@ vbo_validated_drawrangeelements(struct
>>> gl_context *ctx, GLenum mode,
>>> ib.obj = ctx->Array.VAO->IndexBufferObj;
>>> ib.ptr = indices;
>>>
>>> - prim[0].begin = 1;
>>> - prim[0].end = 1;
>>> - prim[0].weak = 0;
>>> - prim[0].pad = 0;
>>> - prim[0].mode = mode;
>>> - prim[0].start = 0;
>>> - prim[0].count = count;
>>> - prim[0].indexed = 1;
>>> - prim[0].is_indirect = 0;
>>> - prim[0].basevertex = basevertex;
>>> - prim[0].num_instances = numInstances;
>>> - prim[0].base_instance = baseInstance;
>>> - prim[0].draw_id = 0;
>>> + prim.begin = 1;
>>> + prim.end = 1;
>>> + prim.weak = 0;
>>> + prim.pad = 0;
>>> + prim.mode = mode;
>>> + prim.start = 0;
>>> + prim.count = count;
>>> + prim.indexed = 1;
>>> + prim.is_indirect = 0;
>>> + prim.basevertex = basevertex;
>>> + prim.num_instances = numInstances;
>>> + prim.base_instance = baseInstance;
>>> + prim.draw_id = 0;
>>>
>>> /* Need to give special consideration to rendering a range of
>>> * indices starting somewhere above zero. Typically the
>>> @@ -910,7 +910,7 @@ vbo_validated_drawrangeelements(struct gl_context
>>> *ctx, GLenum mode,
>>> * for the latter case elsewhere.
>>> */
>>>
>>> - vbo->draw_prims(ctx, prim, 1, &ib,
>>> + vbo->draw_prims(ctx, &prim, 1, &ib,
>>> index_bounds_valid, start, end, NULL, 0, NULL);
>>>
>>> if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
>>> @@ -1409,7 +1409,7 @@ vbo_draw_transform_feedback(struct gl_context
>>> *ctx, GLenum mode,
>>> GLuint stream, GLuint numInstances)
>>> {
>>> struct vbo_context *vbo = vbo_context(ctx);
>>> - struct _mesa_prim prim[2];
>>> + struct _mesa_prim prim;
>>>
>>> if (!_mesa_validate_DrawTransformFeedback(ctx, mode, obj, stream,
>>> numInstances)) {
>>> @@ -1431,19 +1431,19 @@ vbo_draw_transform_feedback(struct gl_context
>>> *ctx, GLenum mode,
>>> vbo_bind_arrays(ctx);
>>>
>>> /* init most fields to zero */
>>> - memset(prim, 0, sizeof(prim));
>>> - prim[0].begin = 1;
>>> - prim[0].end = 1;
>>> - prim[0].mode = mode;
>>> - prim[0].num_instances = numInstances;
>>> - prim[0].base_instance = 0;
>>> - prim[0].is_indirect = 0;
>>> + memset(&prim, 0, sizeof(prim));
>>> + prim.begin = 1;
>>> + prim.end = 1;
>>> + prim.mode = mode;
>>> + prim.num_instances = numInstances;
>>> + prim.base_instance = 0;
>>> + prim.is_indirect = 0;
>>>
>>> /* Maybe we should do some primitive splitting for primitive restart
>>> * (like in DrawArrays), but we have no way to know how many
>>> vertices
>>> * will be rendered. */
>>>
>>> - vbo->draw_prims(ctx, prim, 1, NULL, GL_FALSE, 0, ~0, obj, stream,
>>> NULL);
>>> + vbo->draw_prims(ctx, &prim, 1, NULL, GL_FALSE, 0, ~0, obj,
>>> stream, NULL);
>>>
>>> if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
>>> _mesa_flush(ctx);
>>>
>>
>>
>
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list