From 3f1632a1450a5879f337b4bd178e48880cd583f8 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 31 Mar 2021 11:35:17 -0700 Subject: `gfx` explicit transient resource management. (#1774) --- tools/render-test/render-test-main.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'tools/render-test/render-test-main.cpp') 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 m_device; ComPtr m_queue; + ComPtr m_transientHeap; ComPtr m_renderPass; ComPtr m_inputLayout; ComPtr 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 commandBuffer; - SLANG_RETURN_ON_FAIL(m_queue->createCommandBuffer(commandBuffer.writeRef())); + SLANG_RETURN_ON_FAIL( + m_transientHeap->createCommandBuffer(commandBuffer.writeRef())); ComPtr 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(); -- cgit v1.2.3