From 5554777188225266e2295db3588f6cb17cae0c4d Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 11 Jan 2021 09:11:52 -0800 Subject: 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 --- tools/render-test/shader-renderer-util.cpp | 32 +++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'tools/render-test/shader-renderer-util.cpp') 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& textureOut) +/* static */ Result ShaderRendererUtil::generateTextureResource( + const InputTextureDesc& inputDesc, + int bindFlags, + IRenderer* renderer, + RefPtr& 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& textureOut) +/* static */ Result ShaderRendererUtil::createTextureResource( + const InputTextureDesc& inputDesc, + const TextureData& texData, + int bindFlags, + IRenderer* renderer, + RefPtr& 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& bufferOut) +/* static */ Result ShaderRendererUtil::createBufferResource( + const InputBufferDesc& inputDesc, + bool isOutput, + size_t bufferSize, + const void* initData, + IRenderer* renderer, + Slang::RefPtr& bufferOut) { Resource::Usage initialUsage = Resource::Usage::GenericRead; @@ -149,14 +164,17 @@ static SamplerState::Desc _calcSamplerDesc(const InputSamplerDesc& srcDesc) return dstDesc; } -RefPtr _createSamplerState( - Renderer* renderer, +RefPtr _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(); -- cgit v1.2.3