egl/dri2: Refuse to add EGLConfigs with no supported surface types

For example, the surfaceless platform only supports pbuffers. If the
driver supports MSAA, we would still create a config, but it would have
no supported surface types. That's meaningless, so don't do it.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
Adam Jackson 2019-09-10 12:07:07 -04:00
parent 96b592696f
commit 7e0e53a077

View file

@ -420,6 +420,22 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
base.BindToTextureRGBA = bind_to_texture_rgba;
}
if (double_buffer) {
surface_type &= ~EGL_PIXMAP_BIT;
}
/* No support for pbuffer + MSAA for now.
*
* XXX TODO: pbuffer + MSAA does not work and causes crashes.
* See QT bugreport: https://bugreports.qt.io/browse/QTBUG-47509
*/
if (base.Samples) {
surface_type &= ~EGL_PBUFFER_BIT;
}
if (!surface_type)
return NULL;
base.RenderableType = disp->ClientAPIs;
base.Conformant = disp->ClientAPIs;
@ -464,19 +480,6 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
return NULL;
}
if (double_buffer) {
surface_type &= ~EGL_PIXMAP_BIT;
}
/* No support for pbuffer + MSAA for now.
*
* XXX TODO: pbuffer + MSAA does not work and causes crashes.
* See QT bugreport: https://bugreports.qt.io/browse/QTBUG-47509
*/
if (base.Samples) {
surface_type &= ~EGL_PBUFFER_BIT;
}
conf->base.SurfaceType |= surface_type;
return conf;