[Mesa-dev] [PATCH 1/2] mesa: remove redundant modulus operation
Timothy Arceri
tarceri at itsqueeze.com
Wed May 24 00:25:04 UTC 2017
On 24/05/17 08:07, Ian Romanick wrote:
> On 05/23/2017 05:01 AM, Timothy Arceri wrote:
>> The if check above means we can only get here if size is less than 4.
>> ---
>> src/mesa/program/prog_parameter.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/mesa/program/prog_parameter.c b/src/mesa/program/prog_parameter.c
>> index 44e680c..40bc47d 100644
>> --- a/src/mesa/program/prog_parameter.c
>> +++ b/src/mesa/program/prog_parameter.c
>> @@ -260,23 +260,22 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList,
>> struct gl_program_parameter *p = paramList->Parameters + oldNum + i;
>> p->Name = strdup(name ? name : "");
>> p->Type = type;
>> p->Size = size;
>> p->DataType = datatype;
>> if (values) {
>> if (size >= 4) {
>> COPY_4V(paramList->ParameterValues[oldNum + i], values);
>> } else {
>> /* copy 1, 2 or 3 values */
>> - GLuint remaining = size % 4;
>> - assert(remaining < 4);
>> - for (j = 0; j < remaining; j++) {
>> + assert(size < 4);
>> + for (j = 0; j < size; j++) {
>> paramList->ParameterValues[oldNum + i][j].f = values[j].f;
>> }
>> /* fill in remaining positions with zeros */
>> for (; j < 4; j++) {
>> paramList->ParameterValues[oldNum + i][j].f = 0.0f;
>> }
>
> It might be interesting to see if just setting all four values to 0.0
> before the copy produces better code. There are a bunch of different
> micro optimizations possible depending on what GCC does.
I've actually been looking at whether we can stop allocating 4
components here by default. I think it should be ok to do, state
references always pass a size of 4 as do uniforms from asm. This would
allow us to allocate the actual size we need for glsl uniforms.
It looks like i965 already skips these excess components and assigns a
pointer to static consts zero instead. Seems the gallium change should
be simple enough, i915 looks like it could be a little more tricky.
>
> Either way, this patch is
>
> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
>
>> }
>> values += 4;
>> } else {
>> /* silence valgrind */
>>
>
More information about the mesa-dev
mailing list