[mutter] MetaRendererNative: Always use eglGetPlatformDisplay
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] MetaRendererNative: Always use eglGetPlatformDisplay
- Date: Thu, 17 Nov 2016 16:07:41 +0000 (UTC)
commit da21f02eb91f13484542829d9e4855715108521a
Author: Jonas Ådahl <jadahl gmail com>
Date: Thu Sep 1 11:04:22 2016 +0800
MetaRendererNative: Always use eglGetPlatformDisplay
Drivers may be bad at guessing what is passed to eglGetDisplay, ending
up return non-functioning EGLDisplay's. Using eglGetPlatformDisplay
avoids this issue.
https://bugzilla.gnome.org/show_bug.cgi?id=773629
src/backends/meta-egl.c | 18 +-----------------
src/backends/meta-egl.h | 4 ----
src/backends/native/meta-renderer-native.c | 15 +++++++++++++--
3 files changed, 14 insertions(+), 23 deletions(-)
---
diff --git a/src/backends/meta-egl.c b/src/backends/meta-egl.c
index d605a79..579c2b2 100644
--- a/src/backends/meta-egl.c
+++ b/src/backends/meta-egl.c
@@ -24,6 +24,7 @@
#include "config.h"
+#include "backends/meta-backend-private.h"
#include "backends/meta-egl.h"
#include "meta/util.h"
@@ -183,23 +184,6 @@ meta_egl_has_extensions (MetaEgl *egl,
return has_extensions;
}
-EGLDisplay
-meta_egl_get_display (MetaEgl *egl,
- EGLNativeDisplayType display_id,
- GError **error)
-{
- EGLDisplay display;
-
- display = eglGetDisplay (display_id);
- if (display == EGL_NO_DISPLAY)
- {
- set_egl_error (error);
- return EGL_NO_DISPLAY;
- }
-
- return display;
-}
-
gboolean
meta_egl_choose_config (MetaEgl *egl,
EGLDisplay display,
diff --git a/src/backends/meta-egl.h b/src/backends/meta-egl.h
index ac176d5..d354569 100644
--- a/src/backends/meta-egl.h
+++ b/src/backends/meta-egl.h
@@ -38,10 +38,6 @@ gboolean meta_egl_has_extensions (MetaEgl *egl,
char *first_extension,
...);
-EGLDisplay meta_egl_get_display (MetaEgl *egl,
- EGLNativeDisplayType display_id,
- GError **error);
-
gboolean meta_egl_choose_config (MetaEgl *egl,
EGLDisplay display,
const EGLint *attrib_list,
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 2f0818f..e292431 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -1258,6 +1258,16 @@ init_gbm (MetaRendererNative *renderer_native,
struct gbm_device *gbm_device;
EGLDisplay egl_display;
+ if (!meta_egl_has_extensions (egl, EGL_NO_DISPLAY, NULL,
+ "EGL_MESA_platform_gbm",
+ NULL))
+ {
+ g_set_error (error, G_IO_ERROR,
+ G_IO_ERROR_FAILED,
+ "Missing extension for GBM renderer: EGL_KHR_platform_gbm");
+ return FALSE;
+ }
+
gbm_device = gbm_create_device (renderer_native->kms_fd);
if (!gbm_device)
{
@@ -1267,8 +1277,9 @@ init_gbm (MetaRendererNative *renderer_native,
return FALSE;
}
- egl_display = meta_egl_get_display (egl, (EGLNativeDisplayType) gbm_device,
- error);
+ egl_display = meta_egl_get_platform_display (egl,
+ EGL_PLATFORM_GBM_KHR,
+ gbm_device, NULL, error);
if (egl_display == EGL_NO_DISPLAY)
{
gbm_device_destroy (gbm_device);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]