summaryrefslogtreecommitdiff
path: root/tools/render-test/slang-support.h
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2020-12-03 08:23:05 -0800
committerGitHub <noreply@github.com>2020-12-03 08:23:05 -0800
commit44c0a56974b664e50b2cb8cb6f10740b19c4e02f (patch)
treed6141003be376bdb2c0037178b649b6b2aae673e /tools/render-test/slang-support.h
parentad5dda9261bae63e32bcb914b109fcb5c92faf25 (diff)
Add shader object parameter binding to renderer_test. (#1622)
* Add shader object parameter binding to renderer_test. * remove multiple-definitions.hlsl * Fix cuda implementation. Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'tools/render-test/slang-support.h')
-rw-r--r--tools/render-test/slang-support.h30
1 files changed, 22 insertions, 8 deletions
diff --git a/tools/render-test/slang-support.h b/tools/render-test/slang-support.h
index 5e38c8c69..a0a7ef276 100644
--- a/tools/render-test/slang-support.h
+++ b/tools/render-test/slang-support.h
@@ -10,6 +10,8 @@
namespace renderer_test {
+gfx::StageType translateStage(SlangStage slangStage);
+
struct ShaderCompilerUtil
{
struct Input
@@ -42,19 +44,21 @@ struct ShaderCompilerUtil
}
kernelDescs.clear();
- if (request && session)
+ if (m_requestForKernels && session)
+ {
+ spDestroyCompileRequest(m_requestForKernels);
+ }
+ if (m_extraRequestForReflection && session)
{
- spDestroyCompileRequest(request);
+ spDestroyCompileRequest(m_extraRequestForReflection);
}
session = nullptr;
- request = nullptr;
+ m_requestForKernels = nullptr;
+ m_extraRequestForReflection = nullptr;
}
~Output()
{
- if (request && session)
- {
- spDestroyCompileRequest(request);
- }
+ reset();
}
Slang::Index findKernelDescIndex(gfx::StageType stage) const
@@ -71,7 +75,16 @@ struct ShaderCompilerUtil
List<ShaderProgram::KernelDesc> kernelDescs;
ShaderProgram::Desc desc;
- SlangCompileRequest* request = nullptr;
+
+ /// Compile request that owns the lifetime of compiled kernel code.
+ SlangCompileRequest* m_requestForKernels = nullptr;
+
+ /// Compile request that owns the lifetime of reflection information.
+ SlangCompileRequest* m_extraRequestForReflection = nullptr;
+
+ SlangCompileRequest* getRequestForKernels() const { return m_requestForKernels; }
+ SlangCompileRequest* getRequestForReflection() const { return m_extraRequestForReflection ? m_extraRequestForReflection : m_requestForKernels; }
+
SlangSession* session = nullptr;
};
@@ -87,6 +100,7 @@ struct ShaderCompilerUtil
static SlangResult readSource(const Slang::String& inSourcePath, List<char>& outSourceText);
+ static SlangResult _compileProgramImpl(SlangSession* session, const Options& options, const Input& input, const ShaderCompileRequest& request, Output& out);
static SlangResult compileProgram(SlangSession* session, const Options& options, const Input& input, const ShaderCompileRequest& request, Output& out);
};