diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-04-29 19:03:03 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-04-29 19:08:41 +0300 |
commit | a6f951b4649a126de22131833ca38d74f056d928 (patch) | |
tree | 44583de60a42512974cae2aeba7f11a2c63c567c | |
parent | e0315a5ef0fda1773d27c61f439b5598937a3357 (diff) |
Cycles: make Hydra display driver optional, for USD without OpenGL
OpenGL support was removed from Blender's USD precompiled libraries. This
is currently only useful when building against other applications anyway.
-rw-r--r-- | intern/cycles/hydra/CMakeLists.txt | 9 | ||||
-rw-r--r-- | intern/cycles/hydra/render_delegate.cpp | 2 | ||||
-rw-r--r-- | intern/cycles/hydra/render_pass.cpp | 9 |
3 files changed, 16 insertions, 4 deletions
diff --git a/intern/cycles/hydra/CMakeLists.txt b/intern/cycles/hydra/CMakeLists.txt index 72d5d0e3bf7..7b7ea43cfe5 100644 --- a/intern/cycles/hydra/CMakeLists.txt +++ b/intern/cycles/hydra/CMakeLists.txt @@ -26,7 +26,6 @@ set(INC_HD_CYCLES camera.h config.h curves.h - display_driver.h field.h geometry.h geometry.inl @@ -48,7 +47,6 @@ set(SRC_HD_CYCLES attribute.cpp curves.cpp camera.cpp - display_driver.cpp field.cpp instancer.cpp light.cpp @@ -73,6 +71,13 @@ if(WITH_OPENVDB) ) endif() +# Blender libraries do not include hgiGL, so build without display driver then. +if(EXISTS ${USD_INCLUDE_DIR}/pxr/imaging/hgiGL) + add_definitions(-DWITH_HYDRA_DISPLAY_DRIVER) + list(APPEND SRC_HD_CYCLES display_driver.cpp) + list(APPEND INC_HD_CYCLES display_driver.h) +endif() + include_directories(${INC}) include_directories(SYSTEM ${INC_SYS}) diff --git a/intern/cycles/hydra/render_delegate.cpp b/intern/cycles/hydra/render_delegate.cpp index faefe9382e9..9ae0241260c 100644 --- a/intern/cycles/hydra/render_delegate.cpp +++ b/intern/cycles/hydra/render_delegate.cpp @@ -155,7 +155,7 @@ void HdCyclesDelegate::SetDrivers(const HdDriverVector &drivers) bool HdCyclesDelegate::IsDisplaySupported() const { -#ifdef _WIN32 +#if defined(_WIN32) && defined(WITH_HYDRA_DISPLAY_DRIVER) return _hgi && _hgi->GetAPIName() == HgiTokens->OpenGL; #else return false; diff --git a/intern/cycles/hydra/render_pass.cpp b/intern/cycles/hydra/render_pass.cpp index 8f6f934b898..82fd6eff004 100644 --- a/intern/cycles/hydra/render_pass.cpp +++ b/intern/cycles/hydra/render_pass.cpp @@ -4,14 +4,19 @@ #include "hydra/render_pass.h" #include "hydra/camera.h" -#include "hydra/display_driver.h" #include "hydra/output_driver.h" #include "hydra/render_buffer.h" #include "hydra/render_delegate.h" #include "hydra/session.h" + +#ifdef WITH_HYDRA_DISPLAY_DRIVER +# include "hydra/display_driver.h" +#endif + #include "scene/camera.h" #include "scene/integrator.h" #include "scene/scene.h" + #include "session/session.h" #include <pxr/imaging/hd/renderPassState.h> @@ -32,8 +37,10 @@ HdCyclesRenderPass::HdCyclesRenderPass(HdRenderIndex *index, const auto renderDelegate = static_cast<const HdCyclesDelegate *>( GetRenderIndex()->GetRenderDelegate()); if (renderDelegate->IsDisplaySupported()) { +#ifdef WITH_HYDRA_DISPLAY_DRIVER session->set_display_driver( make_unique<HdCyclesDisplayDriver>(renderParam, renderDelegate->GetHgi())); +#endif } } |