HdStorm + Vulkan + Qt QML

Hi,

We’re building a USD/Hydra viewer that integrates HdStorm with Qt QML/QtQuick via Vulkan. Our current architecture:

  1. Device ownership: HgiVulkan creates the unique VkDevice/VkInstance/VkPhysicalDevice
  2. AOV handoff: UsdStage render produces HdRenderBuffer::GetResource() (VkImage), borrowed as GpuTexture via HgiTexture* opaque handle
  3. Qt import: QRhi receives the same VkImage via QRhiTexture::createFrom using QQuickGraphicsDevice::fromDeviceObjects
  4. Formats: Rgba16Float (scene linear), Rgba32Float (scopes), Rgba8Unorm (display)

Current state: The AOV is borrowed (no CPU readback copy), but it’s still a transfer between two command queues (HdStorm render + Qt display).

Questions:

  1. Is there a pattern in the OpenUSD ecosystem for zero-copy AOV display in Qt — i.e., same render pass output consumed directly by Qt’s blit without intermediate queue transfer?
  2. Does HdStorm currently support HDR framebuffers (FP16/FP32 swapchain, tone-mapping)? Is there reference code?
  3. Beyond VK_KHR_external_memory, are there newer interop standards (e.g., VK_KHR_timeline_semaphore for queue synchronization) that would improve this pattern?

Thanks!

Hey

I am working on kinda same thing in this project with USD

next video is exporting usda file from the graph (but not reached to AOV yet)
but in this case I am using DirectX and CUDA
I’ll share my experience asap I have found anything useful

I know this is not useful for you, but maybe good to know similaities between renderers to get more idea

Hi,
Did you write your own render delegate, or are you using HdStorm?
My project is still very simple; I’m just studying and learning at this stage.
Could you describe how you integrated Hydra with Qt?

hi

oh, no, the renderer is DirectX12, but I have plan to use hydra as the renderer too (for future), but I’m sure, I had some research about integrating Hydra to Qt, I will share if I could find it

what I am sure is that Maya, Houdini, and Katana integrated hydra in their viewport
but source is not available

but I recommend you to check out the OpenUSD source code and study the usdview (usdviewq) that it is using hydra too, and it should give you some clues, plus it is Qt

…you_dev_dir\OpenUSD\pxr\usdImaging\usdviewq\hydraObserver.h

Thanks for sharing!
I actually spent some time analyzing the usdview source code and picked up a few good insights from it. The main challenge is that usdview relies on OpenGL, whereas my setup is built on Vulkan.
I ended up leveraging some of Autodesk’s research on their Hydra + Vulkan integration, and I’ve already incorporated HVT into the project to handle gizmos, grids, and viewport utilities.
I’ll keep experimenting with a few alternative approaches.
https://youtu.be/GtlJCsg11KA?si=j7X6VtPOXYbyvhbz

nice

Yes, because usdview using usdimaginggl and usdimaginggl control the hydra, it all depends on OpenGL integration
I guess you should think to usdimagingvk (make it yourself) or something like that

good luck btw