1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
From b67a6184ed3b6d728894eba37a554a302c1b0312 Mon Sep 17 00:00:00 2001
From: "yong.gan" <yong.gan@nxp.com>
Date: Sat, 2 Apr 2016 09:33:56 +0800
Subject: [PATCH 3/3] MGS-1724: xwld: G2D compositor build failed in slevk
board
Add macro ENABLE_EGL to make sure the EGL was not built in slevk board.
Modify the wrong format for the shm buffer.
Upstream Status: Inappropriate [i.MX specific]
Signed-off-by: Yong Gan <yong.gan@nxp.com>
---
src/compositor-fbdev.c | 11 ++++++++++-
src/g2d-renderer.c | 4 ++--
2 files changed, 12 insertions(+), 3 deletions(-)
Index: weston-1.11.1/src/compositor-fbdev.c
===================================================================
--- weston-1.11.1.orig/src/compositor-fbdev.c 2017-01-14 09:47:24.064006974 -0600
+++ weston-1.11.1/src/compositor-fbdev.c 2017-01-14 09:55:59.000000000 -0600
@@ -63,7 +63,9 @@
int use_g2d;
uint32_t output_transform;
struct wl_listener session_listener;
+#ifdef ENABLE_EGL
NativeDisplayType display;
+#endif
};
struct fbdev_screeninfo {
@@ -96,9 +98,10 @@
/* pixman details. */
pixman_image_t *hw_surface;
uint8_t depth;
-
+#ifdef ENABLE_EGL
NativeDisplayType display;
NativeWindowType window;
+#endif
};
struct gl_renderer_interface *gl_renderer;
@@ -450,10 +453,12 @@
strerror(errno));
output->fb = NULL;
+#ifdef ENABLE_EGL
if(output->window)
fbDestroyWindow(output->window);
if(output->display)
fbDestroyDisplay(output->display);
+#endif
}
static void fbdev_output_destroy(struct weston_output *base);
@@ -527,6 +532,7 @@
}
} else {
+#ifdef ENABLE_EGL
setenv("HYBRIS_EGLPLATFORM", "wayland", 1);
output->window = fbCreateWindow(backend->display, -1, -1, 0, 0);
if (output->window == NULL) {
@@ -540,6 +546,7 @@
weston_log("gl_renderer_output_create failed.\n");
goto out_hw_surface;
}
+#endif
}
loop = wl_display_get_event_loop(backend->compositor->wl_display);
@@ -847,6 +854,7 @@
}
}
else {
+#ifdef ENABLE_EGL
gl_renderer = weston_load_module("gl-renderer.so",
"gl_renderer_interface");
if (!gl_renderer) {
@@ -866,6 +874,7 @@
weston_log("gl_renderer_create failed.\n");
goto out_launcher;
}
+#endif
}
if(!backend->use_g2d)
if (fbdev_output_create(backend, 0, 0, param->device) < 0)
Index: weston-1.11.1/src/g2d-renderer.c
===================================================================
--- weston-1.11.1.orig/src/g2d-renderer.c 2017-01-14 09:47:24.152007410 -0600
+++ weston-1.11.1/src/g2d-renderer.c 2017-01-14 09:48:56.000000000 -0600
@@ -756,11 +756,11 @@
switch (wl_shm_buffer_get_format(shm_buffer)) {
case WL_SHM_FORMAT_XRGB8888:
- g2dFormat = G2D_XRGB8888;
+ g2dFormat = G2D_BGRX8888;
gs->bpp = 4;
break;
case WL_SHM_FORMAT_ARGB8888:
- g2dFormat = G2D_ARGB8888;
+ g2dFormat = G2D_BGRA8888;
gs->bpp = 4;
break;
case WL_SHM_FORMAT_RGB565:
Index: weston-1.11.1/src/main.c
===================================================================
--- weston-1.11.1.orig/src/main.c 2017-01-14 10:02:42.000000000 -0600
+++ weston-1.11.1/src/main.c 2017-01-14 10:02:58.000000000 -0600
@@ -866,7 +866,17 @@
load_fbdev_backend(struct weston_compositor *c, char const * backend,
int *argc, char **argv, struct weston_config *wc)
{
- struct weston_fbdev_backend_config config = {{ 0, }};
+ struct weston_fbdev_backend_config config = {
+ .base = {0},
+#ifdef ENABLE_EGL
+ .use_gl = 1,
+ .use_g2d = 0,
+#else
+ .use_gl = 0,
+ .use_g2d = 1,
+#endif
+ .clone_mode = 0,
+ };
struct weston_config_section *section;
char *s = NULL;
int ret = 0;
|