Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2022-04-29 19:03:03 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-04-29 19:08:41 +0300
commita6f951b4649a126de22131833ca38d74f056d928 (patch)
tree44583de60a42512974cae2aeba7f11a2c63c567c /intern
parente0315a5ef0fda1773d27c61f439b5598937a3357 (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.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/hydra/CMakeLists.txt9
-rw-r--r--intern/cycles/hydra/render_delegate.cpp2
-rw-r--r--intern/cycles/hydra/render_pass.cpp9
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
}
}