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