Skip to content

Commit dd2fdbf

Browse files
WGSLShaderResources: factor out TintOverrideTypeToShaderCodeBasicType helper
1 parent 9d2415c commit dd2fdbf

2 files changed

Lines changed: 25 additions & 23 deletions

File tree

Graphics/ShaderTools/include/WGSLShaderResources.hpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,7 @@ struct WGSLSpecializationConstantAttribs
166166
/* 0 */const char* const Name;
167167
/* 8 */const Uint16 OverrideId;
168168
/* 10 */const Uint8 Type; // SHADER_CODE_BASIC_TYPE
169-
/* 11 */const Uint8 Padding;
170-
/* 12 */const Uint32 Reserved;
169+
/* 11 */
171170
/* 16 */ // End of structure
172171

173172
// clang-format on
@@ -177,9 +176,7 @@ struct WGSLSpecializationConstantAttribs
177176
SHADER_CODE_BASIC_TYPE _Type) noexcept :
178177
Name{_Name},
179178
OverrideId{_OverrideId},
180-
Type{static_cast<Uint8>(_Type)},
181-
Padding{0},
182-
Reserved{0}
179+
Type{static_cast<Uint8>(_Type)}
183180
{}
184181

185182
SHADER_CODE_BASIC_TYPE GetType() const { return static_cast<SHADER_CODE_BASIC_TYPE>(Type); }

Graphics/ShaderTools/src/WGSLShaderResources.cpp

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,24 @@ WEB_GPU_BINDING_TYPE GetWebGPUTextureBindingType(WGSLShaderResourceAttribs::Text
321321
}
322322
}
323323

324+
SHADER_CODE_BASIC_TYPE TintOverrideTypeToShaderCodeBasicType(tint::inspector::Override::Type OverrideType)
325+
{
326+
using TintOverrideType = tint::inspector::Override::Type;
327+
switch (OverrideType)
328+
{
329+
// clang-format off
330+
case TintOverrideType::kBool: return SHADER_CODE_BASIC_TYPE_BOOL;
331+
case TintOverrideType::kFloat32: return SHADER_CODE_BASIC_TYPE_FLOAT;
332+
case TintOverrideType::kUint32: return SHADER_CODE_BASIC_TYPE_UINT;
333+
case TintOverrideType::kInt32: return SHADER_CODE_BASIC_TYPE_INT;
334+
case TintOverrideType::kFloat16: return SHADER_CODE_BASIC_TYPE_FLOAT16;
335+
// clang-format on
336+
default:
337+
UNEXPECTED("Unexpected override type");
338+
return SHADER_CODE_BASIC_TYPE_UNKNOWN;
339+
}
340+
}
341+
324342
} // namespace
325343

326344
WGSLShaderResourceAttribs::WGSLShaderResourceAttribs(const char* _Name,
@@ -904,7 +922,7 @@ WGSLShaderResources::WGSLShaderResources(IMemoryAllocator& Allocator,
904922
// Count override constants (specialization constants)
905923
const auto& Overrides = EntryPoints[EntryPointIdx].overrides;
906924
Uint32 NumSpecConstants = static_cast<Uint32>(Overrides.size());
907-
for (const auto& Override : Overrides)
925+
for (const tint::inspector::Override& Override : Overrides)
908926
{
909927
ResourceNamesPoolSize += Override.name.length() + 1;
910928
}
@@ -989,24 +1007,11 @@ WGSLShaderResources::WGSLShaderResources(IMemoryAllocator& Allocator,
9891007

9901008
// Construct specialization constant attribs
9911009
{
992-
using TintOverrideType = tint::inspector::Override::Type;
993-
Uint32 SpecConstIdx = 0;
994-
for (const auto& Override : Overrides)
1010+
Uint32 SpecConstIdx = 0;
1011+
for (const tint::inspector::Override& Override : Overrides)
9951012
{
9961013
const char* SCName = ResourceNamesPool.CopyString(Override.name);
997-
SHADER_CODE_BASIC_TYPE SCType = SHADER_CODE_BASIC_TYPE_UNKNOWN;
998-
switch (Override.type)
999-
{
1000-
// clang-format off
1001-
case TintOverrideType::kBool: SCType = SHADER_CODE_BASIC_TYPE_BOOL; break;
1002-
case TintOverrideType::kFloat32: SCType = SHADER_CODE_BASIC_TYPE_FLOAT; break;
1003-
case TintOverrideType::kUint32: SCType = SHADER_CODE_BASIC_TYPE_UINT; break;
1004-
case TintOverrideType::kInt32: SCType = SHADER_CODE_BASIC_TYPE_INT; break;
1005-
case TintOverrideType::kFloat16: SCType = SHADER_CODE_BASIC_TYPE_FLOAT16; break;
1006-
// clang-format on
1007-
default:
1008-
UNEXPECTED("Unexpected override type");
1009-
}
1014+
SHADER_CODE_BASIC_TYPE SCType = TintOverrideTypeToShaderCodeBasicType(Override.type);
10101015
new (&GetSpecConstant(SpecConstIdx++)) WGSLSpecializationConstantAttribs{SCName, Override.id.value, SCType};
10111016
}
10121017
VERIFY_EXPR(SpecConstIdx == GetNumSpecConstants());
@@ -1066,7 +1071,7 @@ void WGSLShaderResources::Initialize(IMemoryAllocator& Allocator,
10661071
static_assert(sizeof(WGSLSpecializationConstantAttribs) % sizeof(void*) == 0, "Size of WGSLSpecializationConstantAttribs struct must be a multiple of sizeof(void*)");
10671072
// clang-format off
10681073
size_t MemorySize = m_TotalResources * sizeof(WGSLShaderResourceAttribs) +
1069-
m_NumSpecConstants * sizeof(WGSLSpecializationConstantAttribs) +
1074+
m_NumSpecConstants * sizeof(WGSLSpecializationConstantAttribs) +
10701075
AlignedResourceNamesPoolSize * sizeof(char);
10711076

10721077
VERIFY_EXPR(GetNumUBs() == Counters.NumUBs);

0 commit comments

Comments
 (0)