summaryrefslogtreecommitdiffstats
path: root/tools/gfx/immediate-renderer-base.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-03-31 11:35:17 -0700
committerGitHub <noreply@github.com>2021-03-31 11:35:17 -0700
commit3f1632a1450a5879f337b4bd178e48880cd583f8 (patch)
treedb4adc2ac0f6113dfd4a97a0e2f7a0c4312ef48b /tools/gfx/immediate-renderer-base.cpp
parent5fde038b1a6b3c8b335cd5b380c3ee8d15403052 (diff)
`gfx` explicit transient resource management. (#1774)
Diffstat (limited to 'tools/gfx/immediate-renderer-base.cpp')
-rw-r--r--tools/gfx/immediate-renderer-base.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/tools/gfx/immediate-renderer-base.cpp b/tools/gfx/immediate-renderer-base.cpp
index 9402f7834..97bc63634 100644
--- a/tools/gfx/immediate-renderer-base.cpp
+++ b/tools/gfx/immediate-renderer-base.cpp
@@ -1,5 +1,6 @@
#include "immediate-renderer-base.h"
#include "simple-render-pass-layout.h"
+#include "simple-transient-resource-heap.h"
#include "command-writer.h"
#include "core/slang-basic.h"
#include "core/slang-blob.h"
@@ -402,15 +403,6 @@ public:
virtual SLANG_NO_THROW const Desc& SLANG_MCALL getDesc() override { return m_desc; }
- virtual SLANG_NO_THROW Result SLANG_MCALL
- createCommandBuffer(ICommandBuffer** outCommandBuffer) override
- {
- RefPtr<CommandBufferImpl> newCmdBuffer = new CommandBufferImpl();
- newCmdBuffer->init(m_renderer);
- *outCommandBuffer = newCmdBuffer.detach();
- return SLANG_OK;
- }
-
virtual SLANG_NO_THROW void SLANG_MCALL
executeCommandBuffers(uint32_t count, ICommandBuffer* const* commandBuffers) override
{
@@ -425,12 +417,26 @@ public:
m_renderer->waitForGpu();
}
};
+
+using TransientResourceHeapImpl =
+ SimpleTransientResourceHeap<ImmediateRendererBase, CommandBufferImpl>;
+
}
ImmediateRendererBase::ImmediateRendererBase() {
m_queue = new CommandQueueImpl(this);
}
+SLANG_NO_THROW Result SLANG_MCALL ImmediateRendererBase::createTransientResourceHeap(
+ const ITransientResourceHeap::Desc& desc,
+ ITransientResourceHeap** outHeap)
+{
+ RefPtr<TransientResourceHeapImpl> result = new TransientResourceHeapImpl();
+ SLANG_RETURN_ON_FAIL(result->init(this, desc));
+ *outHeap = result.detach();
+ return SLANG_OK;
+}
+
SLANG_NO_THROW Result SLANG_MCALL ImmediateRendererBase::createCommandQueue(
const ICommandQueue::Desc& desc,
ICommandQueue** outQueue)