MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / offScreenTest

Function offScreenTest

server/fakerut.cpp:1867–2392  ·  view source on GitHub ↗

Test off-screen rendering

Source from the content-addressed store, hash-verified

1865
1866// Test off-screen rendering
1867int offScreenTest(bool dbPixmap, bool doUseXFont, bool doSelectEvent)
1868{
1869 Display *dpy = NULL; Window win = 0; Pixmap pm0 = 0, pm1 = 0, pm2 = 0;
1870 GLXPixmap glxpm0 = 0, glxpm1 = 0; GLXPbuffer pb = 0; GLXWindow glxwin = 0;
1871 int dpyw, dpyh, lastFrame = 0, retval = 1;
1872 int glxattribs[] = { GLX_DOUBLEBUFFER, 1, GLX_RENDER_TYPE, GLX_RGBA_BIT,
1873 GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT | GLX_PBUFFER_BIT | GLX_WINDOW_BIT,
1874 GLX_RED_SIZE, 8, GLX_GREEN_SIZE, 8, GLX_BLUE_SIZE, 8, GLX_STENCIL_SIZE, 0,
1875 None };
1876 XVisualInfo *vis = NULL; GLXFBConfig config = 0, *configs = NULL;
1877 int n = 0;
1878 GLXContext ctx = 0, ctx2 = 0;
1879 XSetWindowAttributes swa;
1880 XFontStruct *fontInfo = NULL; int minChar = 0, maxChar = 0;
1881 int fontListBase = 0;
1882 GLuint fbo = 0, rbo = 0;
1883 TestColor clr(0);
1884
1885 printf("Off-screen rendering test\n\n");
1886
1887 try
1888 {
1889 if(!(dpy = XOpenDisplay(0))) THROW("Could not open display");
1890 dpyw = DisplayWidth(dpy, DefaultScreen(dpy));
1891 dpyh = DisplayHeight(dpy, DefaultScreen(dpy));
1892
1893 if(doUseXFont)
1894 {
1895 if(!(fontInfo = XLoadQueryFont(dpy, "fixed")))
1896 THROW("Could not load X font");
1897 minChar = fontInfo->min_char_or_byte2;
1898 maxChar = fontInfo->max_char_or_byte2;
1899 }
1900
1901 if((configs = glXChooseFBConfigSGIX(dpy, DefaultScreen(dpy), glxattribs,
1902 &n)) == NULL || n == 0)
1903 THROW("Could not find a suitable FB config");
1904 config = configs[0];
1905 int fbcid = cfgid(dpy, config);
1906 XFree(configs); configs = NULL;
1907 if((vis = glXGetVisualFromFBConfigSGIX(dpy, config)) == NULL)
1908 THROW("Could not find matching visual for FB config");
1909
1910 Window root = RootWindow(dpy, DefaultScreen(dpy));
1911 swa.colormap = XCreateColormap(dpy, root, vis->visual, AllocNone);
1912 swa.border_pixel = 0;
1913 swa.background_pixel = 0;
1914 swa.event_mask = 0;
1915 if((win = XCreateWindow(dpy, root, 0, 0, dpyw / 2, dpyh / 2, 0, vis->depth,
1916 InputOutput, vis->visual, CWBorderPixel | CWColormap | CWEventMask,
1917 &swa)) == 0)
1918 THROW("Could not create window");
1919 XMapWindow(dpy, win);
1920 if((glxwin = glXCreateWindow(dpy, config, win, NULL)) == 0)
1921 THROW("Could not create GLX window");
1922 checkDrawable(dpy, glxwin, dpyw / 2, dpyh / 2, -1, -1, fbcid);
1923
1924 if((pm0 = XCreatePixmap(dpy, win, dpyw / 2, dpyh / 2, vis->depth)) == 0

Callers 1

mainFunction · 0.70

Calls 15

XOpenDisplayFunction · 0.85
glXChooseFBConfigSGIXFunction · 0.85
cfgidFunction · 0.85
XFreeFunction · 0.85
XCreateWindowFunction · 0.85
glXCreateWindowFunction · 0.85
checkDrawableFunction · 0.85
glXCreateGLXPixmapFunction · 0.85
glXCreatePixmapFunction · 0.85
glXCreatePbufferFunction · 0.85
glXQueryDrawableFunction · 0.85

Tested by

no test coverage detected