xephyr: Allow initializing glamor with gles2 (on GLX).
This should be useful for glamor development, so you can test both paths (which are significantly different, and apparently glamor_gradient.c was broken on GLES2 as of the import). Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
98b6158bc1
commit
199d9a6a94
|
@ -52,6 +52,7 @@
|
||||||
static Display *dpy;
|
static Display *dpy;
|
||||||
static XVisualInfo *visual_info;
|
static XVisualInfo *visual_info;
|
||||||
static GLXFBConfig fb_config;
|
static GLXFBConfig fb_config;
|
||||||
|
Bool ephyr_glamor_gles2;
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -145,6 +146,10 @@ ephyr_glamor_setup_texturing_shader(struct ephyr_glamor *glamor)
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
const char *fs_source =
|
const char *fs_source =
|
||||||
|
"#ifdef GL_ES\n"
|
||||||
|
"precision mediump float;\n"
|
||||||
|
"#endif\n"
|
||||||
|
"\n"
|
||||||
"varying vec2 t;\n"
|
"varying vec2 t;\n"
|
||||||
"uniform sampler2D s; /* initially 0 */\n"
|
"uniform sampler2D s; /* initially 0 */\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -276,7 +281,24 @@ ephyr_glamor_glx_screen_init(xcb_window_t win)
|
||||||
|
|
||||||
glx_win = glXCreateWindow(dpy, fb_config, win, NULL);
|
glx_win = glXCreateWindow(dpy, fb_config, win, NULL);
|
||||||
|
|
||||||
ctx = glXCreateContext(dpy, visual_info, NULL, True);
|
if (ephyr_glamor_gles2) {
|
||||||
|
static const int context_attribs[] = {
|
||||||
|
GLX_CONTEXT_MAJOR_VERSION_ARB, 2,
|
||||||
|
GLX_CONTEXT_MINOR_VERSION_ARB, 0,
|
||||||
|
GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_ES_PROFILE_BIT_EXT,
|
||||||
|
0,
|
||||||
|
};
|
||||||
|
if (epoxy_has_glx_extension(dpy, DefaultScreen(dpy),
|
||||||
|
"GLX_EXT_create_context_es2_profile")) {
|
||||||
|
ctx = glXCreateContextAttribsARB(dpy, fb_config, NULL, True,
|
||||||
|
context_attribs);
|
||||||
|
} else {
|
||||||
|
FatalError("Xephyr -glamor_gles2 rquires "
|
||||||
|
"GLX_EXT_create_context_es2_profile\n");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ctx = glXCreateContext(dpy, visual_info, NULL, True);
|
||||||
|
}
|
||||||
if (ctx == NULL)
|
if (ctx == NULL)
|
||||||
FatalError("glXCreateContext failed\n");
|
FatalError("glXCreateContext failed\n");
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ extern Bool EphyrWantGrayScale;
|
||||||
extern Bool EphyrWantResize;
|
extern Bool EphyrWantResize;
|
||||||
extern Bool kdHasPointer;
|
extern Bool kdHasPointer;
|
||||||
extern Bool kdHasKbd;
|
extern Bool kdHasKbd;
|
||||||
extern Bool ephyr_glamor;
|
extern Bool ephyr_glamor, ephyr_glamor_gles2;
|
||||||
|
|
||||||
#ifdef GLXEXT
|
#ifdef GLXEXT
|
||||||
extern Bool ephyrNoDRI;
|
extern Bool ephyrNoDRI;
|
||||||
|
@ -138,6 +138,7 @@ ddxUseMsg(void)
|
||||||
ErrorF("-resizeable Make Xephyr windows resizeable\n");
|
ErrorF("-resizeable Make Xephyr windows resizeable\n");
|
||||||
#ifdef GLAMOR
|
#ifdef GLAMOR
|
||||||
ErrorF("-glamor Enable 2D acceleration using glamor\n");
|
ErrorF("-glamor Enable 2D acceleration using glamor\n");
|
||||||
|
ErrorF("-glamor_gles2 Enable 2D acceleration using glamor (with GLES2 only)\n");
|
||||||
#endif
|
#endif
|
||||||
ErrorF
|
ErrorF
|
||||||
("-fakexa Simulate acceleration using software rendering\n");
|
("-fakexa Simulate acceleration using software rendering\n");
|
||||||
|
@ -251,6 +252,15 @@ ddxProcessArgument(int argc, char **argv, int i)
|
||||||
ephyrFuncs.finiAccel = ephyr_glamor_fini;
|
ephyrFuncs.finiAccel = ephyr_glamor_fini;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
else if (!strcmp (argv[i], "-glamor_gles2")) {
|
||||||
|
ephyr_glamor = TRUE;
|
||||||
|
ephyr_glamor_gles2 = TRUE;
|
||||||
|
ephyrFuncs.initAccel = ephyr_glamor_init;
|
||||||
|
ephyrFuncs.enableAccel = ephyr_glamor_enable;
|
||||||
|
ephyrFuncs.disableAccel = ephyr_glamor_disable;
|
||||||
|
ephyrFuncs.finiAccel = ephyr_glamor_fini;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (!strcmp(argv[i], "-fakexa")) {
|
else if (!strcmp(argv[i], "-fakexa")) {
|
||||||
ephyrFuncs.initAccel = ephyrDrawInit;
|
ephyrFuncs.initAccel = ephyrDrawInit;
|
||||||
|
|
Loading…
Reference in New Issue