vkdemo
Summary
The vkdemo
plugin serves as a stand-in for an actual application when ILLIXR is run as a standalone application without an actual OpenXR application. vkdemo
will subscribe to several Switchboard plugs, render a simple, hard-coded 3D scene (in fact, the same 3D scene that is included in the debugview
plugin) and publish the results to the Switchboard API. vkdemo
is intended to be as lightweight as possible, serving as a baseline debug "dummy application". During development, it is useful to have some content being published to the HMD display without needing to use the full OpenXR interface; vkdemo
fills this requirement.
Phonebook Service
vkdemo
is registered as a service in phonebook, conforming to the app
render pass interface. Three functions are exposed:
* setup(VkRenderPass render_pass, uint32_t subpass)
initializes the required Vulkan pipeline and resources given a specific render pass and subpass, to which vkdemo
binds to
* update_uniforms(const pose_type render_pose)
updates the uniform buffer with the given pose, which is used to render the scene. This must be called before record_command_buffer
is called.
* record_command_buffer(VkCommandBuffer commandBuffer, int eye)
records the commands into a given command buffer that would perform the rendering for one eye, for which 0 is left and 1 is right. To achieve stereoscopic rendering, the function is called twice, once for each eye.
* virtual void destroy()
cleans up the resources allocated by vkdemo
. Currently, this part is not yet implemented.