summaryrefslogtreecommitdiff
path: root/tools/render-test
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-01-11 09:11:52 -0800
committerGitHub <noreply@github.com>2021-01-11 09:11:52 -0800
commit5554777188225266e2295db3588f6cb17cae0c4d (patch)
tree9d15992cd24d752cde1047745cf75a25e841f494 /tools/render-test
parente24c5a6cb9c3347477b83abe084a09ae8f9fde0a (diff)
Make `gfx::Renderer` a COM interface. (#1653)
* Make `gfx::Renderer` a COM interface. This is a first step towards making the `gfx` library expose a COM compatible DLL interface. Remaining classes will come as separate PRs. * Fixup project files * Fix calling conventions * Make gfx::create*Renderer() functions increase ref count by 1 * Make renderer createFunc return via out parameter
Diffstat (limited to 'tools/render-test')
-rw-r--r--tools/render-test/render-test-main.cpp30
-rw-r--r--tools/render-test/shader-renderer-util.cpp32
-rw-r--r--tools/render-test/shader-renderer-util.h34
3 files changed, 69 insertions, 27 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp
index 1c8dc1d72..533932eab 100644
--- a/tools/render-test/render-test-main.cpp
+++ b/tools/render-test/render-test-main.cpp
@@ -90,7 +90,7 @@ public:
// code, and then create the API objects we need for rendering.
virtual Result initialize(
SlangSession* session,
- Renderer* renderer,
+ IRenderer* renderer,
const Options& options,
const ShaderCompilerUtil::Input& input) = 0;
void runCompute();
@@ -107,7 +107,7 @@ protected:
/// Called in initialize
Result _initializeShaders(
SlangSession* session,
- Renderer* renderer,
+ IRenderer* renderer,
Options::ShaderProgramType shaderType,
const ShaderCompilerUtil::Input& input);
@@ -116,7 +116,7 @@ protected:
// variables for state to be used for rendering...
uintptr_t m_constantBufferSize;
- RefPtr<Renderer> m_renderer;
+ ComPtr<IRenderer> m_renderer;
RefPtr<InputLayout> m_inputLayout;
RefPtr<BufferResource> m_vertexBuffer;
@@ -137,7 +137,7 @@ public:
virtual void setProjectionMatrix() SLANG_OVERRIDE;
virtual Result initialize(
SlangSession* session,
- Renderer* renderer,
+ IRenderer* renderer,
const Options& options,
const ShaderCompilerUtil::Input& input) SLANG_OVERRIDE;
@@ -159,7 +159,7 @@ public:
virtual void setProjectionMatrix() SLANG_OVERRIDE;
virtual Result initialize(
SlangSession* session,
- Renderer* renderer,
+ IRenderer* renderer,
const Options& options,
const ShaderCompilerUtil::Input& input) SLANG_OVERRIDE;
virtual Result writeBindingOutput(BindRoot* bindRoot, const char* fileName) override;
@@ -170,7 +170,7 @@ protected:
};
SlangResult _assignVarsFromLayout(
- Renderer* renderer,
+ IRenderer* renderer,
ShaderObject* shaderObject,
ShaderInputLayout const& layout,
ShaderOutputPlan& ioOutputPlan,
@@ -421,7 +421,7 @@ SlangResult _assignVarsFromLayout(
void LegacyRenderTestApp::applyBinding(PipelineType pipelineType)
{
- m_bindingState->apply(m_renderer.Ptr(), pipelineType);
+ m_bindingState->apply(m_renderer.get(), pipelineType);
}
void ShaderObjectRenderTestApp::applyBinding(PipelineType pipelineType)
@@ -431,7 +431,7 @@ void ShaderObjectRenderTestApp::applyBinding(PipelineType pipelineType)
SlangResult LegacyRenderTestApp::initialize(
SlangSession* session,
- Renderer* renderer,
+ IRenderer* renderer,
const Options& options,
const ShaderCompilerUtil::Input& input)
{
@@ -536,7 +536,7 @@ SlangResult LegacyRenderTestApp::initialize(
SlangResult ShaderObjectRenderTestApp::initialize(
SlangSession* session,
- Renderer* renderer,
+ IRenderer* renderer,
const Options& options,
const ShaderCompilerUtil::Input& input)
{
@@ -631,7 +631,11 @@ SlangResult ShaderObjectRenderTestApp::initialize(
return m_pipelineState ? SLANG_OK : SLANG_FAIL;
}
-Result RenderTestApp::_initializeShaders(SlangSession* session, Renderer* renderer, Options::ShaderProgramType shaderType, const ShaderCompilerUtil::Input& input)
+Result RenderTestApp::_initializeShaders(
+ SlangSession* session,
+ IRenderer* renderer,
+ Options::ShaderProgramType shaderType,
+ const ShaderCompilerUtil::Input& input)
{
SLANG_RETURN_ON_FAIL(ShaderCompilerUtil::compileWithLayout(session, m_options, input, m_compilationOutput));
m_shaderInputLayout = m_compilationOutput.layout;
@@ -1211,12 +1215,12 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
#endif
}
- Slang::RefPtr<Renderer> renderer;
+ Slang::ComPtr<IRenderer> renderer;
{
RendererUtil::CreateFunc createFunc = RendererUtil::getCreateFunc(options.rendererType);
if (createFunc)
{
- renderer = createFunc();
+ createFunc(renderer.writeRef());
}
if (!renderer)
@@ -1228,7 +1232,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
return SLANG_FAIL;
}
- Renderer::Desc desc;
+ IRenderer::Desc desc;
desc.width = gWindowWidth;
desc.height = gWindowHeight;
desc.adapter = options.adapter;
diff --git a/tools/render-test/shader-renderer-util.cpp b/tools/render-test/shader-renderer-util.cpp
index 5e77cf1fd..d24909bca 100644
--- a/tools/render-test/shader-renderer-util.cpp
+++ b/tools/render-test/shader-renderer-util.cpp
@@ -7,7 +7,7 @@ namespace renderer_test {
using namespace Slang;
using Slang::Result;
-void BindingStateImpl::apply(Renderer* renderer, PipelineType pipelineType)
+void BindingStateImpl::apply(IRenderer* renderer, PipelineType pipelineType)
{
renderer->setDescriptorSet(
pipelineType,
@@ -16,14 +16,23 @@ void BindingStateImpl::apply(Renderer* renderer, PipelineType pipelineType)
descriptorSet);
}
-/* static */Result ShaderRendererUtil::generateTextureResource(const InputTextureDesc& inputDesc, int bindFlags, Renderer* renderer, RefPtr<TextureResource>& textureOut)
+/* static */ Result ShaderRendererUtil::generateTextureResource(
+ const InputTextureDesc& inputDesc,
+ int bindFlags,
+ IRenderer* renderer,
+ RefPtr<TextureResource>& textureOut)
{
TextureData texData;
generateTextureData(texData, inputDesc);
return createTextureResource(inputDesc, texData, bindFlags, renderer, textureOut);
}
-/* static */Result ShaderRendererUtil::createTextureResource(const InputTextureDesc& inputDesc, const TextureData& texData, int bindFlags, Renderer* renderer, RefPtr<TextureResource>& textureOut)
+/* static */ Result ShaderRendererUtil::createTextureResource(
+ const InputTextureDesc& inputDesc,
+ const TextureData& texData,
+ int bindFlags,
+ IRenderer* renderer,
+ RefPtr<TextureResource>& textureOut)
{
TextureResource::Desc textureResourceDesc;
textureResourceDesc.init(Resource::Type::Unknown);
@@ -99,7 +108,13 @@ void BindingStateImpl::apply(Renderer* renderer, PipelineType pipelineType)
return textureOut ? SLANG_OK : SLANG_FAIL;
}
-/* static */Result ShaderRendererUtil::createBufferResource(const InputBufferDesc& inputDesc, bool isOutput, size_t bufferSize, const void* initData, Renderer* renderer, Slang::RefPtr<BufferResource>& bufferOut)
+/* static */ Result ShaderRendererUtil::createBufferResource(
+ const InputBufferDesc& inputDesc,
+ bool isOutput,
+ size_t bufferSize,
+ const void* initData,
+ IRenderer* renderer,
+ Slang::RefPtr<BufferResource>& bufferOut)
{
Resource::Usage initialUsage = Resource::Usage::GenericRead;
@@ -149,14 +164,17 @@ static SamplerState::Desc _calcSamplerDesc(const InputSamplerDesc& srcDesc)
return dstDesc;
}
-RefPtr<SamplerState> _createSamplerState(
- Renderer* renderer,
+RefPtr<SamplerState> _createSamplerState(IRenderer* renderer,
const InputSamplerDesc& srcDesc)
{
return renderer->createSamplerState(_calcSamplerDesc(srcDesc));
}
-/* static */Result ShaderRendererUtil::createBindingState(const ShaderInputLayout& layout, Renderer* renderer, BufferResource* addedConstantBuffer, BindingStateImpl** outBindingState)
+/* static */ Result ShaderRendererUtil::createBindingState(
+ const ShaderInputLayout& layout,
+ IRenderer* renderer,
+ BufferResource* addedConstantBuffer,
+ BindingStateImpl** outBindingState)
{
auto srcEntries = layout.entries.getBuffer();
auto numEntries = layout.entries.getCount();
diff --git a/tools/render-test/shader-renderer-util.h b/tools/render-test/shader-renderer-util.h
index 76f3b6d87..5bb2d342e 100644
--- a/tools/render-test/shader-renderer-util.h
+++ b/tools/render-test/shader-renderer-util.h
@@ -33,7 +33,7 @@ struct BindingStateImpl : public Slang::RefObject
uint16_t size; ///< The amount of register indices
};
- void apply(Renderer* renderer, PipelineType pipelineType);
+ void apply(IRenderer* renderer, PipelineType pipelineType);
struct OutputBinding
{
@@ -48,27 +48,47 @@ struct BindingStateImpl : public Slang::RefObject
};
RefPtr<SamplerState> _createSamplerState(
- Renderer* renderer,
+ IRenderer* renderer,
const InputSamplerDesc& srcDesc);
/// Utility class containing functions that construct items on the renderer using the ShaderInputLayout representation
struct ShaderRendererUtil
{
/// Generate a texture using the InputTextureDesc and construct a TextureResource using the Renderer with the contents
- static Slang::Result generateTextureResource(const InputTextureDesc& inputDesc, int bindFlags, Renderer* renderer, Slang::RefPtr<TextureResource>& textureOut);
+ static Slang::Result generateTextureResource(const InputTextureDesc& inputDesc, int bindFlags, IRenderer* renderer, Slang::RefPtr<TextureResource>& textureOut);
/// Create texture resource using inputDesc, and texData to describe format, and contents
- static Slang::Result createTextureResource(const InputTextureDesc& inputDesc, const TextureData& texData, int bindFlags, Renderer* renderer, Slang::RefPtr<TextureResource>& textureOut);
+ static Slang::Result createTextureResource(
+ const InputTextureDesc& inputDesc,
+ const TextureData& texData,
+ int bindFlags,
+ IRenderer* renderer,
+ Slang::RefPtr<TextureResource>& textureOut);
/// Create the BufferResource using the renderer from the contents of inputDesc
- static Slang::Result createBufferResource(const InputBufferDesc& inputDesc, bool isOutput, size_t bufferSize, const void* initData, Renderer* renderer, Slang::RefPtr<BufferResource>& bufferOut);
+ static Slang::Result createBufferResource(
+ const InputBufferDesc& inputDesc,
+ bool isOutput,
+ size_t bufferSize,
+ const void* initData,
+ IRenderer* renderer,
+ Slang::RefPtr<BufferResource>& bufferOut);
/// Create BindingState::Desc from the contents of layout
- static Slang::Result createBindingState(const ShaderInputLayout& layout, Renderer* renderer, BufferResource* addedConstantBuffer, BindingStateImpl** outBindingState);
+ static Slang::Result createBindingState(
+ const ShaderInputLayout& layout,
+ IRenderer* renderer,
+ BufferResource* addedConstantBuffer,
+ BindingStateImpl** outBindingState);
private:
/// Create BindingState::Desc from a list of ShaderInputLayout entries
- static Slang::Result _createBindingState(ShaderInputLayoutEntry* srcEntries, int numEntries, Renderer* renderer, BufferResource* addedConstantBuffer, BindingStateImpl** outBindingState);
+ static Slang::Result _createBindingState(
+ ShaderInputLayoutEntry* srcEntries,
+ int numEntries,
+ IRenderer* renderer,
+ BufferResource* addedConstantBuffer,
+ BindingStateImpl** outBindingState);
};
} // renderer_test