[Mesa-dev] [PATCH] mesa: don't set _NEW_PROGRAM_CONSTANTS for non-bindless opaque uniforms

Timothy Arceri tarceri at itsqueeze.com
Thu Jun 15 21:29:05 UTC 2017


On 16/06/17 01:02, Marek Olšák wrote:
> This conflicts with:
> https://patchwork.freedesktop.org/patch/161252/

I'll send a version 2 once that lands, thanks.

> 
> Marek
> 
> On Thu, Jun 15, 2017 at 12:59 PM, Timothy Arceri <tarceri at itsqueeze.com> wrote:
>> ---
>>
>>   I haven't tried to benchmark/profile this with anything but it makes
>>   sense to try skip this if we can.
>>
>>   src/mesa/main/uniform_query.cpp | 6 +++++-
>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp
>> index fed33df..364e8a0 100644
>> --- a/src/mesa/main/uniform_query.cpp
>> +++ b/src/mesa/main/uniform_query.cpp
>> @@ -1049,21 +1049,25 @@ _mesa_uniform(GLint location, GLsizei count, const GLvoid *values,
>>       *     element that exceeds the highest array element index used, as
>>       *     reported by GetActiveUniform, will be ignored by the GL."
>>       *
>>       * Clamp 'count' to a valid value.  Note that for non-arrays a count > 1
>>       * will have already generated an error.
>>       */
>>      if (uni->array_elements != 0) {
>>         count = MIN2(count, (int) (uni->array_elements - offset));
>>      }
>>
>> -   FLUSH_VERTICES(ctx, _NEW_PROGRAM_CONSTANTS);
>> +   FLUSH_VERTICES(ctx, 0);
>> +
>> +   if (uni->is_bindless || !uni->type->contains_opaque()) {
>> +      ctx->NewState |= _NEW_PROGRAM_CONSTANTS;
>> +   }
>>
>>      /* Store the data in the "actual type" backing storage for the uniform.
>>       */
>>      if (!uni->type->is_boolean() && !uni->is_bindless) {
>>         memcpy(&uni->storage[size_mul * components * offset], values,
>>                sizeof(uni->storage[0]) * components * count * size_mul);
>>      } else if (uni->is_bindless) {
>>         const union gl_constant_value *src =
>>            (const union gl_constant_value *) values;
>>         GLuint64 *dst = (GLuint64 *)&uni->storage[components * offset].i;
>> --
>> 2.9.4
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list