summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch')
-rw-r--r--meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch267
1 files changed, 267 insertions, 0 deletions
diff --git a/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch b/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch
new file mode 100644
index 0000000000..aac2a37294
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch
@@ -0,0 +1,267 @@
1From 453353a221de9c64479f4372565d2cd8591b36cc Mon Sep 17 00:00:00 2001
2From: Frank Binns <frank.binns@imgtec.com>
3Date: Fri, 29 Jun 2012 11:26:04 +0100
4Subject: [PATCH 5/9] Fix build when EGL_MESA_screen_surface extension isn't
5 present
6
7The EGL demos won't build against EGL implementations that don't support
8the EGL_MESA_screen_surface extension. Fix this, in most cases, by
9wrapping relevant bits of code in #ifdef EGL_MESA_screen_surface.
10
11Signed-off-by: Frank Binns <frank.binns@imgtec.com>
12
13Applied and fixed up in Yocto by...
14
15Integrated-by: Tom Zanussi <tom.zanussi@linux.intel.com>
16
17Upstream-Status: Pending
18---
19 src/egl/eglut/eglut.c | 9 +++++++--
20 src/egl/eglut/eglut_screen.c | 14 ++++++++++++++
21 src/egl/opengl/demo1.c | 2 ++
22 src/egl/opengl/demo2.c | 7 ++++++-
23 src/egl/opengl/demo3.c | 7 ++++++-
24 5 files changed, 35 insertions(+), 4 deletions(-)
25
26diff --git a/src/egl/eglut/eglut.c b/src/egl/eglut/eglut.c
27index 2ee6f15..f6a2ad4 100644
28--- a/src/egl/eglut/eglut.c
29+++ b/src/egl/eglut/eglut.c
30@@ -76,8 +76,9 @@ _eglutNow(void)
31 static void
32 _eglutDestroyWindow(struct eglut_window *win)
33 {
34- if (_eglut->surface_type != EGL_PBUFFER_BIT &&
35- _eglut->surface_type != EGL_SCREEN_BIT_MESA)
36+
37+ if (_eglut->surface_type == EGL_WINDOW_BIT ||
38+ _eglut->surface_type == EGL_PIXMAP_BIT)
39 eglDestroySurface(_eglut->dpy, win->surface);
40
41 _eglutNativeFiniWindow(win);
42@@ -175,7 +176,9 @@ _eglutCreateWindow(const char *title, int x, int y, int w, int h)
43 win->config, win->native.u.pixmap, NULL);
44 break;
45 case EGL_PBUFFER_BIT:
46+#ifdef EGL_MESA_screen_surface
47 case EGL_SCREEN_BIT_MESA:
48+#endif
49 win->surface = win->native.u.surface;
50 break;
51 default:
52@@ -289,8 +292,10 @@ eglutDestroyWindow(int win)
53 if (window->index != win)
54 return;
55
56+#ifdef EGL_MESA_screen_surface
57 /* XXX it causes some bug in st/egl KMS backend */
58 if ( _eglut->surface_type != EGL_SCREEN_BIT_MESA)
59+#endif
60 eglMakeCurrent(_eglut->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
61
62 _eglutDestroyWindow(_eglut->current);
63diff --git a/src/egl/eglut/eglut_screen.c b/src/egl/eglut/eglut_screen.c
64index 021a8f1..094a4e2 100644
65--- a/src/egl/eglut/eglut_screen.c
66+++ b/src/egl/eglut/eglut_screen.c
67@@ -35,26 +35,33 @@
68
69 #define MAX_MODES 100
70
71+#ifdef EGL_MESA_screen_surface
72 static EGLScreenMESA kms_screen;
73 static EGLModeMESA kms_mode;
74 static EGLint kms_width, kms_height;
75+#endif
76
77 void
78 _eglutNativeInitDisplay(void)
79 {
80+#ifdef EGL_MESA_screen_surface
81 _eglut->native_dpy = EGL_DEFAULT_DISPLAY;
82 _eglut->surface_type = EGL_SCREEN_BIT_MESA;
83+#endif
84 }
85
86 void
87 _eglutNativeFiniDisplay(void)
88 {
89+#ifdef EGL_MESA_screen_surface
90 kms_screen = 0;
91 kms_mode = 0;
92 kms_width = 0;
93 kms_height = 0;
94+#endif
95 }
96
97+#ifdef EGL_MESA_screen_surface
98 static void
99 init_kms(void)
100 {
101@@ -94,19 +101,23 @@ init_kms(void)
102 kms_width = width;
103 kms_height = height;
104 }
105+#endif
106
107 void
108 _eglutNativeInitWindow(struct eglut_window *win, const char *title,
109 int x, int y, int w, int h)
110 {
111+#ifdef EGL_MESA_screen_surface
112 EGLint surf_attribs[16];
113 EGLint i;
114+#endif
115 const char *exts;
116
117 exts = eglQueryString(_eglut->dpy, EGL_EXTENSIONS);
118 if (!exts || !strstr(exts, "EGL_MESA_screen_surface"))
119 _eglutFatal("EGL_MESA_screen_surface is not supported\n");
120
121+#ifdef EGL_MESA_screen_surface
122 init_kms();
123
124 i = 0;
125@@ -128,14 +139,17 @@ _eglutNativeInitWindow(struct eglut_window *win, const char *title,
126
127 win->native.width = kms_width;
128 win->native.height = kms_height;
129+#endif
130 }
131
132 void
133 _eglutNativeFiniWindow(struct eglut_window *win)
134 {
135+#ifdef EGL_MESA_screen_surface
136 eglShowScreenSurfaceMESA(_eglut->dpy,
137 kms_screen, EGL_NO_SURFACE, 0);
138 eglDestroySurface(_eglut->dpy, win->native.u.surface);
139+#endif
140 }
141
142 void
143diff --git a/src/egl/opengl/demo1.c b/src/egl/opengl/demo1.c
144index d892734..3a3564c 100644
145--- a/src/egl/opengl/demo1.c
146+++ b/src/egl/opengl/demo1.c
147@@ -18,6 +18,7 @@
148 static void
149 TestScreens(EGLDisplay dpy)
150 {
151+#ifdef EGL_MESA_screen_surface
152 #define MAX 8
153 EGLScreenMESA screens[MAX];
154 EGLint numScreens;
155@@ -28,6 +29,7 @@ TestScreens(EGLDisplay dpy)
156 for (i = 0; i < numScreens; i++) {
157 printf(" Screen %d handle: %d\n", i, (int) screens[i]);
158 }
159+#endif
160 }
161
162 /**
163diff --git a/src/egl/opengl/demo2.c b/src/egl/opengl/demo2.c
164index 505b474..bfef59e 100644
165--- a/src/egl/opengl/demo2.c
166+++ b/src/egl/opengl/demo2.c
167@@ -16,6 +16,7 @@
168
169 /*#define FRONTBUFFER*/
170
171+#ifdef EGL_MESA_screen_surface
172 static void _subset_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2,
173 GLfloat r, GLfloat g, GLfloat b)
174 {
175@@ -95,12 +96,13 @@ TestScreens(EGLDisplay dpy)
176 printf(" Screen %d handle: %d\n", i, (int) screens[i]);
177 }
178 }
179-
180+#endif
181
182 int
183 main(int argc, char *argv[])
184 {
185 int maj, min;
186+#ifdef EGL_MESA_screen_surface
187 EGLContext ctx;
188 EGLSurface pbuffer, screen_surf;
189 EGLConfig configs[10];
190@@ -115,6 +117,7 @@ main(int argc, char *argv[])
191 EGLModeMESA mode;
192 EGLScreenMESA screen;
193 EGLint count;
194+#endif
195
196 EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
197 assert(d);
198@@ -132,6 +135,7 @@ main(int argc, char *argv[])
199 exit(1);
200 }
201
202+#ifdef EGL_MESA_screen_surface
203 eglGetConfigs(d, configs, 10, &numConfigs);
204 printf("Got %d EGL configs:\n", numConfigs);
205 for (i = 0; i < numConfigs; i++) {
206@@ -211,6 +215,7 @@ main(int argc, char *argv[])
207 eglDestroySurface(d, pbuffer);
208 eglDestroyContext(d, ctx);
209 eglTerminate(d);
210+#endif
211
212 return 0;
213 }
214diff --git a/src/egl/opengl/demo3.c b/src/egl/opengl/demo3.c
215index f84ca23..31b5d8b 100644
216--- a/src/egl/opengl/demo3.c
217+++ b/src/egl/opengl/demo3.c
218@@ -46,7 +46,7 @@ GLubyte OpenGL_bits[] = {
219 0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00,
220 };
221
222-
223+#ifdef EGL_MESA_screen_surface
224 static void Init(void)
225 {
226
227@@ -551,11 +551,13 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height)
228 fclose(f);
229 }
230 }
231+#endif
232
233 int
234 main(int argc, char *argv[])
235 {
236 int maj, min;
237+#ifdef EGL_MESA_screen_surface
238 EGLContext ctx;
239 EGLSurface screen_surf;
240 EGLConfig configs[10];
241@@ -566,6 +568,7 @@ main(int argc, char *argv[])
242 const GLubyte *bitmap;
243 EGLint screenAttribs[32];
244 EGLint i;
245+#endif
246
247 EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
248 assert(d);
249@@ -583,6 +586,7 @@ main(int argc, char *argv[])
250 exit(1);
251 }
252
253+#ifdef EGL_MESA_screen_surface
254 eglGetConfigs(d, configs, 10, &numConfigs);
255 eglGetScreensMESA(d, &screen, 1, &count);
256 eglGetModesMESA(d, screen, &mode, 1, &count);
257@@ -642,6 +646,7 @@ main(int argc, char *argv[])
258 eglDestroySurface(d, screen_surf);
259 eglDestroyContext(d, ctx);
260 eglTerminate(d);
261+#endif
262
263 return 0;
264 }
265--
2662.0.0
267