From 41f7de477c68a5ae3fd8b086dfb4a8cc10a35c39 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tapani=20P=C3=A4lli?= Date: Tue, 31 Oct 2017 10:57:42 +0200 Subject: [PATCH] egl: EXT_pixel_format_float plumbing MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Patch adds support and capability to match with new surface attribute, component type. Currently no configs with floating point type are exposed. 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 Reviewed-by: Eric Engestrom Reviewed-by: Adam Jackson --- 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 9e0feea9869..8861742c17f 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 76dabba2eb5..c1bf5bbfe19 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 f057b0bfe8c..2d3b3ddd908 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 22da697e83c..21f0a284124 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 981cbf4ca06..0f57680b21f 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.30.2