diff options
| author | Yong He <yonghe@outlook.com> | 2021-03-31 11:35:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-31 11:35:17 -0700 |
| commit | 3f1632a1450a5879f337b4bd178e48880cd583f8 (patch) | |
| tree | db4adc2ac0f6113dfd4a97a0e2f7a0c4312ef48b /tools/render-test | |
| parent | 5fde038b1a6b3c8b335cd5b380c3ee8d15403052 (diff) | |
`gfx` explicit transient resource management. (#1774)
Diffstat (limited to 'tools/render-test')
| -rw-r--r-- | tools/render-test/render-test-main.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp index 87d9a246d..27311d67a 100644 --- a/tools/render-test/render-test-main.cpp +++ b/tools/render-test/render-test-main.cpp @@ -119,6 +119,7 @@ protected: ComPtr<IDevice> m_device; ComPtr<ICommandQueue> m_queue; + ComPtr<ITransientResourceHeap> m_transientHeap; ComPtr<IRenderPassLayout> m_renderPass; ComPtr<IInputLayout> m_inputLayout; ComPtr<IBufferResource> m_vertexBuffer; @@ -530,9 +531,13 @@ Result RenderTestApp::_initializeShaders( void RenderTestApp::_initializeRenderPass() { + ITransientResourceHeap::Desc transientHeapDesc = {}; + transientHeapDesc.constantBufferSize = 4096 * 1024; + m_transientHeap = m_device->createTransientResourceHeap(transientHeapDesc); + ICommandQueue::Desc queueDesc = {ICommandQueue::QueueType::Graphics}; m_queue = m_device->createCommandQueue(queueDesc); - + gfx::ITextureResource::Desc depthBufferDesc; depthBufferDesc.setDefaults(gfx::IResource::Usage::DepthWrite); depthBufferDesc.init2D( @@ -695,7 +700,8 @@ Result RenderTestApp::writeBindingOutput(const char* fileName) SLANG_RETURN_ON_FAIL(m_device->createBufferResource(IResource::Usage::CopyDest, stagingBufferDesc, nullptr, stagingBuffer.writeRef())); ComPtr<ICommandBuffer> commandBuffer; - SLANG_RETURN_ON_FAIL(m_queue->createCommandBuffer(commandBuffer.writeRef())); + SLANG_RETURN_ON_FAIL( + m_transientHeap->createCommandBuffer(commandBuffer.writeRef())); ComPtr<IResourceCommandEncoder> encoder; commandBuffer->encodeResourceCommands(encoder.writeRef()); @@ -704,7 +710,7 @@ Result RenderTestApp::writeBindingOutput(const char* fileName) commandBuffer->close(); m_queue->executeCommandBuffer(commandBuffer); - m_queue->wait(); + m_transientHeap->synchronizeAndReset(); m_device->readBufferResource(stagingBuffer, 0, bufferSize, blob.writeRef()); } @@ -743,7 +749,7 @@ Result RenderTestApp::writeScreen(const char* filename) Result RenderTestApp::update() { - auto commandBuffer = m_queue->createCommandBuffer(); + auto commandBuffer = m_transientHeap->createCommandBuffer(); if (m_options.shaderType == Options::ShaderProgramType::Compute) { auto encoder = commandBuffer->encodeComputeCommands(); |
