Revert "gbm: work around mesa linkage issue"
[mesa-waffle.git] / www / features.html
blob5a6e86b2c421ce7911358cdaf920408e2bcd5897
1 <!DOCTYPE html>
2 <html>
4 <head>
5 <title>Waffle/Features</title>
6 <link href="waffle.css" rel="stylesheet" type="text/css">
7 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
8 </head>
10 <body>
11 <h1><img src="waffle.jpg" alt="Yummy waffles"/></h1>
13 <h2><a href="index.html">Waffle</a>/Features</h2>
15 <h3>Supported Platforms</h3>
17 <p>Waffle supports the following OpenGL platforms.</p>
19 <ul>
20 <li>Linux Platforms
21 <ul>
22 <li>gbm</em></li>
23 <li>GLX</li>
24 <li>surfaceless</li>
25 <li>NACL</li>
26 <li>X11/EGL</li>
27 <li>Wayland</li>
28 </ul>
29 </li>
30 <li>Windows Platforms
31 <ul>
32 <li>WGL (experimental)</li>
33 </ul>
34 <li>Apple Platforms
35 <ul>
36 <li>MacOS CGL (experimental)</li>
37 </ul>
38 </li>
39 <li>Android (experimental)</li>
40 </ul>
42 <h3>OpenGL API's</h3>
44 <p>Waffle supports creating and managing contexts from the API's below
46 in a platform-independent manner.
48 Of course, the set of supported API's, and the available contexts that can be created for each,
50 are dependent on the native OpenGL platform.
52 For details on the relationship among native system, OpenGL API, and context creation,
54 see the manual page for
56 <a href="man/waffle_config.3.html">waffle_config(3)</a>. </p>
58 <ul>
59 <li>OpenGL</li>
60 <li>OpenGL ES1</li>
61 <li>OpenGL ES2</li>
62 <li>OpenGL ES3</li>
63 </ul>
65 <h3>Access to Backing Native Objects</h3>
67 <p>
68 For selected platforms (currently only Linux), Waffle allows clients to
69 access the backing native objects of each Waffle object. For example, if
70 you create a waffle_window on the X/EGL platform, then you can retrieve
71 the Xlib <tt>Display</tt>, Xlib <tt>Window</tt>, <tt>EGLDisplay</tt>, and
72 <tt>EGLSurface</tt>. Here is a small example for X/EGL:
73 </p>
75 <pre>
76 // Assume we've initialized the Waffle with X/EGL.
77 struct waffle_window *window = waffle_window_create(...);
78 struct waffle_x11_egl_window *n_window = waffle_window_get_native(window)->x11_egl;
80 Display *xlib_dpy = n_window->display.xlib_display;
81 EGLDisplay *egl_dpy = n_window->display.egl_display;
82 Window xlib_window = n_window->xlib_window;
83 EGLSurface egl_surface = n_window->egl_surface;</pre>
85 <p>
86 This feature allows clients to implement behvaior, such as input and
87 window manager hints, that is outside of Waffle's scope. Piglit currently
88 uses this feature to implement input for X windows.
89 </p>
91 <p>
92 In the future, Waffle will also support the inverse direction. It will
93 allow clients to create Waffle objects from pre-existing native objects.
94 </p>
95 </body>
96 </html>
98 <!--
99 vim:et sw=2 ts=2: