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 XVisualInfo *visual_info;
 | 
			
		||||
static GLXFBConfig fb_config;
 | 
			
		||||
Bool ephyr_glamor_gles2;
 | 
			
		||||
/** @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -145,6 +146,10 @@ ephyr_glamor_setup_texturing_shader(struct ephyr_glamor *glamor)
 | 
			
		|||
        "}\n";
 | 
			
		||||
 | 
			
		||||
    const char *fs_source =
 | 
			
		||||
        "#ifdef GL_ES\n"
 | 
			
		||||
        "precision mediump float;\n"
 | 
			
		||||
        "#endif\n"
 | 
			
		||||
        "\n"
 | 
			
		||||
        "varying vec2 t;\n"
 | 
			
		||||
        "uniform sampler2D s; /* initially 0 */\n"
 | 
			
		||||
        "\n"
 | 
			
		||||
| 
						 | 
				
			
			@ -276,7 +281,24 @@ ephyr_glamor_glx_screen_init(xcb_window_t win)
 | 
			
		|||
 | 
			
		||||
    glx_win = glXCreateWindow(dpy, fb_config, win, NULL);
 | 
			
		||||
 | 
			
		||||
    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)
 | 
			
		||||
        FatalError("glXCreateContext failed\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ extern Bool EphyrWantGrayScale;
 | 
			
		|||
extern Bool EphyrWantResize;
 | 
			
		||||
extern Bool kdHasPointer;
 | 
			
		||||
extern Bool kdHasKbd;
 | 
			
		||||
extern Bool ephyr_glamor;
 | 
			
		||||
extern Bool ephyr_glamor, ephyr_glamor_gles2;
 | 
			
		||||
 | 
			
		||||
#ifdef GLXEXT
 | 
			
		||||
extern Bool ephyrNoDRI;
 | 
			
		||||
| 
						 | 
				
			
			@ -138,6 +138,7 @@ ddxUseMsg(void)
 | 
			
		|||
    ErrorF("-resizeable          Make Xephyr windows resizeable\n");
 | 
			
		||||
#ifdef GLAMOR
 | 
			
		||||
    ErrorF("-glamor              Enable 2D acceleration using glamor\n");
 | 
			
		||||
    ErrorF("-glamor_gles2        Enable 2D acceleration using glamor (with GLES2 only)\n");
 | 
			
		||||
#endif
 | 
			
		||||
    ErrorF
 | 
			
		||||
        ("-fakexa              Simulate acceleration using software rendering\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -251,6 +252,15 @@ ddxProcessArgument(int argc, char **argv, int i)
 | 
			
		|||
        ephyrFuncs.finiAccel = ephyr_glamor_fini;
 | 
			
		||||
        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
 | 
			
		||||
    else if (!strcmp(argv[i], "-fakexa")) {
 | 
			
		||||
        ephyrFuncs.initAccel = ephyrDrawInit;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue