#include <assert.h>
#include <stdlib.h>
+#include <X11/Xmd.h>
+#include <GL/glxproto.h>
+
#include <GL/gl.h>
#include <GL/glx.h>
#include <GL/glxtokens.h>
exit(1);
}
- d->context = glXCreateContext(sc->dpy->xlib_dpy, vi, NULL, GL_TRUE);
- glXMakeCurrent(sc->dpy->xlib_dpy, sc->overlay, d->context);
-
-
if (!(glxrender_find_fb_config(sc, d))) {
printf("unable to find FB configs\n");
exit(1);
}
+ d->context = glXCreateContext(sc->dpy->xlib_dpy, vi, NULL, GL_TRUE);
+ glXMakeCurrent(sc->dpy->xlib_dpy, sc->overlay, d->context);
+
glViewport(0, 0, sc->super->width_in_pixels, sc->super->height_in_pixels);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
+ //glEnable(GL_SCISSOR_TEST); ?? what is this, glxcompmgr enables it
+ //glEnable(GL_STENCIL_TEST); ?? what is this, glxcompmgr enables it
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
glXSwapBuffers(sc->dpy->xlib_dpy, sc->overlay);
d->bind_func = (BindEXTFunc)
stencil = 32767;
depth = 32767;
- printf("looking for depth %d\n", i);
+ //printf("looking for depth %d\n", i);
tvis.depth = i;
visinfo = XGetVisualInfo(sc->dpy->xlib_dpy, VisualDepthMask,
data_t *d = screen_find_plugin_data(sc, plugin_id);
if (d) {
glxrender_free_root_pixmap(sc, d);
+ glXDestroyContext(sc->dpy->xlib_dpy, d->context);
free(d);
}
screen_remove_plugin_data(sc, plugin_id);
wd->glpixmap, GLX_FRONT_LEFT_EXT);
glBindTexture(GL_TEXTURE_2D, 0);
- //xcb_glx_destroy_pixmap(w->sc->dpy->conn, wd->glpixmap);
glXDestroyPixmap(w->sc->dpy->xlib_dpy, wd->glpixmap);
wd->glpixmap = XCB_NONE;
d->root_glpixmap, GLX_FRONT_LEFT_EXT);
glBindTexture(GL_TEXTURE_2D, 0);
- //xcb_glx_destroy_pixmap(w->sc->dpy->conn, wd->glpixmap);
glXDestroyPixmap(sc->dpy->xlib_dpy, d->root_glpixmap);
d->root_glpixmap = XCB_NONE;
}
wd->glpixmap = glXCreatePixmap(w->sc->dpy->xlib_dpy,
d->fbconfig[depth],
px, attrs);
+#if 0
+ wd->glpixmap = xcb_generate_id(w->sc->dpy->conn);
+ int v;
+ glXGetFBConfigAttrib(w->sc->dpy->xlib_dpy, d->fbconfig[depth],
+ GLX_FBCONFIG_ID, &v);
+ xcb_void_cookie_t ck =
+ xcb_glx_create_pixmap_checked(w->sc->dpy->conn, w->sc->num,
+ v,
+ px, wd->glpixmap,
+ 2,
+ attrs);
+ xcb_generic_error_t *err = xcb_request_check(w->sc->dpy->conn, ck);
+ if (err) {
+ display_error(w->sc->dpy, err);
+ free(err);
+ wd->glpixmap = XCB_NONE;
+ return;
+ }
+#endif
glBindTexture(GL_TEXTURE_2D, wd->texname);
d->bind_func(w->sc->dpy->xlib_dpy,
wd->glpixmap, GLX_FRONT_LEFT_EXT, NULL);
+#if 0
+ {
+ /*
+ BindTexImageEXT
+ 1 CARD8 opcode (X assigned)
+ 1 16 GLX opcode (glXVendorPrivate)
+ 2 6+n request length
+ 4 1330 vendor specific opcode
+ 4 CARD32 context tag
+ 4 GLX_DRAWABLE drawable
+ 4 INT32 buffer
+ 4 CARD32 num_attributes
+ 4*n LISTofATTRIBUTE_PAIR attribute, value pairs.
+ */
+ unsigned int len = 12;
+ uint32_t data[] = {
+ wd->glpixmap,
+ GLX_FRONT_LEFT_EXT,
+ 0,
+ };
+ xcb_glx_vendor_private(w->sc->dpy->conn,
+ X_GLXvop_BindTexImageEXT,
+ 1,
+ len, (uint8_t*)data);
+ }
+#endif
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glDisable(GL_BLEND);
- //xcb_glx_swap_buffers(sc->dpy->conn, d->context_tag, sc->overlay);
glXSwapBuffers(sc->dpy->xlib_dpy, sc->overlay);
/* call the function we replaced in the chain */