[Mesa-dev] [PATCH] egl: EXT_pixel_format_float plumbing

Tapani Pälli tapani.palli at intel.com
Sun Nov 12 08:57:16 UTC 2017


Hi;

On 11/09/2017 07:03 PM, Eric Engestrom wrote:
> On Thursday, 2017-11-09 09:40:43 +0200, Tapani Pälli wrote:
>> Patch adds support and capability to match with new surface attribute,
>> component type. Currently no configs with floating point type are exposed.
> 
> Have you tested android O with this patch? I think it might fail to
> start, as it requires floating point configs to be present if the
> extension is advertised.
> 
> Other than that, it looks all good to me:
> Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>

Thanks for the review. Extension spec does not set such requirement but 
I'll promise to test this change with Android first. If there's trouble, 
I won't push it in yet.


>>
>> With this change, following dEQP test starts to pass:
>>
>>     dEQP-EGL.functional.choose_config.color_component_type_ext.dont_care
>>     dEQP-EGL.functional.choose_config.color_component_type_ext.fixed
>>     dEQP-EGL.functional.choose_config.color_component_type_ext.float
>>
>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> ---
>>   src/egl/drivers/dri2/egl_dri2.c | 2 ++
>>   src/egl/main/eglapi.c           | 1 +
>>   src/egl/main/eglconfig.c        | 9 +++++++++
>>   src/egl/main/eglconfig.h        | 2 ++
>>   src/egl/main/egldisplay.h       | 1 +
>>   5 files changed, 15 insertions(+)
>>
>> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
>> index b486be7487..a511081df8 100644
>> --- a/src/egl/drivers/dri2/egl_dri2.c
>> +++ b/src/egl/drivers/dri2/egl_dri2.c
>> @@ -695,6 +695,8 @@ dri2_setup_screen(_EGLDisplay *disp)
>>         dri2_renderer_query_integer(dri2_dpy,
>>                                     __DRI2_RENDERER_HAS_CONTEXT_PRIORITY);
>>   
>> +   disp->Extensions.EXT_pixel_format_float = EGL_TRUE;
>> +
>>      if (dri2_renderer_query_integer(dri2_dpy,
>>                                      __DRI2_RENDERER_HAS_FRAMEBUFFER_SRGB))
>>         disp->Extensions.KHR_gl_colorspace = EGL_TRUE;
>> diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
>> index 76dabba2eb..c1bf5bbfe1 100644
>> --- a/src/egl/main/eglapi.c
>> +++ b/src/egl/main/eglapi.c
>> @@ -514,6 +514,7 @@ _eglCreateExtensionsString(_EGLDisplay *dpy)
>>      _EGL_CHECK_EXTENSION(KHR_surfaceless_context);
>>      if (dpy->Extensions.EXT_swap_buffers_with_damage)
>>         _eglAppendExtension(&exts, "EGL_KHR_swap_buffers_with_damage");
>> +   _EGL_CHECK_EXTENSION(EXT_pixel_format_float);
>>      _EGL_CHECK_EXTENSION(KHR_wait_sync);
>>   
>>      if (dpy->Extensions.KHR_no_config_context)
>> diff --git a/src/egl/main/eglconfig.c b/src/egl/main/eglconfig.c
>> index f057b0bfe8..2d3b3ddd90 100644
>> --- a/src/egl/main/eglconfig.c
>> +++ b/src/egl/main/eglconfig.c
>> @@ -68,6 +68,7 @@ _eglInitConfig(_EGLConfig *conf, _EGLDisplay *dpy, EGLint id)
>>      conf->TransparentType = EGL_NONE;
>>      conf->NativeVisualType = EGL_NONE;
>>      conf->ColorBufferType = EGL_RGB_BUFFER;
>> +   conf->ComponentType = EGL_COLOR_COMPONENT_TYPE_FIXED_EXT;
>>   }
>>   
>>   
>> @@ -254,6 +255,9 @@ static const struct {
>>      { EGL_RECORDABLE_ANDROID,        ATTRIB_TYPE_BOOLEAN,
>>                                       ATTRIB_CRITERION_EXACT,
>>                                       EGL_DONT_CARE },
>> +   { EGL_COLOR_COMPONENT_TYPE_EXT,  ATTRIB_TYPE_ENUM,
>> +                                    ATTRIB_CRITERION_EXACT,
>> +                                    EGL_COLOR_COMPONENT_TYPE_FIXED_EXT },
>>   };
>>   
>>   
>> @@ -316,6 +320,11 @@ _eglValidateConfig(const _EGLConfig *conf, EGLBoolean for_matching)
>>               if (val != EGL_RGB_BUFFER && val != EGL_LUMINANCE_BUFFER)
>>                  valid = EGL_FALSE;
>>               break;
>> +         case EGL_COLOR_COMPONENT_TYPE_EXT:
>> +            if (val != EGL_COLOR_COMPONENT_TYPE_FIXED_EXT &&
>> +                val != EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT)
>> +               valid = EGL_FALSE;
>> +            break;
>>            default:
>>               assert(0);
>>               break;
>> diff --git a/src/egl/main/eglconfig.h b/src/egl/main/eglconfig.h
>> index 22da697e83..21f0a28412 100644
>> --- a/src/egl/main/eglconfig.h
>> +++ b/src/egl/main/eglconfig.h
>> @@ -88,6 +88,7 @@ struct _egl_config
>>      EGLint YInvertedNOK;
>>      EGLint FramebufferTargetAndroid;
>>      EGLint RecordableAndroid;
>> +   EGLint ComponentType;
>>   };
>>   
>>   
>> @@ -137,6 +138,7 @@ _eglOffsetOfConfig(EGLint attr)
>>      ATTRIB_MAP(EGL_Y_INVERTED_NOK,            YInvertedNOK);
>>      ATTRIB_MAP(EGL_FRAMEBUFFER_TARGET_ANDROID, FramebufferTargetAndroid);
>>      ATTRIB_MAP(EGL_RECORDABLE_ANDROID,        RecordableAndroid);
>> +   ATTRIB_MAP(EGL_COLOR_COMPONENT_TYPE_EXT,  ComponentType);
>>   #undef ATTRIB_MAP
>>      default:
>>         return -1;
>> diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h
>> index 981cbf4ca0..0f57680b21 100644
>> --- a/src/egl/main/egldisplay.h
>> +++ b/src/egl/main/egldisplay.h
>> @@ -103,6 +103,7 @@ struct _egl_extensions
>>      EGLBoolean EXT_create_context_robustness;
>>      EGLBoolean EXT_image_dma_buf_import;
>>      EGLBoolean EXT_image_dma_buf_import_modifiers;
>> +   EGLBoolean EXT_pixel_format_float;
>>      EGLBoolean EXT_swap_buffers_with_damage;
>>   
>>      unsigned int IMG_context_priority;
>> -- 
>> 2.13.6
>>


More information about the mesa-dev mailing list