Support for runtime plugins


In the changelog I have read:

“Support for runtime plugins (DLLs)
DNM - Needs to be tested on OSX / Linux platforms.
This is the first pass at moving plugins which provide specific hardware support into separate binaries from the main application. Eventually, Sixense, 3dconnexion, SDL2, and OpenVR should all be migrated into plugins.”

Very interesting. How I have to include the plugins in hifi?


Right now we’re working on support for ‘input plugins’ which provide access to controllers and ‘display plugins’ which provide mechanisms for sending the rendered scene to a given type of display, be it stereo, HMD, or regular 2D. We built these abstractions a while back in order to start supporting more hardware, like the Vive headset and controllers. However, when we did this work, we weren’t able to fully migrate to shared libraries loaded at runtime.

I’ve recently created a framework for doing this migration, moving over one of our output plugins (for the Oculus HMD) as a proof of concept. Eventually I’d like to get all of the plugins we currently have (except for a few core ones, like 2D and stereo displays) moved over to runtime plugins. This should hopefully improve stability as well as make it easier for people to build support for additional devices without having to build and run a fully custom version of interface all the time.

We’re not quite at the point where we can do this yet. The runtime plugins still have some build issues and limitations we’re solving. Once we’re done, we should have some documentation and example projects for people who want to extend the hardware support of the application.


@thanks Jherico, I like this concept. It really makes it easier for people to contribute in programming. Maybe over time there could be also creation and export/import plugins.