diff options
Diffstat (limited to 'tools/render-test/render.h')
| -rw-r--r-- | tools/render-test/render.h | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/tools/render-test/render.h b/tools/render-test/render.h index 807fabf23..2ad736c27 100644 --- a/tools/render-test/render.h +++ b/tools/render-test/render.h @@ -32,6 +32,18 @@ enum class PipelineType CountOf, }; +enum class StageType +{ + Unknown, + Vertex, + Hull, + Domain, + Geometry, + Fragment, + Compute, + CountOf, +}; + enum class RendererType { Unknown, @@ -63,7 +75,32 @@ enum class BindingStyle class ShaderProgram: public Slang::RefObject { - public: +public: + + struct KernelDesc + { + StageType stage; + void const* codeBegin; + void const* codeEnd; + + UInt getCodeSize() const { return (char const*)codeEnd - (char const*)codeBegin; } + }; + + struct Desc + { + PipelineType pipelineType; + KernelDesc const* kernels; + Int kernelCount; + + /// Find and return the kernel for `stage`, if present. + KernelDesc const* findKernel(StageType stage) const + { + for(Int ii = 0; ii < kernelCount; ++ii) + if(kernels[ii].stage == stage) + return &kernels[ii]; + return nullptr; + } + }; }; struct ShaderCompileRequest @@ -84,8 +121,6 @@ struct ShaderCompileRequest struct EntryPoint { char const* name = nullptr; - char const* profile = nullptr; - SourceInfo source; }; @@ -96,12 +131,6 @@ struct ShaderCompileRequest Slang::List<Slang::String> entryPointTypeArguments; }; -class ShaderCompiler -{ -public: - virtual ShaderProgram* compileProgram(ShaderCompileRequest const& request) = 0; -}; - /// Different formats of things like pixels or elements of vertices /// NOTE! Any change to this type (adding, removing, changing order) - must also be reflected in changes to RendererUtil enum class Format @@ -496,7 +525,8 @@ public: virtual InputLayout* createInputLayout(const InputElementDesc* inputElements, UInt inputElementCount) = 0; virtual BindingState* createBindingState(const BindingState::Desc& desc) { return nullptr; } - virtual ShaderCompiler* getShaderCompiler() = 0; + + virtual ShaderProgram* createProgram(const ShaderProgram::Desc& desc) = 0; virtual void* map(BufferResource* buffer, MapFlavor flavor) = 0; virtual void unmap(BufferResource* buffer) = 0; |
