diff options
Diffstat (limited to 'tools/render-test/render-test-main.cpp')
| -rw-r--r-- | tools/render-test/render-test-main.cpp | 105 |
1 files changed, 55 insertions, 50 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp index 533932eab..4c05422ee 100644 --- a/tools/render-test/render-test-main.cpp +++ b/tools/render-test/render-test-main.cpp @@ -74,7 +74,7 @@ struct ShaderOutputPlan struct Item { Index inputLayoutEntryIndex; - RefPtr<Resource> resource; + ComPtr<IResource> resource; }; List<Item> items; @@ -118,10 +118,10 @@ protected: ComPtr<IRenderer> m_renderer; - RefPtr<InputLayout> m_inputLayout; - RefPtr<BufferResource> m_vertexBuffer; - RefPtr<ShaderProgram> m_shaderProgram; - RefPtr<PipelineState> m_pipelineState; + ComPtr<IInputLayout> m_inputLayout; + ComPtr<IBufferResource> m_vertexBuffer; + ComPtr<IShaderProgram> m_shaderProgram; + ComPtr<IPipelineState> m_pipelineState; ShaderCompilerUtil::OutputAndLayout m_compilationOutput; @@ -147,7 +147,7 @@ public: protected: uintptr_t m_constantBufferSize; - RefPtr<BufferResource> m_constantBuffer; + ComPtr<IBufferResource> m_constantBuffer; RefPtr<BindingStateImpl> m_bindingState; int m_numAddedConstantBuffers; ///< Constant buffers can be added to the binding directly. Will be added at the end. }; @@ -165,20 +165,20 @@ public: virtual Result writeBindingOutput(BindRoot* bindRoot, const char* fileName) override; protected: - RefPtr<ShaderObject> m_programVars; + ComPtr<IShaderObject> m_programVars; ShaderOutputPlan m_outputPlan; }; SlangResult _assignVarsFromLayout( IRenderer* renderer, - ShaderObject* shaderObject, + IShaderObject* shaderObject, ShaderInputLayout const& layout, ShaderOutputPlan& ioOutputPlan, slang::ProgramLayout* slangReflection) { ShaderCursor rootCursor = ShaderCursor(shaderObject); - const int textureBindFlags = Resource::BindFlag::NonPixelShaderResource | Resource::BindFlag::PixelShaderResource; + const int textureBindFlags = IResource::BindFlag::NonPixelShaderResource | IResource::BindFlag::PixelShaderResource; Index entryCount = layout.entries.getCount(); for(Index entryIndex = 0; entryIndex < entryCount; ++entryIndex) @@ -194,7 +194,7 @@ SlangResult _assignVarsFromLayout( if(!entryCursor.isValid()) { - for(Index i = 0; i < shaderObject->getEntryPointCount(); i++) + for(gfx::UInt i = 0; i < shaderObject->getEntryPointCount(); i++) { entryCursor = ShaderCursor(shaderObject->getEntryPoint(i)).getPath(entry.name); if(entryCursor.isValid()) @@ -209,7 +209,7 @@ SlangResult _assignVarsFromLayout( return SLANG_E_INVALID_ARG; } - RefPtr<Resource> resource; + ComPtr<IResource> resource; switch(entry.type) { case ShaderInputType::Uniform: @@ -267,12 +267,12 @@ SlangResult _assignVarsFromLayout( default: { - RefPtr<BufferResource> bufferResource; + ComPtr<IBufferResource> bufferResource; SLANG_RETURN_ON_FAIL(ShaderRendererUtil::createBufferResource(entry.bufferDesc, entry.isOutput, bufferSize, entry.bufferData.getBuffer(), renderer, bufferResource)); resource = bufferResource; - ResourceView::Desc viewDesc; - viewDesc.type = ResourceView::Type::UnorderedAccess; + IResourceView::Desc viewDesc; + viewDesc.type = IResourceView::Type::UnorderedAccess; viewDesc.format = srcBuffer.format; auto bufferView = renderer->createBufferView( bufferResource, @@ -315,14 +315,14 @@ SlangResult _assignVarsFromLayout( case ShaderInputType::CombinedTextureSampler: { - RefPtr<TextureResource> texture; + ComPtr<ITextureResource> texture; SLANG_RETURN_ON_FAIL(ShaderRendererUtil::generateTextureResource(entry.textureDesc, textureBindFlags, renderer, texture)); resource = texture; auto sampler = _createSamplerState(renderer, entry.samplerDesc); - ResourceView::Desc viewDesc; - viewDesc.type = ResourceView::Type::ShaderResource; + IResourceView::Desc viewDesc; + viewDesc.type = IResourceView::Type::ShaderResource; auto textureView = renderer->createTextureView( texture, viewDesc); @@ -345,14 +345,14 @@ SlangResult _assignVarsFromLayout( case ShaderInputType::Texture: { - RefPtr<TextureResource> texture; + ComPtr<ITextureResource> texture; SLANG_RETURN_ON_FAIL(ShaderRendererUtil::generateTextureResource(entry.textureDesc, textureBindFlags, renderer, texture)); resource = texture; // TODO: support UAV textures... - ResourceView::Desc viewDesc; - viewDesc.type = ResourceView::Type::ShaderResource; + IResourceView::Desc viewDesc; + viewDesc.type = IResourceView::Type::ShaderResource; auto textureView = renderer->createTextureView( texture, viewDesc); @@ -395,8 +395,9 @@ SlangResult _assignVarsFromLayout( auto slangType = slangReflection->findTypeByName(typeName.getBuffer()); auto slangTypeLayout = slangReflection->getTypeLayout(slangType); - RefPtr<ShaderObjectLayout> shaderObjectLayout = renderer->createShaderObjectLayout(slangTypeLayout); - RefPtr<ShaderObject> shaderObject = renderer->createShaderObject(shaderObjectLayout); + ComPtr<IShaderObjectLayout> shaderObjectLayout = renderer->createShaderObjectLayout(slangTypeLayout); + ComPtr<IShaderObject> shaderObject = + renderer->createShaderObject(shaderObjectLayout); entryCursor.setObject(shaderObject); } @@ -445,12 +446,12 @@ SlangResult LegacyRenderTestApp::initialize( // TODO(tfoley): use each API's reflection interface to query the constant-buffer size needed m_constantBufferSize = 16 * sizeof(float); - BufferResource::Desc constantBufferDesc; + IBufferResource::Desc constantBufferDesc; constantBufferDesc.init(m_constantBufferSize); - constantBufferDesc.cpuAccessFlags = Resource::AccessFlag::Write; + constantBufferDesc.cpuAccessFlags = IResource::AccessFlag::Write; m_constantBuffer = - renderer->createBufferResource(Resource::Usage::ConstantBuffer, constantBufferDesc); + renderer->createBufferResource(IResource::Usage::ConstantBuffer, constantBufferDesc); if (!m_constantBuffer) return SLANG_FAIL; @@ -458,7 +459,7 @@ SlangResult LegacyRenderTestApp::initialize( // // TODO: Should probably be more sophisticated than this - with 'dynamic' constant buffer/s // binding always being specified in the test file - RefPtr<BufferResource> addedConstantBuffer; + ComPtr<IBufferResource> addedConstantBuffer; switch (m_options.shaderType) { default: @@ -490,11 +491,11 @@ SlangResult LegacyRenderTestApp::initialize( if (!m_inputLayout) return SLANG_FAIL; - BufferResource::Desc vertexBufferDesc; + IBufferResource::Desc vertexBufferDesc; vertexBufferDesc.init(kVertexCount * sizeof(Vertex)); m_vertexBuffer = renderer->createBufferResource( - Resource::Usage::VertexBuffer, vertexBufferDesc, kVertexData); + IResource::Usage::VertexBuffer, vertexBufferDesc, kVertexData); if (!m_vertexBuffer) return SLANG_FAIL; @@ -555,7 +556,7 @@ 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()); - RefPtr<ShaderObjectLayout> programLayout = renderer->createRootShaderObjectLayout(slangReflection); + 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. @@ -583,7 +584,7 @@ SlangResult ShaderObjectRenderTestApp::initialize( case Options::ShaderProgramType::Compute: { ComputePipelineStateDesc desc; - desc.rootShaderObjectLayout = programLayout.Ptr(); + desc.rootShaderObjectLayout = programLayout.get(); desc.program = m_shaderProgram; m_pipelineState = renderer->createComputePipelineState(desc); @@ -608,16 +609,16 @@ SlangResult ShaderObjectRenderTestApp::initialize( { "A", 2, Format::RG_Float32, offsetof(Vertex, uv) }, }; - RefPtr<InputLayout> inputLayout; + ComPtr<IInputLayout> inputLayout; SLANG_RETURN_ON_FAIL(renderer->createInputLayout(inputElements, SLANG_COUNT_OF(inputElements), inputLayout.writeRef())); - BufferResource::Desc vertexBufferDesc; + IBufferResource::Desc vertexBufferDesc; vertexBufferDesc.init(kVertexCount * sizeof(Vertex)); - SLANG_RETURN_ON_FAIL(renderer->createBufferResource(Resource::Usage::VertexBuffer, vertexBufferDesc, kVertexData, m_vertexBuffer.writeRef())); + SLANG_RETURN_ON_FAIL(renderer->createBufferResource(IResource::Usage::VertexBuffer, vertexBufferDesc, kVertexData, m_vertexBuffer.writeRef())); GraphicsPipelineStateDesc desc; - desc.rootShaderObjectLayout = programLayout.Ptr(); + desc.rootShaderObjectLayout = programLayout.get(); desc.program = m_shaderProgram; desc.inputLayout = inputLayout; @@ -650,8 +651,8 @@ void LegacyRenderTestApp::setProjectionMatrix() if (mappedData) { const ProjectionStyle projectionStyle = - RendererUtil::getProjectionStyle(m_renderer->getRendererType()); - RendererUtil::getIdentityProjection(projectionStyle, (float*)mappedData); + gfxGetProjectionStyle(m_renderer->getRendererType()); + gfxGetIdentityProjection(projectionStyle, (float*)mappedData); m_renderer->unmap(m_constantBuffer); } @@ -660,10 +661,10 @@ void LegacyRenderTestApp::setProjectionMatrix() void ShaderObjectRenderTestApp::setProjectionMatrix() { const ProjectionStyle projectionStyle = - RendererUtil::getProjectionStyle(m_renderer->getRendererType()); + gfxGetProjectionStyle(m_renderer->getRendererType()); float projectionMatrix[16]; - RendererUtil::getIdentityProjection(projectionStyle, projectionMatrix); + gfxGetIdentityProjection(projectionStyle, projectionMatrix); ShaderCursor(m_programVars) .getField("Uniforms") .getDereferenced() @@ -722,10 +723,10 @@ Result LegacyRenderTestApp::writeBindingOutput(BindRoot* bindRoot, const char* f assert(layoutBinding.isOutput); - if (binding.resource && binding.resource->isBuffer()) + if (binding.resource && binding.resource->getType() == IResource::Type::Buffer) { - BufferResource* bufferResource = static_cast<BufferResource*>(binding.resource.Ptr()); - const size_t bufferSize = bufferResource->getDesc().sizeInBytes; + IBufferResource* bufferResource = static_cast<IBufferResource*>(binding.resource.get()); + const size_t bufferSize = bufferResource->getDesc()->sizeInBytes; unsigned int* ptr = (unsigned int*)m_renderer->map(bufferResource, MapFlavor::HostRead); if (!ptr) @@ -768,10 +769,10 @@ Result ShaderObjectRenderTestApp::writeBindingOutput(BindRoot* bindRoot, const c assert(inputEntry.isOutput); auto resource = outputItem.resource; - if (resource && resource->isBuffer()) + if (resource && resource->getType() == IResource::Type::Buffer) { - BufferResource* bufferResource = static_cast<BufferResource*>(resource.Ptr()); - const size_t bufferSize = bufferResource->getDesc().sizeInBytes; + IBufferResource* bufferResource = static_cast<IBufferResource*>(resource.get()); + const size_t bufferSize = bufferResource->getDesc()->sizeInBytes; unsigned int* ptr = (unsigned int*)m_renderer->map(bufferResource, MapFlavor::HostRead); if (!ptr) @@ -1054,7 +1055,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi input.profile = options.profileName ? options.profileName : input.profile; StringBuilder rendererName; - rendererName << "[" << RendererUtil::toText(options.rendererType) << "] "; + rendererName << "[" << gfxGetRendererName(options.rendererType) << "] "; if (options.adapter.getLength()) { rendererName << "'" << options.adapter << "'"; @@ -1217,7 +1218,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi Slang::ComPtr<IRenderer> renderer; { - RendererUtil::CreateFunc createFunc = RendererUtil::getCreateFunc(options.rendererType); + SGRendererCreateFunc createFunc = gfxGetCreateFunc(options.rendererType); if (createFunc) { createFunc(renderer.writeRef()); @@ -1235,8 +1236,12 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi IRenderer::Desc desc; desc.width = gWindowWidth; desc.height = gWindowHeight; - desc.adapter = options.adapter; - desc.requiredFeatures = options.renderFeatures; + desc.adapter = options.adapter.getBuffer(); + List<const char*> requiredFeatureList; + for (auto & name : options.renderFeatures) + requiredFeatureList.add(name.getBuffer()); + desc.requiredFeatures = requiredFeatureList.getBuffer(); + desc.requiredFeatureCount = requiredFeatureList.getCount(); desc.nvapiExtnSlot = int(nvapiExtnSlot); window = renderer_test::Window::create(); @@ -1254,10 +1259,10 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi return res; } - for (const auto& feature : options.renderFeatures) + for (const auto& feature : requiredFeatureList) { // If doesn't have required feature... we have to give up - if (!renderer->hasFeature(feature.getUnownedSlice())) + if (!renderer->hasFeature(feature)) { return SLANG_E_NOT_AVAILABLE; } |
