diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2021-01-26 13:32:03 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-26 13:32:03 -0800 |
| commit | a90c850735664e2928e4cc961442a126c6859b97 (patch) | |
| tree | 8b5e12113319ae87c57f5e616408eb955fe85a2c /tools/render-test/render-test-main.cpp | |
| parent | 50676c741e10ffe6f710c5de86387eaacd274a9a (diff) | |
Integrate reflection more deeply into gfx layer (#1677)
Diffstat (limited to 'tools/render-test/render-test-main.cpp')
| -rw-r--r-- | tools/render-test/render-test-main.cpp | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp index 926887a77..6e35db639 100644 --- a/tools/render-test/render-test-main.cpp +++ b/tools/render-test/render-test-main.cpp @@ -111,6 +111,8 @@ protected: Options::ShaderProgramType shaderType, const ShaderCompilerUtil::Input& input); + virtual void finalizeImpl(); + uint64_t m_startTicks; // variables for state to be used for rendering... @@ -165,6 +167,8 @@ public: virtual Result writeBindingOutput(BindRoot* bindRoot, const char* fileName) override; protected: + virtual void finalizeImpl() SLANG_OVERRIDE; + ComPtr<IShaderObject> m_programVars; ShaderOutputPlan m_outputPlan; }; @@ -586,12 +590,11 @@ SlangResult ShaderObjectRenderTestApp::initialize( // Slang's reflection API to tell us what the parameters of the program are. // auto slangReflection = (slang::ProgramLayout*) spGetReflection(m_compilationOutput.output.getRequestForReflection()); - ComPtr<IShaderObjectLayout> programLayout = renderer->createRootShaderObjectLayout(slangReflection); // Once we have determined the layout of all the parameters we need to bind, // we will create a shader object to use for storing and binding those parameters. // - m_programVars = renderer->createRootShaderObject(programLayout); + m_programVars = renderer->createRootShaderObject(m_shaderProgram); // Now we need to assign from the input parameter data that was parsed into // the program vars we allocated. @@ -601,9 +604,6 @@ SlangResult ShaderObjectRenderTestApp::initialize( m_renderer = renderer; - // TODO(tfoley): use each API's reflection interface to query the constant-buffer size needed -// m_constantBufferSize = 16 * sizeof(float); - { switch(m_options.shaderType) { @@ -614,7 +614,6 @@ SlangResult ShaderObjectRenderTestApp::initialize( case Options::ShaderProgramType::Compute: { ComputePipelineStateDesc desc; - desc.rootShaderObjectLayout = programLayout.get(); desc.program = m_shaderProgram; m_pipelineState = renderer->createComputePipelineState(desc); @@ -648,7 +647,6 @@ SlangResult ShaderObjectRenderTestApp::initialize( SLANG_RETURN_ON_FAIL(renderer->createBufferResource(IResource::Usage::VertexBuffer, vertexBufferDesc, kVertexData, m_vertexBuffer.writeRef())); GraphicsPipelineStateDesc desc; - desc.rootShaderObjectLayout = programLayout.get(); desc.program = m_shaderProgram; desc.inputLayout = inputLayout; @@ -662,6 +660,12 @@ SlangResult ShaderObjectRenderTestApp::initialize( return m_pipelineState ? SLANG_OK : SLANG_FAIL; } +void ShaderObjectRenderTestApp::finalizeImpl() +{ + m_programVars = nullptr; + RenderTestApp::finalizeImpl(); +} + Result RenderTestApp::_initializeShaders( SlangSession* session, IRenderer* renderer, @@ -730,6 +734,18 @@ void RenderTestApp::runCompute() void RenderTestApp::finalize() { + finalizeImpl(); + + m_inputLayout = nullptr; + m_vertexBuffer = nullptr; + m_shaderProgram = nullptr; + m_pipelineState = nullptr; + + m_renderer = nullptr; +} + +void RenderTestApp::finalizeImpl() +{ } Result LegacyRenderTestApp::writeBindingOutput(BindRoot* bindRoot, const char* fileName) @@ -1328,7 +1344,9 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi app = new LegacyRenderTestApp(); SLANG_RETURN_ON_FAIL(app->initialize(session, renderer, options, input)); window->show(); - return window->runLoop(app); + SLANG_RETURN_ON_FAIL(window->runLoop(app)); + app->finalize(); + return SLANG_OK; } } |
