[Mesa-dev] [PATCH v3] mesa: Fix GLES2 OES float texture framebuffer rendering.

Tapani Pälli tapani.palli at intel.com
Wed Dec 12 07:27:37 UTC 2018



On 12/12/18 8:42 AM, Tapani Pälli wrote:
> 
> 
> On 12/12/18 5:05 AM, Nick Kreeger wrote:
>> This change enables GLES2 to render float/half-float textures to a
>> framebuffer when the appropriate OES extensions are available.
>>
>> This commit regressed OES GLES2 float texture rendering:
>> https://gitlab.freedesktop.org/mesa/mesa/commit/e333035c47a6a4cc88f0f9ca2bced500538bebae 
>>
> 
> Which test/app got regressed? I'm curious because this commit also fixed 
> a failing conformance test that explicitly tests that the fbo with float 
> attachment should be marked incomplete.
> 

I'm against this change because these same tests will start to fail if 
we allow this:

https://mesa-ci.01.org/tpalli/builds/652/group/63a9f0ea7bb98050796b649e85481845

I believe the rule is that you should be able to render to sized formats 
such as RGBA32F (with modern GLES) but not to unsized formats such as 
GL_FLOAT.


>> ---
>>   src/mesa/main/fbobject.c | 20 +++++++++++---------
>>   1 file changed, 11 insertions(+), 9 deletions(-)
>>
>> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
>> index 23e4939619..cedfc3d81b 100644
>> --- a/src/mesa/main/fbobject.c
>> +++ b/src/mesa/main/fbobject.c
>> @@ -869,15 +869,17 @@ test_attachment_completeness(const struct 
>> gl_context *ctx, GLenum format,
>>               return;
>>            }
>> -         /* OES_texture_float allows creation and use of floating point
>> -          * textures with GL_FLOAT, GL_HALF_FLOAT but it does not allow
>> -          * these textures to be used as a render target, this is 
>> done via
>> -          * GL_EXT_color_buffer(_half)_float with set of new sized 
>> types.
>> -          */
>> -         if (_mesa_is_gles(ctx) && (texObj->_IsFloat || 
>> texObj->_IsHalfFloat)) {
>> -            att_incomplete("bad internal format");
>> -            att->Complete = GL_FALSE;
>> -            return;
>> +         if (_mesa_is_gles(ctx)) {
>> +           /**
>> +            * GL ES 2 will allow GL_FLOAT and GL_HALF_FLOAT to render 
>> as a
>> +            * target when the appropriate OES_* extensions are 
>> available.
>> +            */
>> +           if ((texObj->_IsHalfFloat && 
>> !_mesa_has_OES_texture_half_float(ctx)) ||
>> +               (texObj->_IsFloat && 
>> !_mesa_has_OES_texture_float(ctx))) {
>> +             att_incomplete("bad internal format");
>> +             att->Complete = GL_FALSE;
>> +             return;
>> +           }
>>            }
>>         }
>>         else if (format == GL_DEPTH) {
>>
> _______________________________________________
> 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