[Mesa-dev] [PATCH] mesa: fix OES_texture_float texture render target behavior

Ian Romanick idr at freedesktop.org
Thu Feb 12 13:49:02 PST 2015


On 02/12/2015 01:47 PM, Ian Romanick wrote:
> On 02/12/2015 04:33 AM, Tapani Pälli wrote:
>> Current implementation allowed usage of unsized type texture GL_FLOAT
>> and GL_HALF_FLOAT as a render target as this was 'expected behavior' by
>> WEBGL_oes_texture_float and is also allowed by the oes-texture-float
>> WebGL test. However this broke some ES3 conformance tests that do not
>> accept such behavior. Patch sets such an fbo incomplete as expected by
>> the ES3 conformance tests. Textures with sized types like RGBA32F will
>> still continue to work as render targets.
> 
> This looks right, but it's a shame that we lose some functionality.  It
> doesn't seem like adding GL_EXT_color_buffer(_half)_float should be too
> much work... quick follow-up?
> 
> One tiny nit below.  With that fixed,
> 
> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

And please add

Cc: "10.5" <mesa-stable at lists.freedesktop.org>

>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88905
>> ---
>>  src/mesa/main/fbobject.c | 11 +++++++++++
>>  1 file changed, 11 insertions(+)
>>
>> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
>> index dae9d4e..fee7342 100644
>> --- a/src/mesa/main/fbobject.c
>> +++ b/src/mesa/main/fbobject.c
>> @@ -781,6 +781,17 @@ test_attachment_completeness(const struct gl_context *ctx, GLenum format,
>>              att->Complete = GL_FALSE;
>>              return;
>>           }
> 
> Blank line here.
> 
>> +         /* 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) && (texImage->TexObject->_IsFloat ||
>> +             texImage->TexObject->_IsHalfFloat)) {
>> +            att_incomplete("bad internal format");
>> +            att->Complete = GL_FALSE;
>> +            return;
>> +         }
>>        }
>>        else if (format == GL_DEPTH) {
>>           if (baseFormat == GL_DEPTH_COMPONENT) {
>>
> 
> _______________________________________________
> 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