docs: def getOutputDevice(self, textureType):
          """
          * Returns platform- and texture-type specific adapter identification so that applications and the
          compositor are creating textures and swap chains on the same GPU. If an error occurs the device
          will be set to 0.
          pInstance is an optional parameter that is required only when textureType is TextureType_Vulkan.
          [D3D10/11/12 Only (D3D9 Not Supported)]
           Returns the adapter LUID that identifies the GPU attached to the HMD. The user should
           enumerate all adapters using IDXGIFactory::EnumAdapters and IDXGIAdapter::GetDesc to find
           the adapter with the matching LUID, or use IDXGIFactory4::EnumAdapterByLuid.
           The discovered IDXGIAdapter should be used to create the device and swap chain.
          [Vulkan Only]
           Returns the VkPhysicalDevice that should be used by the application.
           pInstance must be the instance the application will use to query for the VkPhysicalDevice.  The application
           must create the VkInstance with extensions returned by IVRCompositor::GetVulkanInstanceExtensionsRequired enabled.
          [macOS Only]
           For TextureType_IOSurface returns the id<MTLDevice> that should be used by the application.
           On 10.13+ for TextureType_OpenGL returns the 'registryId' of the renderer which should be used
            by the application. See Apple Technical Q&A QA1168 for information on enumerating GL Renderers, and the
            new kCGLRPRegistryIDLow and kCGLRPRegistryIDHigh CGLRendererProperty values in the 10.13 SDK.
           Pre 10.13 for TextureType_OpenGL returns 0, as there is no dependable way to correlate the HMDs MTLDevice
            with a GL Renderer.
          """
  
          fn = self.function_table.getOutputDevice
          pnDevice = c_uint64()
          pInstance = VkInstance_T()
          fn(byref(pnDevice), textureType, byref(pInstance))
          return pnDevice.value, pInstance