diff options
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.c | 2 | ||||
-rw-r--r-- | src/egl/main/eglapi.c | 1 | ||||
-rw-r--r-- | src/egl/main/eglconfig.c | 9 | ||||
-rw-r--r-- | src/egl/main/eglconfig.h | 2 | ||||
-rw-r--r-- | src/egl/main/egldisplay.h | 1 |
5 files changed, 15 insertions, 0 deletions
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; |