Skip to content

Commit 68a2c34

Browse files
Add tests for inline constants flag validation
1 parent 686f151 commit 68a2c34

File tree

4 files changed

+45
-14
lines changed

4 files changed

+45
-14
lines changed

Graphics/GraphicsEngine/src/PipelineResourceSignatureBase.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,6 @@ void ValidatePipelineResourceSignatureDesc(const PipelineResourceSignatureDesc&
119119
"). INLINE_CONSTANTS flag cannot be combined with other flags.");
120120
}
121121

122-
if (Res.ArraySize == 0)
123-
{
124-
LOG_PRS_ERROR_AND_THROW("Desc.Resources[", i, "].ArraySize must be greater than 0 for inline constants.");
125-
}
126-
127122
if (Res.ArraySize > 64)
128123
{
129124
LOG_PRS_ERROR_AND_THROW("Desc.Resources[", i, "].ArraySize (", Res.ArraySize,

Graphics/GraphicsEngineD3D11/src/ShaderVariableManagerD3D11.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,6 @@ void ShaderVariableManagerD3D11::ConstBuffBindInfo::SetDynamicOffset(Uint32 Arra
291291
const PipelineResourceAttribsD3D11& Attr = GetAttribs();
292292
const PipelineResourceDesc& Desc = GetDesc();
293293
VERIFY_EXPR(Desc.ResourceType == SHADER_RESOURCE_TYPE_CONSTANT_BUFFER);
294-
VERIFY_EXPR((Desc.Flags & PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS) == 0);
295294
#ifdef DILIGENT_DEVELOPMENT
296295
{
297296
const ShaderResourceCacheD3D11::CachedCB& CachedCB = m_ParentManager.m_ResourceCache.GetResource<D3D11_RESOURCE_RANGE_CBV>(Attr.BindPoints + ArrayIndex);
@@ -306,7 +305,6 @@ void ShaderVariableManagerD3D11::ConstBuffBindInfo::SetConstants(const void* pCo
306305
const PipelineResourceAttribsD3D11& Attr = GetAttribs();
307306
const PipelineResourceDesc& Desc = GetDesc();
308307
VERIFY_EXPR(Desc.ResourceType == SHADER_RESOURCE_TYPE_CONSTANT_BUFFER);
309-
VERIFY_EXPR(Desc.Flags & PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS);
310308
#ifdef DILIGENT_DEVELOPMENT
311309
{
312310
VerifyInlineConstants(Desc, pConstants, FirstConstant, NumConstants);

Tests/DiligentCoreAPITest/src/ObjectCreationFailure/PRSCreationFailureTest.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,30 @@ TEST(PRSCreationFailureTest, InvalidCombinedSamplerFlag)
271271
TestCreatePRSFailure(PRSDesc, "Desc.Resources[0].Flags contain COMBINED_SAMPLER flag, but Desc.UseCombinedTextureSamplers is false");
272272
}
273273

274+
TEST(PRSCreationFailureTest, InvalidInlineConstantsFlag)
275+
{
276+
PipelineResourceSignatureDesc PRSDesc;
277+
PRSDesc.Name = "Invalid inline constants Flag";
278+
PRSDesc.UseCombinedTextureSamplers = false;
279+
PipelineResourceDesc Resources[]{
280+
{SHADER_TYPE_PIXEL, "g_InlineConstants", 1, SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, SHADER_RESOURCE_VARIABLE_TYPE_STATIC, PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS | PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS}};
281+
PRSDesc.Resources = Resources;
282+
PRSDesc.NumResources = _countof(Resources);
283+
TestCreatePRSFailure(PRSDesc, "INLINE_CONSTANTS flag cannot be combined with other flags");
284+
}
285+
286+
TEST(PRSCreationFailureTest, InvalidInlineConstantCount)
287+
{
288+
PipelineResourceSignatureDesc PRSDesc;
289+
PRSDesc.Name = "Invalid inline constant count";
290+
PRSDesc.UseCombinedTextureSamplers = false;
291+
PipelineResourceDesc Resources[]{
292+
{SHADER_TYPE_PIXEL, "g_InlineConstants", 65, SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, SHADER_RESOURCE_VARIABLE_TYPE_STATIC, PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS}};
293+
PRSDesc.Resources = Resources;
294+
PRSDesc.NumResources = _countof(Resources);
295+
TestCreatePRSFailure(PRSDesc, "Desc.Resources[0].ArraySize (65) exceeds the maximum allowed value (64) for inline constants.");
296+
}
297+
274298
TEST(PRSCreationFailureTest, InvalidAssignedSamplerResourceType)
275299
{
276300
PipelineResourceSignatureDesc PRSDesc;

Tests/DiligentCoreAPITest/src/ObjectCreationFailure/PSOCreationFailureTest.cpp

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019-2024 Diligent Graphics LLC
2+
* Copyright 2019-2025 Diligent Graphics LLC
33
* Copyright 2015-2019 Egor Yusov
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -887,6 +887,20 @@ TEST_F(PSOCreationFailureTest, OverlappingImmutableSamplerStages)
887887
TestCreatePSOFailure(PsoCI, "'g_Texture_sampler' is defined in overlapping shader stages (SHADER_TYPE_VERTEX, SHADER_TYPE_GEOMETRY and SHADER_TYPE_VERTEX, SHADER_TYPE_PIXEL)");
888888
}
889889

890+
TEST_F(PSOCreationFailureTest, InvalidInlineConstantsFlag)
891+
{
892+
auto PsoCI{GetGraphicsPSOCreateInfo("PSO Create Failure - Invalid Inline Constants Flag")};
893+
894+
ShaderResourceVariableDesc Variables[] //
895+
{
896+
ShaderResourceVariableDesc{SHADER_TYPE_VERTEX | SHADER_TYPE_PIXEL, "g_Texture", SHADER_RESOURCE_VARIABLE_TYPE_STATIC},
897+
ShaderResourceVariableDesc{SHADER_TYPE_VERTEX | SHADER_TYPE_PIXEL, "g_InlineConstants", SHADER_RESOURCE_VARIABLE_TYPE_STATIC, SHADER_VARIABLE_FLAG_INLINE_CONSTANTS | SHADER_VARIABLE_FLAG_NO_DYNAMIC_BUFFERS} //
898+
};
899+
PsoCI.PSODesc.ResourceLayout.Variables = Variables;
900+
PsoCI.PSODesc.ResourceLayout.NumVariables = _countof(Variables);
901+
TestCreatePSOFailure(PsoCI, "ResourceLayout.Variables[1].Flags: INLINE_CONSTANTS flag cannot be combined with other flags.");
902+
}
903+
890904
TEST_F(PSOCreationFailureTest, RenderPassWithNonZeroNumRenderTargets)
891905
{
892906
auto PsoCI{GetGraphicsPSOCreateInfo("PSO Create Failure - Render Pass With non-zero NumRenderTargets", true)};
@@ -1167,7 +1181,7 @@ TEST_F(PSOCreationFailureTest, NullProcHitShader)
11671181
TestCreatePSOFailure(PsoCI, "pProceduralHitShaders[0].pIntersectionShader must not be null");
11681182
}
11691183

1170-
TEST_F(PSOCreationFailureTest, InvalidShaderinGeneralGroup)
1184+
TEST_F(PSOCreationFailureTest, InvalidShaderInGeneralGroup)
11711185
{
11721186
if (!HasRayTracing())
11731187
GTEST_SKIP();
@@ -1180,7 +1194,7 @@ TEST_F(PSOCreationFailureTest, InvalidShaderinGeneralGroup)
11801194
TestCreatePSOFailure(PsoCI, "SHADER_TYPE_RAY_CLOSEST_HIT is not a valid type for ray tracing general shader");
11811195
}
11821196

1183-
TEST_F(PSOCreationFailureTest, InvalidShaderinTriangleHitGroup1)
1197+
TEST_F(PSOCreationFailureTest, InvalidShaderInTriangleHitGroup1)
11841198
{
11851199
if (!HasRayTracing())
11861200
GTEST_SKIP();
@@ -1197,7 +1211,7 @@ TEST_F(PSOCreationFailureTest, InvalidShaderinTriangleHitGroup1)
11971211
TestCreatePSOFailure(PsoCI, "SHADER_TYPE_RAY_MISS is not a valid type for ray tracing triangle closest hit");
11981212
}
11991213

1200-
TEST_F(PSOCreationFailureTest, InvalidShaderinTriangleHitGroup2)
1214+
TEST_F(PSOCreationFailureTest, InvalidShaderInTriangleHitGroup2)
12011215
{
12021216
if (!HasRayTracing())
12031217
GTEST_SKIP();
@@ -1214,7 +1228,7 @@ TEST_F(PSOCreationFailureTest, InvalidShaderinTriangleHitGroup2)
12141228
TestCreatePSOFailure(PsoCI, "SHADER_TYPE_RAY_INTERSECTION is not a valid type for ray tracing triangle any hit");
12151229
}
12161230

1217-
TEST_F(PSOCreationFailureTest, InvalidShaderinProceduralHitGroup1)
1231+
TEST_F(PSOCreationFailureTest, InvalidShaderInProceduralHitGroup1)
12181232
{
12191233
if (!HasRayTracing())
12201234
GTEST_SKIP();
@@ -1232,7 +1246,7 @@ TEST_F(PSOCreationFailureTest, InvalidShaderinProceduralHitGroup1)
12321246
TestCreatePSOFailure(PsoCI, "SHADER_TYPE_CALLABLE is not a valid type for ray tracing procedural intersection");
12331247
}
12341248

1235-
TEST_F(PSOCreationFailureTest, InvalidShaderinProceduralHitGroup2)
1249+
TEST_F(PSOCreationFailureTest, InvalidShaderInProceduralHitGroup2)
12361250
{
12371251
if (!HasRayTracing())
12381252
GTEST_SKIP();
@@ -1250,7 +1264,7 @@ TEST_F(PSOCreationFailureTest, InvalidShaderinProceduralHitGroup2)
12501264
TestCreatePSOFailure(PsoCI, "SHADER_TYPE_RAY_GEN is not a valid type for ray tracing procedural closest hit");
12511265
}
12521266

1253-
TEST_F(PSOCreationFailureTest, InvalidShaderinProceduralHitGroup3)
1267+
TEST_F(PSOCreationFailureTest, InvalidShaderInProceduralHitGroup3)
12541268
{
12551269
if (!HasRayTracing())
12561270
GTEST_SKIP();

0 commit comments

Comments
 (0)