summaryrefslogtreecommitdiffstats
path: root/Tests/TestApp/src/TestShaderResourceLayout.cpp
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-05-13 05:13:46 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-05-13 05:13:46 +0000
commitbdc5c93049d95af17d52767d262e7f88007c2c15 (patch)
tree23354cf324b63d49b6ac5a8fd9586edf230ae21b /Tests/TestApp/src/TestShaderResourceLayout.cpp
parentAdded shader resource layout test (diff)
downloadDiligentEngine-bdc5c93049d95af17d52767d262e7f88007c2c15.tar.gz
DiligentEngine-bdc5c93049d95af17d52767d262e7f88007c2c15.zip
Added separate images, samplers, texel uniform and storage buffers
Diffstat (limited to 'Tests/TestApp/src/TestShaderResourceLayout.cpp')
-rw-r--r--Tests/TestApp/src/TestShaderResourceLayout.cpp49
1 files changed, 47 insertions, 2 deletions
diff --git a/Tests/TestApp/src/TestShaderResourceLayout.cpp b/Tests/TestApp/src/TestShaderResourceLayout.cpp
index ea86989..945cf28 100644
--- a/Tests/TestApp/src/TestShaderResourceLayout.cpp
+++ b/Tests/TestApp/src/TestShaderResourceLayout.cpp
@@ -34,6 +34,11 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
UnitTestBase("Shader resource layout initialization test"),
m_pDeviceContext(pContext)
{
+ if (pDevice->GetDeviceCaps().DevType != DeviceType::Vulkan)
+ {
+ return;
+ }
+
ShaderCreationAttribs CreationAttrs;
BasicShaderSourceStreamFactory BasicSSSFactory("Shaders");
CreationAttrs.pShaderSourceStreamFactory = &BasicSSSFactory;
@@ -55,6 +60,7 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
TexDesc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
+ TexDesc.Format = TEX_FORMAT_RGBA8_UNORM;
RefCntAutoPtr<ITexture> pStorageTex[4];
IDeviceObject *pUAVs[4];
for (int i = 0; i < 4; ++i)
@@ -76,6 +82,8 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
}
BuffDesc.BindFlags = BIND_UNORDERED_ACCESS;
+ BuffDesc.Mode = BUFFER_MODE_STRUCTURED;
+ BuffDesc.ElementByteStride = 16;
RefCntAutoPtr<IBuffer> pStorgeBuffs[4];
IDeviceObject *pSBs[4];
for (int i = 0; i < 4; ++i)
@@ -84,8 +92,16 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
pSBs[i] = pStorgeBuffs[i];
}
+ RefCntAutoPtr<ISampler> pSamplers[4];
+ IDeviceObject *pSams[4];
+ for (int i = 0; i < 4; ++i)
+ {
+ SamplerDesc SamDesc;
+ pDevice->CreateSampler(SamDesc, &(pSamplers[i]));
+ pSams[i] = pSamplers[i];
+ }
+
RefCntAutoPtr<IShader> pVS;
- if(pDevice->GetDeviceCaps().DevType == DeviceType::Vulkan)
{
CreationAttrs.Desc.Name = "Shader resource layout test VS";
CreationAttrs.Desc.ShaderType = SHADER_TYPE_VERTEX;
@@ -99,6 +115,16 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
{ "g_tex2DArr_Static", SHADER_VARIABLE_TYPE_STATIC },
{ "g_tex2DArr_Mut", SHADER_VARIABLE_TYPE_MUTABLE },
{ "g_tex2DArr_Dyn", SHADER_VARIABLE_TYPE_DYNAMIC },
+ { "g_sepTex2DArr_static", SHADER_VARIABLE_TYPE_STATIC },
+ { "g_sepTex2D_mut", SHADER_VARIABLE_TYPE_MUTABLE },
+ { "g_sepTex2DArr_mut", SHADER_VARIABLE_TYPE_MUTABLE },
+ { "g_sepTex2D_dyn", SHADER_VARIABLE_TYPE_DYNAMIC },
+ { "g_sepTex2DArr_dyn", SHADER_VARIABLE_TYPE_DYNAMIC },
+ { "g_SamArr_static", SHADER_VARIABLE_TYPE_STATIC},
+ { "g_Sam_mut", SHADER_VARIABLE_TYPE_MUTABLE },
+ { "g_SamArr_mut", SHADER_VARIABLE_TYPE_MUTABLE },
+ { "g_Sam_dyn", SHADER_VARIABLE_TYPE_DYNAMIC },
+ { "g_SamArr_dyn", SHADER_VARIABLE_TYPE_DYNAMIC },
{ "UniformBuff_Mut", SHADER_VARIABLE_TYPE_MUTABLE },
{ "UniformBuff_Dyn", SHADER_VARIABLE_TYPE_DYNAMIC },
{ "UniformBuffArr_Mut", SHADER_VARIABLE_TYPE_MUTABLE },
@@ -115,6 +141,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
{
{"g_tex2D_Static", SamplerDesc{}},
{"g_tex2DArr_Mut", SamplerDesc{}},
+ {"g_Sam_static", SamplerDesc{}},
+ {"g_SamArr_mut", SamplerDesc{} },
+ {"g_Sam_dyn", SamplerDesc{} },
{"g_tex2DNoStaticSamplerTest", SamplerDesc{} }
};
CreationAttrs.Desc.VariableDesc = VarDesc;
@@ -127,6 +156,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
pVS->GetShaderVariable("g_tex2D_Static")->Set(pSRVs[0]);
pVS->GetShaderVariable("g_tex2DArr_Static")->SetArray(pSRVs, 0, 2);
+ pVS->GetShaderVariable("g_sepTex2D_static")->Set(pSRVs[0]);
+ pVS->GetShaderVariable("g_sepTex2DArr_static")->SetArray(pSRVs, 0, 2);
+ pVS->GetShaderVariable("g_SamArr_static")->SetArray(pSams, 0, 2);
pVS->GetShaderVariable("UniformBuff_Stat")->Set(pUBs[0]);
pVS->GetShaderVariable("UniformBuffArr_Stat")->SetArray(pUBs, 0, 2);
pVS->GetShaderVariable("storageBuff_Static")->Set(pSBs[0]);
@@ -135,7 +167,6 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
}
RefCntAutoPtr<IShader> pPS;
- if (pDevice->GetDeviceCaps().DevType == DeviceType::Vulkan)
{
CreationAttrs.Desc.Name = "Shader resource layout test FS";
CreationAttrs.Desc.ShaderType = SHADER_TYPE_PIXEL;
@@ -146,6 +177,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
pPS->GetShaderVariable("g_tex2D_Static")->Set(pSRVs[0]);
pPS->GetShaderVariable("g_tex2DArr_Static")->SetArray(pSRVs, 0, 2);
+ pPS->GetShaderVariable("g_sepTex2D_static")->Set(pSRVs[0]);
+ pPS->GetShaderVariable("g_sepTex2DArr_static")->SetArray(pSRVs, 0, 2);
+ pPS->GetShaderVariable("g_SamArr_static")->SetArray(pSams, 0, 2);
pPS->GetShaderVariable("UniformBuff_Stat")->Set(pUBs[0]);
pPS->GetShaderVariable("UniformBuffArr_Stat")->SetArray(pUBs, 0, 2);
pPS->GetShaderVariable("storageBuff_Static")->Set(pSBs[0]);
@@ -173,6 +207,14 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_tex2D_Dyn")->Set(pSRVs[0]);
pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_tex2DArr_Dyn")->SetArray(pSRVs, 0, 4);
+ pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2D_mut")->Set(pSRVs[0]);
+ pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2DArr_mut")->SetArray(pSRVs, 0, 3);
+ pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2D_dyn")->Set(pSRVs[0]);
+ pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_sepTex2DArr_dyn")->SetArray(pSRVs, 0, 4);
+
+ pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_Sam_mut")->Set(pSams[0]);
+ pSRB->GetVariable(SHADER_TYPE_VERTEX, "g_SamArr_dyn")->SetArray(pSams, 0, 5);
+
pSRB->GetVariable(SHADER_TYPE_VERTEX, "UniformBuff_Mut")->Set(pUBs[0]);
pSRB->GetVariable(SHADER_TYPE_VERTEX, "UniformBuffArr_Mut")->SetArray(pUBs, 0, 3);
pSRB->GetVariable(SHADER_TYPE_VERTEX, "UniformBuff_Dyn")->Set(pUBs[0]);
@@ -191,6 +233,9 @@ TestShaderResourceLayout::TestShaderResourceLayout( IRenderDevice *pDevice, IDev
pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_tex2D_Dyn")->Set(pSRVs[0]);
pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_tex2DArr_Dyn")->SetArray(pSRVs, 0, 4);
+ pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_Sam_mut")->Set(pSams[0]);
+ pSRB->GetVariable(SHADER_TYPE_PIXEL, "g_SamArr_dyn")->SetArray(pSams, 0, 5);
+
pSRB->GetVariable(SHADER_TYPE_PIXEL, "UniformBuff_Mut")->Set(pUBs[0]);
pSRB->GetVariable(SHADER_TYPE_PIXEL, "UniformBuffArr_Mut")->SetArray(pUBs, 0, 3);
pSRB->GetVariable(SHADER_TYPE_PIXEL, "UniformBuff_Dyn")->Set(pUBs[0]);