Skip to content

Commit 743e7f2

Browse files
committed
fix formatting
1 parent b9c461a commit 743e7f2

File tree

1 file changed

+81
-82
lines changed

1 file changed

+81
-82
lines changed

Tests/DiligentCoreTest/src/ShaderTools/SPIRVShaderResourcesTest.cpp

Lines changed: 81 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,12 @@ std::vector<uint32_t> GLSLtoSPIRV(const char* FilePath, SHADER_TYPE ShaderType =
131131
}
132132

133133
GLSLangUtils::GLSLtoSPIRVAttribs Attribs;
134-
Attribs.ShaderType = ShaderType;
135-
Attribs.ShaderSource = ShaderSource.data();
136-
Attribs.SourceCodeLen = static_cast<int>(ShaderSourceSize);
137-
Attribs.pShaderSourceStreamFactory = pShaderSourceStreamFactory;
138-
Attribs.Version = Version;
139-
Attribs.AssignBindings = true;
134+
Attribs.ShaderType = ShaderType;
135+
Attribs.ShaderSource = ShaderSource.data();
136+
Attribs.SourceCodeLen = static_cast<int>(ShaderSourceSize);
137+
Attribs.pShaderSourceStreamFactory = pShaderSourceStreamFactory;
138+
Attribs.Version = Version;
139+
Attribs.AssignBindings = true;
140140

141141
GLSLangUtils::InitializeGlslang();
142142
auto SPIRV = GLSLangUtils::GLSLtoSPIRV(Attribs);
@@ -147,9 +147,9 @@ std::vector<uint32_t> GLSLtoSPIRV(const char* FilePath, SHADER_TYPE ShaderType =
147147

148148
void TestSPIRVResources(const char* FilePath,
149149
const std::vector<SPIRVShaderResourceAttribs>& RefResources,
150-
SHADER_TYPE ShaderType = SHADER_TYPE_PIXEL,
150+
SHADER_TYPE ShaderType = SHADER_TYPE_PIXEL,
151151
const char* CombinedSamplerSuffix = nullptr,
152-
bool IsGLSL = false)
152+
bool IsGLSL = false)
153153
{
154154
const auto SPIRV = IsGLSL ? GLSLtoSPIRV(FilePath, ShaderType) : HLSLtoSPIRV(FilePath, ShaderType);
155155
ASSERT_FALSE(SPIRV.empty()) << "Failed to compile HLSL to SPIRV: " << FilePath;
@@ -158,16 +158,15 @@ void TestSPIRVResources(const char* FilePath,
158158
ShaderDesc.Name = "SPIRVResources test";
159159
ShaderDesc.ShaderType = ShaderType;
160160

161-
std::string EntryPoint;
161+
std::string EntryPoint;
162162
SPIRVShaderResources Resources{
163163
GetRawAllocator(),
164164
SPIRV,
165165
ShaderDesc,
166166
CombinedSamplerSuffix,
167167
false, // LoadShaderStageInputs
168168
false, // LoadUniformBufferReflection
169-
EntryPoint
170-
};
169+
EntryPoint};
171170

172171
LOG_INFO_MESSAGE("Testing shader:", FilePath);
173172
if (CombinedSamplerSuffix != nullptr)
@@ -205,64 +204,64 @@ using SPIRVResourceType = SPIRVShaderResourceAttribs::ResourceType;
205204
TEST(SPIRVShaderResources, UniformBuffers)
206205
{
207206
TestSPIRVResources("UniformBuffers.psh",
208-
{
209-
// CB0 is optimized away as it's not used in the shader
210-
SPIRVShaderResourceAttribs{"CB1", SPIRVResourceType::UniformBuffer, 1, RESOURCE_DIM_BUFFER, 0, 48, 0},
211-
SPIRVShaderResourceAttribs{"CB2", SPIRVResourceType::UniformBuffer, 1, RESOURCE_DIM_BUFFER, 0, 16, 0},
212-
});
207+
{
208+
// CB0 is optimized away as it's not used in the shader
209+
SPIRVShaderResourceAttribs{"CB1", SPIRVResourceType::UniformBuffer, 1, RESOURCE_DIM_BUFFER, 0, 48, 0},
210+
SPIRVShaderResourceAttribs{"CB2", SPIRVResourceType::UniformBuffer, 1, RESOURCE_DIM_BUFFER, 0, 16, 0},
211+
});
213212
}
214213

215214
TEST(SPIRVShaderResources, StorageBuffers)
216215
{
217216
TestSPIRVResources("StorageBuffers.psh",
218-
{
219-
// StructuredBuffers have BufferStaticSize=0 (runtime array) and BufferStride is the element size
220-
SPIRVShaderResourceAttribs{"g_ROBuffer", SPIRVResourceType::ROStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 32},
221-
SPIRVShaderResourceAttribs{"g_RWBuffer", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 64},
222-
// ByteAddressBuffers also have BufferStaticSize=0 and BufferStride=4 (uint size)
223-
SPIRVShaderResourceAttribs{"g_ROAtomicBuffer", SPIRVResourceType::ROStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 4},
224-
SPIRVShaderResourceAttribs{"g_RWAtomicBuffer", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 4},
225-
});
217+
{
218+
// StructuredBuffers have BufferStaticSize=0 (runtime array) and BufferStride is the element size
219+
SPIRVShaderResourceAttribs{"g_ROBuffer", SPIRVResourceType::ROStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 32},
220+
SPIRVShaderResourceAttribs{"g_RWBuffer", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 64},
221+
// ByteAddressBuffers also have BufferStaticSize=0 and BufferStride=4 (uint size)
222+
SPIRVShaderResourceAttribs{"g_ROAtomicBuffer", SPIRVResourceType::ROStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 4},
223+
SPIRVShaderResourceAttribs{"g_RWAtomicBuffer", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 4},
224+
});
226225
}
227226

228227
TEST(SPIRVShaderResources, TexelBuffers)
229228
{
230229
TestSPIRVResources("TexelBuffers.psh",
231-
{
232-
SPIRVShaderResourceAttribs{"g_UniformTexelBuffer", SPIRVResourceType::UniformTexelBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 0},
233-
SPIRVShaderResourceAttribs{"g_StorageTexelBuffer", SPIRVResourceType::StorageTexelBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 0},
234-
});
230+
{
231+
SPIRVShaderResourceAttribs{"g_UniformTexelBuffer", SPIRVResourceType::UniformTexelBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 0},
232+
SPIRVShaderResourceAttribs{"g_StorageTexelBuffer", SPIRVResourceType::StorageTexelBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 0},
233+
});
235234
}
236235

237236
TEST(SPIRVShaderResources, Textures)
238237
{
239238
TestSPIRVResources("Textures.psh",
240-
{
241-
// When textures and samplers are declared separately in HLSL, they are compiled as separate_images
242-
// instead of sampled_images. This is the correct behavior for separate sampler/texture declarations.
243-
SPIRVShaderResourceAttribs{"g_SampledImage", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
244-
SPIRVShaderResourceAttribs{"g_SampledImageMS", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 1, 0, 0},
245-
SPIRVShaderResourceAttribs{"g_SampledImage3D", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_3D, 0, 0, 0},
246-
SPIRVShaderResourceAttribs{"g_SampledImageCube", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_CUBE, 0, 0, 0},
247-
SPIRVShaderResourceAttribs{"g_Sampler", SPIRVResourceType::SeparateSampler, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
248-
SPIRVShaderResourceAttribs{"g_SeparateImage", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
249-
// Combined sampler: g_Texture and g_Texture_sampler
250-
// Note: Even with CombinedSamplerSuffix, SPIRV may still classify them as separate_images
251-
// if they are declared separately. The CombinedSamplerSuffix is mainly used for naming convention.
252-
SPIRVShaderResourceAttribs{"g_Texture", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
253-
SPIRVShaderResourceAttribs{"g_Texture_sampler", SPIRVResourceType::SeparateSampler, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
254-
});
239+
{
240+
// When textures and samplers are declared separately in HLSL, they are compiled as separate_images
241+
// instead of sampled_images. This is the correct behavior for separate sampler/texture declarations.
242+
SPIRVShaderResourceAttribs{"g_SampledImage", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
243+
SPIRVShaderResourceAttribs{"g_SampledImageMS", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 1, 0, 0},
244+
SPIRVShaderResourceAttribs{"g_SampledImage3D", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_3D, 0, 0, 0},
245+
SPIRVShaderResourceAttribs{"g_SampledImageCube", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_CUBE, 0, 0, 0},
246+
SPIRVShaderResourceAttribs{"g_Sampler", SPIRVResourceType::SeparateSampler, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
247+
SPIRVShaderResourceAttribs{"g_SeparateImage", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
248+
// Combined sampler: g_Texture and g_Texture_sampler
249+
// Note: Even with CombinedSamplerSuffix, SPIRV may still classify them as separate_images
250+
// if they are declared separately. The CombinedSamplerSuffix is mainly used for naming convention.
251+
SPIRVShaderResourceAttribs{"g_Texture", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
252+
SPIRVShaderResourceAttribs{"g_Texture_sampler", SPIRVResourceType::SeparateSampler, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
253+
});
255254
}
256255

257256
TEST(SPIRVShaderResources, StorageImages)
258257
{
259258
TestSPIRVResources("StorageImages.psh",
260-
{
261-
// Note: HLSL does not support RWTextureCube, so we only test 2D, 2DArray, and 3D storage images
262-
SPIRVShaderResourceAttribs{"g_RWImage2D", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
263-
SPIRVShaderResourceAttribs{"g_RWImage2DArray", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_2D_ARRAY, 0, 0, 0},
264-
SPIRVShaderResourceAttribs{"g_RWImage3D", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_3D, 0, 0, 0},
265-
});
259+
{
260+
// Note: HLSL does not support RWTextureCube, so we only test 2D, 2DArray, and 3D storage images
261+
SPIRVShaderResourceAttribs{"g_RWImage2D", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
262+
SPIRVShaderResourceAttribs{"g_RWImage2DArray", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_2D_ARRAY, 0, 0, 0},
263+
SPIRVShaderResourceAttribs{"g_RWImage3D", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_3D, 0, 0, 0},
264+
});
266265
}
267266

268267
TEST(SPIRVShaderResources, AtomicCounters)
@@ -272,20 +271,20 @@ TEST(SPIRVShaderResources, AtomicCounters)
272271
// This will be reflected as RWStorageBuffer, not AtomicCounter.
273272
// The resource name is the buffer block name (AtomicCounterBuffer), not the instance name (g_AtomicCounter).
274273
TestSPIRVResources("AtomicCounters.glsl",
275-
{
276-
SPIRVShaderResourceAttribs{"AtomicCounterBuffer", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 4, 0},
277-
},
278-
SHADER_TYPE_PIXEL,
279-
nullptr,
280-
true); // IsGLSL = true
274+
{
275+
SPIRVShaderResourceAttribs{"AtomicCounterBuffer", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 4, 0},
276+
},
277+
SHADER_TYPE_PIXEL,
278+
nullptr,
279+
true); // IsGLSL = true
281280
}
282281

283282
TEST(SPIRVShaderResources, InputAttachments)
284283
{
285284
TestSPIRVResources("InputAttachments.psh",
286-
{
287-
SPIRVShaderResourceAttribs{"g_InputAttachment", SPIRVResourceType::InputAttachment, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
288-
});
285+
{
286+
SPIRVShaderResourceAttribs{"g_InputAttachment", SPIRVResourceType::InputAttachment, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
287+
});
289288
}
290289

291290
TEST(SPIRVShaderResources, AccelerationStructures)
@@ -294,12 +293,12 @@ TEST(SPIRVShaderResources, AccelerationStructures)
294293
// Acceleration structures are used in raytracing shaders, so we use SHADER_TYPE_RAY_GEN
295294
// The ray gen shader uses traceRayEXT with g_AccelStruct to ensure it's not optimized away
296295
TestSPIRVResources("AccelerationStructures.glsl",
297-
{
298-
SPIRVShaderResourceAttribs{"g_AccelStruct", SPIRVResourceType::AccelerationStructure, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
299-
},
300-
SHADER_TYPE_RAY_GEN,
301-
nullptr,
302-
true); // IsGLSL = true
296+
{
297+
SPIRVShaderResourceAttribs{"g_AccelStruct", SPIRVResourceType::AccelerationStructure, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
298+
},
299+
SHADER_TYPE_RAY_GEN,
300+
nullptr,
301+
true); // IsGLSL = true
303302
}
304303

305304
TEST(SPIRVShaderResources, PushConstants)
@@ -308,29 +307,29 @@ TEST(SPIRVShaderResources, PushConstants)
308307
// PushConstants struct: float4x4 (16 floats) + float4 (4 floats) + float2 (2 floats) + float (1 float) + uint (1 uint)
309308
// Total: 16 + 4 + 2 + 1 + 1 = 24 floats/uints = 24 * 4 bytes = 96 bytes = 24 words
310309
TestSPIRVResources("PushConstants.psh",
311-
{
312-
SPIRVShaderResourceAttribs{"PushConstants", SPIRVResourceType::PushConstant, 24, RESOURCE_DIM_BUFFER, 0, 96, 0},
313-
});
310+
{
311+
SPIRVShaderResourceAttribs{"PushConstants", SPIRVResourceType::PushConstant, 24, RESOURCE_DIM_BUFFER, 0, 96, 0},
312+
});
314313
}
315314

316315
TEST(SPIRVShaderResources, MixedResources)
317316
{
318317
TestSPIRVResources("MixedResources.psh",
319-
{
320-
// UniformBuff: float4x4 (64 bytes) + float4 (16 bytes) = 80 bytes
321-
SPIRVShaderResourceAttribs{"UniformBuff", SPIRVResourceType::UniformBuffer, 1, RESOURCE_DIM_BUFFER, 0, 80, 0},
322-
// ROStorageBuff: StructuredBuffer<BufferData> where BufferData = float4[4] = 64 bytes
323-
// StructuredBuffers have BufferStaticSize=0 (runtime array) and BufferStride is the element size
324-
SPIRVShaderResourceAttribs{"ROStorageBuff", SPIRVResourceType::ROStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 64},
325-
// RWStorageBuff: same as ROStorageBuff
326-
SPIRVShaderResourceAttribs{"RWStorageBuff", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 64},
327-
// SampledTex: When Texture2D and SamplerState are declared separately, they are compiled as SeparateImage
328-
SPIRVShaderResourceAttribs{"SampledTex", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
329-
SPIRVShaderResourceAttribs{"StorageTex", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
330-
SPIRVShaderResourceAttribs{"Sampler", SPIRVResourceType::SeparateSampler, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
331-
// PushConstants: float2 (2 floats) + float (1 float) + uint (1 uint) = 4 words = 16 bytes
332-
SPIRVShaderResourceAttribs{"PushConstants", SPIRVResourceType::PushConstant, 4, RESOURCE_DIM_BUFFER, 0, 16, 0},
333-
});
318+
{
319+
// UniformBuff: float4x4 (64 bytes) + float4 (16 bytes) = 80 bytes
320+
SPIRVShaderResourceAttribs{"UniformBuff", SPIRVResourceType::UniformBuffer, 1, RESOURCE_DIM_BUFFER, 0, 80, 0},
321+
// ROStorageBuff: StructuredBuffer<BufferData> where BufferData = float4[4] = 64 bytes
322+
// StructuredBuffers have BufferStaticSize=0 (runtime array) and BufferStride is the element size
323+
SPIRVShaderResourceAttribs{"ROStorageBuff", SPIRVResourceType::ROStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 64},
324+
// RWStorageBuff: same as ROStorageBuff
325+
SPIRVShaderResourceAttribs{"RWStorageBuff", SPIRVResourceType::RWStorageBuffer, 1, RESOURCE_DIM_BUFFER, 0, 0, 64},
326+
// SampledTex: When Texture2D and SamplerState are declared separately, they are compiled as SeparateImage
327+
SPIRVShaderResourceAttribs{"SampledTex", SPIRVResourceType::SeparateImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
328+
SPIRVShaderResourceAttribs{"StorageTex", SPIRVResourceType::StorageImage, 1, RESOURCE_DIM_TEX_2D, 0, 0, 0},
329+
SPIRVShaderResourceAttribs{"Sampler", SPIRVResourceType::SeparateSampler, 1, RESOURCE_DIM_UNDEFINED, 0, 0, 0},
330+
// PushConstants: float2 (2 floats) + float (1 float) + uint (1 uint) = 4 words = 16 bytes
331+
SPIRVShaderResourceAttribs{"PushConstants", SPIRVResourceType::PushConstant, 4, RESOURCE_DIM_BUFFER, 0, 16, 0},
332+
});
334333
}
335334

336335
} // namespace

0 commit comments

Comments
 (0)