Hydra in GafferHQ not working: "HdSt requires Hgi HdDriver"

Hi Community !

I am reaching out to you as I am quite stuck. I am trying to add Hydra in GafferHQ. However I am facing a weird situation. Given my test code:

#include "pxr/imaging/hgi/tokens.h"
#include "pxr/imaging/hdSt/renderDelegate.h"
#include "pxr/imaging/hgi/hgi.h"
#include "pxr/imaging/hd/engine.h"

int main()
{
    pxr::HgiUniquePtr hgi = pxr::Hgi::CreatePlatformDefaultHgi();
    pxr::HdDriver driver = pxr::HdDriver{pxr::HgiTokens->renderDriver, pxr::VtValue( hgi.get() ) };

    std::cout << "driver.name: " << (driver.name == pxr::HgiTokens->renderDriver) << std::endl;
    std::cout << "driver.IsHolding: " << ( driver.driver.IsHolding<pxr::Hgi*>()) << std::endl;

    pxr::HdStRenderDelegate renderDelegate;
    renderDelegate.SetDrivers({&driver});
    return 0;
}

It compiles and runs fine. However I cannot make it run in GafferHQ code. the problem:

driver.name: 1
driver.IsHolding: 1
Coding Error: in SetDrivers at line 251 of /Users/raphaeljouretz/Downloads/OpenUSD-24.08/pxr/imaging/hdSt/renderDelegate.cpp -- Failed verification: ' _hgi ' -- HdSt requires Hgi HdDriver
zsh: segmentation fault ./gaffer

From my debugging, it seems the condition IsHolding<Hgi*>is failing here:

Which is very strange as it seems good from my std::cout debug message before entering renderDelegate.SetDrivers.

Do you have any idea what could happen to the hdSt? I guess GafferHQ is setting something that interferes with Hydra, but I cannot pinpoint what.

What I tried:

  • Compile my test code with freshly compiled OpenUSD lib → working
  • Compile my test code with GafferHQ OpenUSD lib → working
  • Replace GafferHQ OpenUSD lib by freshly compiled OpenUSD lib → still not working
  • Put my test code in various place within GafferHQ code → still not working.

Thank you very much,
Raphael

It’s possible that you’re running into this bug. I’ve seen setting the Hgi fail due to this before.

Jerry