Skip to content

Commit 72bb177

Browse files
Improve inline constants resource description validation (#672)
1 parent d8ddfb7 commit 72bb177

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

Graphics/GraphicsEngine/src/PipelineResourceSignatureBase.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,24 @@ void ValidatePipelineResourceSignatureDesc(const PipelineResourceSignatureDesc&
111111
": ", GetPipelineResourceFlagsString(AllowedResourceFlags, false, ", "), ".");
112112
}
113113

114-
if ((Res.Flags & PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS) != 0 && Res.Flags != PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS)
114+
if ((Res.Flags & PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS) != 0)
115115
{
116-
LOG_PRS_ERROR_AND_THROW("Incorrect Desc.Resources[", i, "].Flags (", GetPipelineResourceFlagsString(Res.Flags),
117-
"). INLINE_CONSTANTS flag cannot be combined with other flags.");
116+
if (Res.Flags != PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS)
117+
{
118+
LOG_PRS_ERROR_AND_THROW("Incorrect Desc.Resources[", i, "].Flags (", GetPipelineResourceFlagsString(Res.Flags),
119+
"). INLINE_CONSTANTS flag cannot be combined with other flags.");
120+
}
121+
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+
127+
if (Res.ArraySize > 64)
128+
{
129+
LOG_PRS_ERROR_AND_THROW("Desc.Resources[", i, "].ArraySize (", Res.ArraySize,
130+
") exceeds the maximum allowed value (64) for inline constants.");
131+
}
118132
}
119133

120134
if ((Res.Flags & PIPELINE_RESOURCE_FLAG_FORMATTED_BUFFER) != 0 && Features.FormattedBuffers == DEVICE_FEATURE_STATE_DISABLED)

Tests/DiligentCoreAPITest/src/InlineConstantsTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ TEST_F(InlineConstants, ResourceSignature)
191191
SHADER_RESOURCE_VARIABLE_TYPE PosType = static_cast<SHADER_RESOURCE_VARIABLE_TYPE>(pos_type);
192192
SHADER_RESOURCE_VARIABLE_TYPE ColType = static_cast<SHADER_RESOURCE_VARIABLE_TYPE>(col_type);
193193

194-
PipelineResourceSignatureDescX SignDesc;
194+
PipelineResourceSignatureDescX SignDesc{"Inline constants test"};
195195
SignDesc
196196
.AddResource(SHADER_TYPE_VERTEX, "cb0_stat", 1u, SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, SHADER_RESOURCE_VARIABLE_TYPE_STATIC)
197197
.AddResource(SHADER_TYPE_VERTEX, "cb0_mut", 1u, SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE)

0 commit comments

Comments
 (0)