diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-07-05 22:27:39 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-07-05 22:27:39 +0000 |
| commit | 9a8b1ce5926ba32be80cc3a2a308b9e054c1f781 (patch) | |
| tree | 9c254c01d925e5121d5663f04f7de327f996922f /Tests/TestApp/src/TestApp.cpp | |
| parent | Updated broken shader & comput shader tests (diff) | |
| download | DiligentEngine-9a8b1ce5926ba32be80cc3a2a308b9e054c1f781.tar.gz DiligentEngine-9a8b1ce5926ba32be80cc3a2a308b9e054c1f781.zip | |
Updated test app
Diffstat (limited to 'Tests/TestApp/src/TestApp.cpp')
| -rw-r--r-- | Tests/TestApp/src/TestApp.cpp | 89 |
1 files changed, 62 insertions, 27 deletions
diff --git a/Tests/TestApp/src/TestApp.cpp b/Tests/TestApp/src/TestApp.cpp index a6dd0bc..8c5062a 100644 --- a/Tests/TestApp/src/TestApp.cpp +++ b/Tests/TestApp/src/TestApp.cpp @@ -209,12 +209,32 @@ void TestApp::InitializeDiligentEngine( LoadGraphicsEngineVk(GetEngineFactoryVk); #endif EngineVkAttribs EngVkAttribs; -#ifdef _DEBUG + EngVkAttribs.EnableValidation = true; EngVkAttribs.MainDescriptorPoolSize = EngineVkAttribs::DescriptorPoolSize{ 64, 64, 256, 256, 64, 32, 32, 32, 32 }; EngVkAttribs.DynamicDescriptorPoolSize = EngineVkAttribs::DescriptorPoolSize{ 64, 64, 256, 256, 64, 32, 32, 32, 32 }; -#endif - + EngVkAttribs.ImmediateCtxUploadHeapPageSize = 32*1024; + EngVkAttribs.ImmediateCtxUploadHeapReserveSize = 64*1024; + EngVkAttribs.DeferredCtxUploadHeapPageSize = 8*1024; + EngVkAttribs.DeferredCtxUploadHeapReserveSize = 16*1024; + //EngVkAttribs.DeviceLocalMemoryReserveSize = 32 << 20; + //EngVkAttribs.HostVisibleMemoryReserveSize = 48 << 20; + + auto& Features = EngVkAttribs.EnabledFeatures; + Features.depthBiasClamp = true; + Features.fillModeNonSolid = true; + Features.depthClamp = true; + Features.independentBlend = true; + Features.samplerAnisotropy = true; + Features.geometryShader = true; + Features.tessellationShader = true; + Features.dualSrcBlend = true; + Features.multiViewport = true; + Features.imageCubeArray = true; + Features.textureCompressionBC = true; + Features.vertexPipelineStoresAndAtomics = true; + Features.fragmentStoresAndAtomics = true; + ppContexts.resize(1 + NumDeferredCtx); auto *pFactoryVk = GetEngineFactoryVk(); pFactoryVk->CreateDeviceAndContextsVk(EngVkAttribs, &m_pDevice, ppContexts.data(), NumDeferredCtx); @@ -262,30 +282,35 @@ void TestApp::InitializeRenderers() TestPSOCompatibility TestPSOCompat(m_pDevice); TestBrokenShader TestBrknShdr(m_pDevice); - m_TestGS.Init(m_pDevice, m_pImmediateContext); - m_TestTessellation.Init(m_pDevice, m_pImmediateContext); - m_pTestShaderResArrays.reset(new TestShaderResArrays(m_pDevice, m_pImmediateContext, 0.4f, -0.9f, 0.5f, 0.5f)); + m_TestGS.Init(m_pDevice, m_pImmediateContext, m_pSwapChain); + m_TestTessellation.Init(m_pDevice, m_pImmediateContext, m_pSwapChain); + m_pTestShaderResArrays.reset(new TestShaderResArrays(m_pDevice, m_pImmediateContext, m_pSwapChain, 0.4f, -0.9f, 0.5f, 0.5f)); m_pMTResCreationTest.reset(new MTResourceCreationTest(m_pDevice, m_pImmediateContext, 7)); + TestShaderResourceLayout TestShaderResLayout(m_pDevice, m_pImmediateContext); - + #if GL_SUPPORTED || GLES_SUPPORTED || VULKAN_SUPPORTED ShaderConverterTest ConverterTest(m_pDevice, m_pImmediateContext); #endif - + TestSamplerCreation TestSamplers(m_pDevice); - + RenderScriptTest LuaTest(m_pDevice, m_pImmediateContext); - - m_pRenderScript = CreateRenderScriptFromFile("TestRenderScripts.lua", m_pDevice, m_pImmediateContext, [](ScriptParser *pScriptParser) + + const auto* BackBufferFmt = m_pDevice->GetTextureFormatInfo(m_pSwapChain->GetDesc().ColorBufferFormat).Name; + const auto* DepthBufferFmt = m_pDevice->GetTextureFormatInfo(m_pSwapChain->GetDesc().DepthBufferFormat).Name; + m_pRenderScript = CreateRenderScriptFromFile("TestRenderScripts.lua", m_pDevice, m_pImmediateContext, [BackBufferFmt, DepthBufferFmt](ScriptParser *pScriptParser) { + pScriptParser->SetGlobalVariable( "extBackBufferFormat", BackBufferFmt ); + pScriptParser->SetGlobalVariable( "extDepthBufferFormat", DepthBufferFmt ); }); m_pTestDrawCommands.reset(new TestDrawCommands); - m_pTestDrawCommands->Init(m_pDevice, m_pImmediateContext, 0, 0, 1, 1); + m_pTestDrawCommands->Init(m_pDevice, m_pImmediateContext, m_pSwapChain, 0, 0, 1, 1); m_pTestBufferAccess.reset(new TestBufferAccess); - m_pTestBufferAccess->Init(m_pDevice, m_pImmediateContext, -1, 0, 0.5, 0.5); - + m_pTestBufferAccess->Init(m_pDevice, m_pImmediateContext, m_pSwapChain, -1, 0, 0.5, 0.5); + TEXTURE_FORMAT TestFormats[16] = { @@ -300,25 +325,23 @@ void TestApp::InitializeRenderers() { auto Ind = i + j * 4; m_pTestTexturing[Ind].reset(new TestTexturing); - m_pTestTexturing[Ind]->Init(m_pDevice, m_pImmediateContext, TestFormats[Ind], -1 + (float)i*1.f / 4.f, -1 + (float)j*1.f / 4.f, 0.9f / 4.f, 0.9f / 4.f); + m_pTestTexturing[Ind]->Init(m_pDevice, m_pImmediateContext, m_pSwapChain, TestFormats[Ind], -1 + (float)i*1.f / 4.f, -1 + (float)j*1.f / 4.f, 0.9f / 4.f, 0.9f / 4.f); } -#if 0 TestCopyTexData TestCopyData(m_pDevice, m_pImmediateContext); -#endif TestVPAndSR TestVPAndSR(m_pDevice, m_pImmediateContext); m_pTestCS.reset(new TestComputeShaders); - m_pTestCS->Init(m_pDevice, m_pImmediateContext); + m_pTestCS->Init(m_pDevice, m_pImmediateContext, m_pSwapChain); m_pTestRT.reset(new TestRenderTarget); - m_pTestRT->Init(m_pDevice, m_pImmediateContext, -0.4f, 0.55f, 0.4f, 0.4f); + m_pTestRT->Init(m_pDevice, m_pImmediateContext, m_pSwapChain, -0.4f, 0.55f, 0.4f, 0.4f); m_pMTResCreationTest->StartThreads(); float instance_offsets[] = { -0.3f, 0.0f, 0.0f, 0.0f, +0.3f, -0.3f }; - + { m_pRenderScript->GetBufferByName("InstanceBuffer", &m_pInstBuff); } @@ -333,7 +356,7 @@ void TestApp::InitializeRenderers() //BuffData.DataSize = sizeof(instance_offsets); m_pDevice->CreateBuffer(BuffDesc, Diligent::BufferData(), &m_pInstBuff2); } - + { m_pRenderScript->GetBufferByName("UnfiformBuffer1", &m_pUniformBuff); @@ -410,7 +433,7 @@ void TestApp::InitializeRenderers() TexDesc.Type = RESOURCE_DIM_TEX_2D; TexDesc.Width = 512; TexDesc.Height = 512; - TexDesc.Format = TEX_FORMAT_RGBA8_UNORM_SRGB; + TexDesc.Format = m_pSwapChain->GetDesc().ColorBufferFormat; TexDesc.Usage = USAGE_DEFAULT; TexDesc.BindFlags = BIND_SHADER_RESOURCE | BIND_RENDER_TARGET; TexDesc.Name = "UniqueTexture"; @@ -418,6 +441,12 @@ void TestApp::InitializeRenderers() m_pDevice->CreateTexture(TexDesc, TextureData(), &pTex); ITextureView *pRTVs[] = { pTex->GetDefaultView(TEXTURE_VIEW_RENDER_TARGET) }; + TexDesc.Format = m_pSwapChain->GetDesc().DepthBufferFormat; + RefCntAutoPtr<ITexture> pDepthTex; + TexDesc.BindFlags = BIND_DEPTH_STENCIL; + m_pDevice->CreateTexture(TexDesc, TextureData(), &pDepthTex); + auto* pDSV = pDepthTex->GetDefaultView(TEXTURE_VIEW_DEPTH_STENCIL); + { MapHelper<float> UniformData(m_pImmediateContext, m_pUniformBuff, MAP_WRITE, MAP_FLAG_DISCARD); UniformData[0] = UniformData[1] = UniformData[2] = UniformData[3] = 0; @@ -431,12 +460,17 @@ void TestApp::InitializeRenderers() UniformData[3] = 0; } + m_pImmediateContext->SetRenderTargets(0, nullptr, nullptr); + float ClearColor[] = {0.1f, 0.2f, 0.4f, 1.0f}; + m_pImmediateContext->ClearRenderTarget(nullptr, ClearColor); Diligent::DrawAttribs DrawAttrs; DrawAttrs.NumVertices = 3; m_pRenderScript->Run(m_pImmediateContext, "DrawTris", DrawAttrs); // This adds transition barrier for pTex1 - m_pImmediateContext->SetRenderTargets(1, pRTVs, nullptr); + m_pImmediateContext->SetRenderTargets(1, pRTVs, pDSV); + m_pImmediateContext->ClearRenderTarget(pRTVs[0], ClearColor); + m_pImmediateContext->ClearDepthStencil(pDSV, CLEAR_DEPTH_FLAG); // Generate draw command to the bound render target m_pImmediateContext->Draw(DrawAttrs); m_pImmediateContext->SetRenderTargets(0, nullptr, nullptr); @@ -514,7 +548,7 @@ void TestApp::WindowResize(int width, int height) m_pSwapChain->Resize(width, height); //auto SCWidth = m_pSwapChain->GetDesc().Width; //auto SCHeight = m_pSwapChain->GetDesc().Height; - + } } @@ -530,13 +564,14 @@ void TestApp::Render() m_pImmediateContext->SetRenderTargets(0, nullptr, nullptr); float ClearColor[] = {0.1f, 0.2f, 0.4f, 1.0f}; m_pImmediateContext->ClearRenderTarget(nullptr, ClearColor); + m_pImmediateContext->ClearDepthStencil(nullptr, CLEAR_DEPTH_FLAG, 1.f); double dCurrTime = m_CurrTime; - + float instance_offsets[] = { -0.3f, (float)sin(dCurrTime + 0.5)*0.1f, 0.0f, (float)sin(dCurrTime)*0.1f, +0.3f, -0.3f + (float)cos(dCurrTime)*0.1f }; m_pInstBuff2->UpdateData(m_pImmediateContext, sizeof(float) * 1, sizeof(float) * 5, &instance_offsets[1]); m_pInstBuff->CopyData(m_pImmediateContext, m_pInstBuff2, sizeof(float) * 2, sizeof(float) * 2, sizeof(float) * 4); - + { MapHelper<float> UniformData(m_pImmediateContext, m_pUniformBuff, MAP_WRITE, MAP_FLAG_DISCARD); UniformData[0] = UniformData[1] = UniformData[2] = UniformData[3] = (float)fabs(sin(dCurrTime)); @@ -571,7 +606,7 @@ void TestApp::Render() m_pTestShaderResArrays->Draw(); m_TestGS.Draw(); m_TestTessellation.Draw(); - + m_pImmediateContext->Flush(); m_pImmediateContext->InvalidateState(); } |
