From 80bfa52139976bd51b43c58e9576d379fe9f8a14 Mon Sep 17 00:00:00 2001 From: assiduous Date: Thu, 12 Dec 2019 14:41:17 -0800 Subject: Updated submodules (added unit tests). Reworked TestApp --- Tests/TestApp/src/TestPSOCompatibility.cpp | 302 ----------------------------- 1 file changed, 302 deletions(-) delete mode 100644 Tests/TestApp/src/TestPSOCompatibility.cpp (limited to 'Tests/TestApp/src/TestPSOCompatibility.cpp') diff --git a/Tests/TestApp/src/TestPSOCompatibility.cpp b/Tests/TestApp/src/TestPSOCompatibility.cpp deleted file mode 100644 index f9add52..0000000 --- a/Tests/TestApp/src/TestPSOCompatibility.cpp +++ /dev/null @@ -1,302 +0,0 @@ -/* Copyright 2019 Diligent Graphics LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS. - * - * In no event and under no legal theory, whether in tort (including negligence), - * contract, or otherwise, unless required by applicable law (such as deliberate - * and grossly negligent acts) or agreed to in writing, shall any Contributor be - * liable for any damages, including any direct, indirect, special, incidental, - * or consequential damages of any character arising as a result of this License or - * out of the use or inability to use the software (including but not limited to damages - * for loss of goodwill, work stoppage, computer failure or malfunction, or any and - * all other commercial damages or losses), even if such Contributor has been advised - * of the possibility of such damages. - */ - -// EngineSandbox.cpp : Defines the entry point for the application. -// - -#include "pch.h" -#include "TestPSOCompatibility.h" - -using namespace Diligent; - -static const char* VS0 = R"( -float4 main() : SV_Position -{ - return float4(0.0, 0.0, 0.0, 0.0); -} -)"; - -static const char* PS0 = R"( -float4 main() : SV_Target -{ - return float4(0.0, 0.0, 0.0, 0.0); -} -)"; - -static const char* PS_Tex = R"( -Texture2D g_tex2D; -SamplerState g_tex2D_sampler; -float4 main() : SV_Target -{ - return g_tex2D.Sample(g_tex2D_sampler, float2(0.0, 0.0)); -} -)"; - -static const char* PS_Tex2 = R"( -Texture2D g_tex2D2; -SamplerState g_tex2D2_sampler; -float4 main() : SV_Target -{ - return g_tex2D2.Sample(g_tex2D2_sampler, float2(0.0, 0.0)); -} -)"; - -static const char* PS_ArrOfTex = R"( -Texture2D g_tex2D[2]; -SamplerState g_tex2D_sampler; -float4 main() : SV_Target -{ - return g_tex2D[0].Sample(g_tex2D_sampler, float2(0.0, 0.0)) + g_tex2D[1].Sample(g_tex2D_sampler, float2(0.0, 0.0)); -} -)"; - -static const char* PS_TexArr = R"( -Texture2DArray g_tex2D; -SamplerState g_tex2D_sampler; -float4 main() : SV_Target -{ - return g_tex2D.Sample(g_tex2D_sampler, float3(0.0, 0.0, 0.0)); -} -)"; - - -static const char* PS_CB = R"( -cbuffer Test -{ - float4 g_Test; -}; - -float4 main() : SV_Target -{ - return g_Test; -} -)"; - -static const char* PS1_CB = R"( -cbuffer Test -{ - float4 g_Test; - float4 g_Test2; -}; - -float4 main() : SV_Target -{ - return g_Test + g_Test2; -} -)"; - -static const char* PS_2CB = R"( -cbuffer Test -{ - float4 g_Test; -}; - -cbuffer Test2 -{ - float4 g_Test2; -}; - -float4 main() : SV_Target -{ - return g_Test + g_Test2; -} -)"; - -static const char* PS_TexCB = R"( -cbuffer Test -{ - float4 g_Test; -}; - -cbuffer Test2 -{ - float4 g_Test2; -}; - -Texture2D g_tex2D; -SamplerState g_tex2D_sampler; -float4 main() : SV_Target -{ - return g_Test + g_Test2 + g_tex2D.Sample(g_tex2D_sampler, float2(0.0, 0.0)); -} -)"; - -static const char* PS_TexCB2 = R"( -cbuffer TestA -{ - float4 g_Test; -}; - -cbuffer Test2A -{ - float4 g_Test2; -}; - -Texture2D g_tex2DA; -SamplerState g_tex2DA_sampler; -float4 main() : SV_Target -{ - return g_Test + g_Test2 + g_tex2DA.Sample(g_tex2DA_sampler, float2(0.0, 0.0)); -} -)"; - -static const char* CS_RwBuff = R"( -RWTexture2D g_RWTex; - -[numthreads(1,1,1)] -void main() -{ - g_RWTex[int2(0,0)] = 0.0; -} -)"; - -static const char* CS_RwBuff2 = R"( -RWTexture2D g_RWTex2; - -[numthreads(1,1,1)] -void main() -{ - g_RWTex2[int2(0,0)] = 0.0; -} -)"; - -static const char* CS_RwBuff3 = R"( -RWTexture2D g_RWTex; -RWTexture2D g_RWTex2; - -[numthreads(1,1,1)] -void main() -{ - g_RWTex[int2(0,0)] = 0.0; - g_RWTex2[int2(0,0)] = 0.0; -} -)"; - - -RefCntAutoPtr TestPSOCompatibility::CreateTestPSO(const char *VSSource, const char *PSSource) -{ - PipelineStateDesc PSODesc; - PSODesc.IsComputePipeline = false; - PSODesc.GraphicsPipeline.NumRenderTargets = 1; - PSODesc.GraphicsPipeline.RTVFormats[0] = TEX_FORMAT_RGBA8_UNORM_SRGB; - PSODesc.GraphicsPipeline.DepthStencilDesc.DepthEnable = False; - - ShaderCreateInfo CreationAttrs; - CreationAttrs.SourceLanguage = SHADER_SOURCE_LANGUAGE_HLSL; - CreationAttrs.UseCombinedTextureSamplers = true; - RefCntAutoPtr pVS; - { - CreationAttrs.Desc.ShaderType = SHADER_TYPE_VERTEX; - CreationAttrs.EntryPoint = "main"; - CreationAttrs.Desc.Name = "PSO Compatibility test VS"; - CreationAttrs.Source = VSSource; - m_pDevice->CreateShader(CreationAttrs, &pVS); - } - - RefCntAutoPtr pPS; - { - CreationAttrs.Desc.ShaderType = SHADER_TYPE_PIXEL; - CreationAttrs.EntryPoint = "main"; - CreationAttrs.Desc.Name = "PSO Compatibility test PS"; - CreationAttrs.Source = PSSource; - m_pDevice->CreateShader(CreationAttrs, &pPS); - } - - PSODesc.GraphicsPipeline.pVS = pVS; - PSODesc.GraphicsPipeline.pPS = pPS; - - RefCntAutoPtr pPSO; - m_pDevice->CreatePipelineState(PSODesc, &pPSO); - - return pPSO; -} - -RefCntAutoPtr TestPSOCompatibility::CreateTestPSO(const char *CSSource) -{ - PipelineStateDesc PSODesc; - PSODesc.IsComputePipeline = true; - ShaderCreateInfo CreationAttrs; - CreationAttrs.SourceLanguage = SHADER_SOURCE_LANGUAGE_HLSL; - CreationAttrs.UseCombinedTextureSamplers = true; - RefCntAutoPtr pCS; - { - CreationAttrs.Desc.ShaderType = SHADER_TYPE_COMPUTE; - CreationAttrs.EntryPoint = "main"; - CreationAttrs.Desc.Name = "PSO Compatibility test CS"; - CreationAttrs.Source = CSSource; - m_pDevice->CreateShader(CreationAttrs, &pCS); - } - PSODesc.ComputePipeline.pCS = pCS; - - RefCntAutoPtr pPSO; - m_pDevice->CreatePipelineState(PSODesc, &pPSO); - - return pPSO; -} - -TestPSOCompatibility::TestPSOCompatibility(IRenderDevice *pDevice ) : - UnitTestBase("PSO Compatibility test"), - m_pDevice(pDevice) -{ - auto DevType = pDevice->GetDeviceCaps().DevType; - auto PSO0 = CreateTestPSO(VS0, PS0); - VERIFY_EXPR(PSO0->IsCompatibleWith(PSO0)); - auto PSO0_1 = CreateTestPSO(VS0, PS0); - VERIFY_EXPR(PSO0->IsCompatibleWith(PSO0_1)); - VERIFY_EXPR(PSO0_1->IsCompatibleWith(PSO0)); - - auto PSO_Tex = CreateTestPSO(VS0, PS_Tex); - auto PSO_Tex2 = CreateTestPSO(VS0, PS_Tex2); - auto PSO_TexArr = CreateTestPSO(VS0, PS_TexArr); - auto PSO_ArrOfTex = CreateTestPSO(VS0, PS_ArrOfTex); - VERIFY_EXPR(PSO_Tex->IsCompatibleWith(PSO_Tex2)); - if(DevType!=DeviceType::D3D12 && DevType != DeviceType::Vulkan) - VERIFY_EXPR(!PSO_Tex->IsCompatibleWith(PSO_TexArr)); - VERIFY_EXPR(!PSO_Tex->IsCompatibleWith(PSO_ArrOfTex)); - if (DevType != DeviceType::D3D12 && DevType != DeviceType::Vulkan) - VERIFY_EXPR(!PSO_Tex2->IsCompatibleWith(PSO_TexArr)); - VERIFY_EXPR(!PSO_Tex2->IsCompatibleWith(PSO_ArrOfTex)); - VERIFY_EXPR(!PSO_TexArr->IsCompatibleWith(PSO_ArrOfTex)); - - auto PSO_CB = CreateTestPSO(VS0, PS_CB); - auto PSO1_CB = CreateTestPSO(VS0, PS1_CB); - auto PSO_2CB = CreateTestPSO(VS0, PS_2CB); - VERIFY_EXPR(PSO_CB->IsCompatibleWith(PSO1_CB)); - VERIFY_EXPR(!PSO_CB->IsCompatibleWith(PSO_2CB)); - - auto PSO_TexCB = CreateTestPSO(VS0, PS_TexCB); - auto PSO_TexCB2 = CreateTestPSO(VS0, PS_TexCB2); - VERIFY_EXPR(PSO_TexCB->IsCompatibleWith(PSO_TexCB2)); - VERIFY_EXPR(PSO_TexCB2->IsCompatibleWith(PSO_TexCB)); - - if(pDevice->GetDeviceCaps().bComputeShadersSupported) - { - auto PSO_RWBuff = CreateTestPSO(CS_RwBuff); - auto PSO_RWBuff2 = CreateTestPSO(CS_RwBuff2); - auto PSO_RWBuff3 = CreateTestPSO(CS_RwBuff3); - VERIFY_EXPR(PSO_RWBuff->IsCompatibleWith(PSO_RWBuff2)); - VERIFY_EXPR(!PSO_RWBuff->IsCompatibleWith(PSO_RWBuff3)); - } - - SetStatus(TestResult::Succeeded); -} -- cgit v1.2.3