[Mesa-dev] [PATCH 1/2] mesa: move pipeline input/output validation inside _mesa_validate_program_pipeline()

Tapani Pälli tapani.palli at intel.com
Sun Dec 6 22:29:20 PST 2015



On 12/07/2015 08:12 AM, Tapani Pälli wrote:
> Does this fix something in the remaining OpenGL ES 3.1 CTS failures? If

Oops, yes it does. Looks like we need this now, let's try to optimize it 
a bit more light-weight later. One thing that will make it tiny bit 
faster is when resource list will be separated as multiple lists 
according to type, this is something I'm working on.

Reviewed-by: Tapani Pälli <tapani.palli at intel.com>


> not I think we should think about this more, how can we move this (maybe
> just partially) to happen already during UseProgramStages, it feels too
> expensive for draw time.
>
> FYI I'm working on to fix remaining SSO CTS failure(s), let me know if
> you are working on this as well. I have a partial fix here which I'm
> trying to rewrite to be cheaper (this is a bit similar case, too
> expensive):
>
> http://cgit.freedesktop.org/~tpalli/mesa/log/?h=fix_sso
>
>
> On 12/06/2015 06:33 AM, Timothy Arceri wrote:
>> This allows validation to be done on rendering calls also.
>>
>> Fixes 3 dEQP-GLES31.functional.separate tests.
>>
>> Cc: "11.1" <mesa-stable at lists.freedesktop.org>
>> Cc: Tapani Pälli <tapani.palli at intel.com>
>> Cc: Kenneth Graunke <kenneth at whitecape.org>
>> ---
>>   src/mesa/main/pipelineobj.c | 30 +++++++++++++++---------------
>>   1 file changed, 15 insertions(+), 15 deletions(-)
>>
>> diff --git a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c
>> index 6710d0d..d8c9ded 100644
>> --- a/src/mesa/main/pipelineobj.c
>> +++ b/src/mesa/main/pipelineobj.c
>> @@ -898,6 +898,21 @@ _mesa_validate_program_pipeline(struct
>> gl_context* ctx,
>>      if (!_mesa_sampler_uniforms_pipeline_are_valid(pipe))
>>         goto err;
>>
>> +   /* Validate inputs against outputs, this cannot be done during
>> linking
>> +    * since programs have been linked separately from each other.
>> +    *
>> +    * From OpenGL 4.5 Core spec:
>> +    *     "Separable program objects may have validation failures
>> that cannot be
>> +    *     detected without the complete program pipeline. Mismatched
>> interfaces,
>> +    *     improper usage of program objects together, and the same
>> +    *     state-dependent failures can result in validation errors
>> for such
>> +    *     program objects."
>> +    *
>> +    * OpenGL ES 3.1 specification has the same text.
>> +    */
>> +   if (!_mesa_validate_pipeline_io(pipe))
>> +      goto err;
>> +
>>      pipe->Validated = GL_TRUE;
>>      return GL_TRUE;
>>
>> @@ -933,21 +948,6 @@ _mesa_ValidateProgramPipeline(GLuint pipeline)
>>       * false for IsBound to avoid an error being thrown.
>>       */
>>      _mesa_validate_program_pipeline(ctx, pipe, false);
>> -
>> -   /* Validate inputs against outputs, this cannot be done during
>> linking
>> -    * since programs have been linked separately from each other.
>> -    *
>> -    * From OpenGL 4.5 Core spec:
>> -    *     "Separable program objects may have validation failures
>> that cannot be
>> -    *     detected without the complete program pipeline. Mismatched
>> interfaces,
>> -    *     improper usage of program objects together, and the same
>> -    *     state-dependent failures can result in validation errors
>> for such
>> -    *     program objects."
>> -    *
>> -    * OpenGL ES 3.1 specification has the same text.
>> -    */
>> -   if (!_mesa_validate_pipeline_io(pipe))
>> -      pipe->Validated = GL_FALSE;
>>   }
>>
>>   void GLAPIENTRY
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list