summaryrefslogtreecommitdiffstats
path: root/tools/render-test/render-test-main.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2021-01-26 13:32:03 -0800
committerGitHub <noreply@github.com>2021-01-26 13:32:03 -0800
commita90c850735664e2928e4cc961442a126c6859b97 (patch)
tree8b5e12113319ae87c57f5e616408eb955fe85a2c /tools/render-test/render-test-main.cpp
parent50676c741e10ffe6f710c5de86387eaacd274a9a (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.cpp34
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;
}
}