https://bugs.winehq.org/show_bug.cgi?id=50920
Bug ID: 50920 Summary: Implement a 32-bit OpenGL wrapper that forwards calls to a 64-bit display window through IPC Product: Wine Version: 5.5 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: opengl Assignee: wine-bugs@winehq.org Reporter: milasudril@gmail.com Distribution: Ubuntu
It is getting harder to run 32-bit OpenGL apps. In particular If you install the CUDA driver for NVIDIA, you will only get the 64-bit driver. A possible solution would be to create a separate 64-bit process, that is responsible to forward OpenGL calls from the 32-bit application to the 64-bit driver.
Some thoughts about implementation possibilities:
* OpenGL never use pointers as handles, but 32-bit ints. Thus it should be possible to implement a working IPC solution without any pointer translation table.
* Immediate mode (legacy) OpenGL, will naturally generate more IPC calls. However, these functions could be implemented in wine, and glEnd could be the trigger to flush any buffers and to issue the IPC call.
Some thoughts about drawbacks:
* Increased number of context switches which causes increased latency. However, it is possible to use IPC to have a 32-bit WINE process communicating with JACK, with sufficiently low latency for realtime audio, which has slightly higher requirements on low latency then video output, so it should be feasible.
Some thoughts about implementation difficulties:
* Each OpenGL command will need an id, but perhaps this could be auto-generated