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
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/hydra/session.h')
-rw-r--r--intern/cycles/hydra/session.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/intern/cycles/hydra/session.h b/intern/cycles/hydra/session.h
new file mode 100644
index 00000000000..7e649c1847a
--- /dev/null
+++ b/intern/cycles/hydra/session.h
@@ -0,0 +1,59 @@
+/* SPDX-License-Identifier: Apache-2.0
+ * Copyright 2022 NVIDIA Corporation
+ * Copyright 2022 Blender Foundation */
+
+#pragma once
+
+#include "hydra/config.h"
+#include "util/thread.h"
+
+#include <pxr/imaging/hd/renderDelegate.h>
+
+HDCYCLES_NAMESPACE_OPEN_SCOPE
+
+struct SceneLock {
+ SceneLock(const PXR_NS::HdRenderParam *renderParam);
+ ~SceneLock();
+
+ CCL_NS::Scene *scene;
+
+ private:
+ CCL_NS::thread_scoped_lock sceneLock;
+};
+
+class HdCyclesSession final : public PXR_NS::HdRenderParam {
+ public:
+ HdCyclesSession(CCL_NS::Session *session_);
+ HdCyclesSession(const CCL_NS::SessionParams &params);
+ ~HdCyclesSession() override;
+
+ void UpdateScene();
+
+ PXR_NS::HdRenderPassAovBinding GetDisplayAovBinding() const
+ {
+ return _displayAovBinding;
+ }
+
+ void SetDisplayAovBinding(const PXR_NS::HdRenderPassAovBinding &aovBinding)
+ {
+ _displayAovBinding = aovBinding;
+ }
+
+ const PXR_NS::HdRenderPassAovBindingVector &GetAovBindings() const
+ {
+ return _aovBindings;
+ }
+
+ void SyncAovBindings(const PXR_NS::HdRenderPassAovBindingVector &aovBindings);
+
+ void RemoveAovBinding(PXR_NS::HdRenderBuffer *renderBuffer);
+
+ CCL_NS::Session *session;
+
+ private:
+ const bool _ownCyclesSession;
+ PXR_NS::HdRenderPassAovBindingVector _aovBindings;
+ PXR_NS::HdRenderPassAovBinding _displayAovBinding;
+};
+
+HDCYCLES_NAMESPACE_CLOSE_SCOPE