Hi Arthur,
As far as I can see OpenGL applications are working somehow (here is small proof: https://twitter.com/UnigineBench/status/922703436436688896).
Hello @Ybalrid, yes, OpenGL can be used with SteamVR on linux and a working example can be found at https://github.com/ValveSoftware/openvr/tree/master/samples/hellovr_opengl.
The video driver needs to support EXT_memory_object_fd to do a direct handoff.
To be clearer, the SteamVR Compositor is a Vulkan application, it only renders to the HMD using Vulkan. In the beginning there was no good way of sharing textures between OpenGL and Vulkan and back then the SteamVR Compositor copied the textures via the CPU, which was very slow.
By now EXT_memory_object_fd is used fully automatically, and as a client you don't need to do anything to have it enabled. As long as the OpenGL driver supports the extension (all recent ones do), your OpenGL textures are directly used by Vulkan.
What you really submit to OpenVR is a the OpenGL id to a texture. In that example, look for the calls to submit() https://github.com/ValveSoftware/openvr/blob/ebdea152f8aac77e9a6db29682b81d762159df7e/samples/hellovr_opengl/hellovr_opengl_main.cpp#L709-L712
(I think the SteamVR Compositor will create an OpenGL context that is "shared" with the OpenGL context of client applications, and when it enables EXT_memory_object_fd in its own context there, the SteamVR Compositor can use Vulkan to access the texture too, but that's just a guess).
Okay, I think the way it works internally is clearer to me.
So, next time I have the occasion, I'll try to make the OpenVR renderer of my game engine works under Linux with a Vive ;-)
Nothing extracted yet.
Hi, maybe I'm misunderstanding something, but it seems that right now OpenVR is compatible with Linux, but only through Vulkan?
Does the client game needs to be rendering via the Vulkan API to target OpenVR, or is it possible for an OpenGL application to give it's rendered buffer to OpenVR directly under Linux (as it's possible to do under Windows)?
I haven't found any good answer after some googling, if this point is explained somewhere I'm sorry ^^".