I started a hunt for this bug. The mesa xdemo manywin gives the same intel error. The code is much easier, And there I could find what happens.
Shortly the problem is multiple XOpenDisplay calls + opengl context sharing. When I changed manywin to use one XOpenDisplay call and reuse the Display struct pointer from that, it started to work.
In detail (I didn't know much about OpenGL and don't really know the X Server so it might say obvious things):
1) Display *XOpenDisplay(...) calls give another pointer back every time, even for same display.
2) __glXInitialize(Display* dpy), which should initialize displays for OpenGl use the address of the Display struct to store which displays has been initialized, so for every pointer from XOpenDisplay it initializes the display, even multiple times the same one, if you use XOpenDisplay for the same display, which is the situation in manywin
3) for every screen intel-drm creates a bufmgr to store buffer-objects, in our case it means different bufmgr for windows on same display
4) bufmgr-s cannot share objects, but manywin use a shared context for the windows
5) when the bufmgr creates the exec_buffer (which is the code that the GPU will run), it cannot reference the shared context's object, and drm gives an ENOENT error, which is translated to "No such file or directory."
I filed a bug to mesa:
https://bugs.freedesktop.org/show_bug.cgi?id=54971If the problem is the same, then a workaround is to limit the XOpenDisplay and similar calls count to 1.