Skip to content
Snippets Groups Projects

GL and GLES helpers initial commit.

Merged Jeremy Whiting requested to merge gl-helpers into master
All threads resolved!
Files
4
@@ -103,14 +103,6 @@ _print_error (const char *str)
fprintf (stderr, "gnome-session-is-accelerated: %s\n", str);
}
static gboolean
_has_composite (Display *display)
{
int dummy1, dummy2;
return XCompositeQueryExtension (display, &dummy1, &dummy2);
}
static gboolean
_is_comment (const char *line)
{
@@ -308,7 +300,7 @@ _has_extension (const char *extension_list,
}
static gboolean
_has_texture_from_pixmap (Display *display)
_display_has_extension (Display *display, const char *extension)
{
int screen;
const char *server_extensions;
@@ -320,12 +312,12 @@ _has_texture_from_pixmap (Display *display)
server_extensions = glXQueryServerString (display, screen,
GLX_EXTENSIONS);
if (!_has_extension (server_extensions,
"GLX_EXT_texture_from_pixmap"))
extension))
goto out;
client_extensions = glXGetClientString (display, GLX_EXTENSIONS);
if (!_has_extension (client_extensions,
"GLX_EXT_texture_from_pixmap"))
extension))
goto out;
ret = TRUE;
@@ -334,41 +326,6 @@ out:
return ret;
}
static void
_set_max_screen_size_property (Display *display, int screen, int size)
{
Atom max_screen_size_atom;
max_screen_size_atom = XInternAtom (display, "_GNOME_MAX_SCREEN_SIZE",
False);
/* Will be read by gnome-settings-daemon and
* gnome-control-center to avoid display configurations where 3D
* is not available (and would break gnome-shell) */
XChangeProperty (display, RootWindow(display, screen),
max_screen_size_atom,
XA_CARDINAL, 32, PropModeReplace,
(unsigned char *)&size, 1);
XSync(display, False);
}
static gboolean
_is_max_texture_size_big_enough (Display *display)
{
int screen, size;
screen = DefaultScreen (display);
size = MIN(max_renderbuffer_size, max_texture_size);
if (size < DisplayWidth (display, screen) ||
size < DisplayHeight (display, screen))
return FALSE;
_set_max_screen_size_property (display, screen, size);
return TRUE;
}
static gboolean print_renderer = FALSE;
static const GOptionEntry entries[] = {
@@ -402,27 +359,12 @@ main (int argc, char **argv)
goto out;
}
if (!_has_composite (display)) {
_print_error ("No composite extension.");
goto out;
}
renderer = _get_hardware_gl (display);
if (!renderer) {
_print_error ("No hardware 3D support.");
goto out;
}
if (!_has_texture_from_pixmap (display)) {
_print_error ("No GLX_EXT_texture_from_pixmap support.");
goto out;
}
if (!_is_max_texture_size_big_enough (display)) {
_print_error ("GL_MAX_{TEXTURE,RENDERBUFFER}_SIZE is too small.");
goto out;
}
ret = has_llvmpipe ? HELPER_SOFTWARE_RENDERING : HELPER_ACCEL;
if (print_renderer)
Loading