Fix function overload when SPIR-V overloads on pointer type.

This commit is contained in:
Hans-Kristian Arntzen 2018-02-25 10:58:22 +01:00
parent a61e728418
commit fda36f832b

View File

@ -7869,7 +7869,19 @@ void CompilerGLSL::add_function_overload(const SPIRFunction &func)
{
Hasher hasher;
for (auto &arg : func.arguments)
hasher.u32(arg.type);
{
// Parameters can vary with pointer type or not,
// but that will not change the signature in GLSL/HLSL,
// so strip the pointer type before hashing.
uint32_t type_id = arg.type;
auto *type = &get<SPIRType>(type_id);
while (type->pointer)
{
type_id = type->parent_type;
type = &get<SPIRType>(type_id);
}
hasher.u32(type_id);
}
uint64_t types_hash = hasher.get();
auto function_name = to_name(func.self);