[Mesa-dev] [PATCH] intel: use _mesa_meta_Clear with OpenGL ES 1.1

Tapani Pälli tapani.palli at intel.com
Wed Aug 8 10:02:06 PDT 2012


On 08/08/2012 07:33 PM, Kenneth Graunke wrote:
> On 08/08/2012 01:34 AM, Tapani Pälli wrote:
>> Patch changes i915 and i965 drivers to use fixed function version of
>> meta clear when running on ES 1.1. This fixes rendering errors seen with
>> Google Maps, Angry Birds and Gallery3D on Android platform.
>>
>> Change 88128516d43be5d25288ff5b64db63cda83c04b3 exposes all extensions
>> internally to be available independent of GL flavour, therefore check
>> against ARB_fragment_shader does not work. Alternatively intel_extensions.c
>> could be modified to enable/disable extension set based on version.
>>
>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> ---
>>  src/mesa/drivers/dri/i915/intel_clear.c | 6 +++---
>>  src/mesa/drivers/dri/i965/brw_clear.c   | 7 ++++++-
>>  2 files changed, 9 insertions(+), 4 deletions(-)
> 
>> diff --git a/src/mesa/drivers/dri/i915/intel_clear.c b/src/mesa/drivers/dri/i915/intel_clear.c
>> index 96d9c8f..49ee2e9 100644
>> --- a/src/mesa/drivers/dri/i915/intel_clear.c
>> +++ b/src/mesa/drivers/dri/i915/intel_clear.c
>> @@ -179,10 +179,10 @@ intelClear(struct gl_context *ctx, GLbitfield mask)
>>  
>>     if (tri_mask) {
>>        debug_mask("tri", tri_mask);
>> -      if (ctx->Extensions.ARB_fragment_shader)
>> -	 _mesa_meta_glsl_Clear(&intel->ctx, tri_mask);
>> -      else
>> +      if (ctx->Version == 11)
> 
> I would prefer to see:
>    if (ctx->API == API_OPENGLES)
> 
>>  	 _mesa_meta_Clear(&intel->ctx, tri_mask);
>> +      else
>> +	 _mesa_meta_glsl_Clear(&intel->ctx, tri_mask);
>>     }
>>  }
>>  
>> diff --git a/src/mesa/drivers/dri/i965/brw_clear.c b/src/mesa/drivers/dri/i965/brw_clear.c
>> index 31c2e45..42670fe 100644
>> --- a/src/mesa/drivers/dri/i965/brw_clear.c
>> +++ b/src/mesa/drivers/dri/i965/brw_clear.c
>> @@ -226,7 +226,12 @@ brw_clear(struct gl_context *ctx, GLbitfield mask)
>>     if (tri_mask) {
>>        debug_mask("tri", tri_mask);
>>        mask &= ~tri_mask;
>> -      _mesa_meta_glsl_Clear(&intel->ctx, tri_mask);
>> +
>> +      if(ctx->Version == 11) {
> 
> Ditto.
> 
>> +         _mesa_meta_Clear(&intel->ctx, tri_mask);
>> +      } else {
>> +         _mesa_meta_glsl_Clear(&intel->ctx, tri_mask);
>> +      }
>>     }
>>  
>>     /* Any strange buffers get passed off to swrast */
>>
> 
> I'm not sure that we want to go back to using _mesa_meta_Clear...we want
> to be able to use GLSL internally, even on ES 1.x---we just can't expose
> the API to the user.
> 
> I did some analysis about why glsl_Clear breaks on ES1 here:
> https://bugs.freedesktop.org/show_bug.cgi?id=50333

OK, this is interesting, I will get more familiar with this.

> That said, this is a small patch that gets things working in the
> meantime, so with the Version => API changes, you can add:
> 
> Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50333

Thanks Kenneth, I will fix the patch.



-- 

// Tapani


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 554 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120808/659eb384/attachment.pgp>


More information about the mesa-dev mailing list