Vulkan: Reduce Macro Unrolling In GLSL. #106538
|
@ -360,7 +360,7 @@ static void print_resource(std::ostream &os,
|
|||
array_offset = res.uniformbuf.name.find_first_of("[");
|
||||
name_no_array = (array_offset == -1) ? res.uniformbuf.name :
|
||||
StringRef(res.uniformbuf.name.c_str(), array_offset);
|
||||
os << "uniform " << name_no_array << " { " << res.uniformbuf.type_name << " _"
|
||||
os << "uniform _" << name_no_array << " { " << res.uniformbuf.type_name << " "
|
||||
<< res.uniformbuf.name << "; };\n";
|
||||
break;
|
||||
case ShaderCreateInfo::Resource::BindType::STORAGE_BUFFER:
|
||||
|
@ -368,8 +368,8 @@ static void print_resource(std::ostream &os,
|
|||
name_no_array = (array_offset == -1) ? res.storagebuf.name :
|
||||
StringRef(res.storagebuf.name.c_str(), array_offset);
|
||||
print_qualifier(os, res.storagebuf.qualifiers);
|
||||
os << "buffer ";
|
||||
os << name_no_array << " { " << res.storagebuf.type_name << " _" << res.storagebuf.name
|
||||
os << "buffer _";
|
||||
os << name_no_array << " { " << res.storagebuf.type_name << " " << res.storagebuf.name
|
||||
<< "; };\n";
|
||||
break;
|
||||
}
|
||||
|
@ -383,29 +383,6 @@ static void print_resource(std::ostream &os,
|
|||
print_resource(os, location, res);
|
||||
}
|
||||
|
||||
static void print_resource_alias(std::ostream &os, const ShaderCreateInfo::Resource &res)
|
||||
{
|
||||
int64_t array_offset;
|
||||
StringRef name_no_array;
|
||||
|
||||
switch (res.bind_type) {
|
||||
case ShaderCreateInfo::Resource::BindType::UNIFORM_BUFFER:
|
||||
array_offset = res.uniformbuf.name.find_first_of("[");
|
||||
name_no_array = (array_offset == -1) ? res.uniformbuf.name :
|
||||
StringRef(res.uniformbuf.name.c_str(), array_offset);
|
||||
os << "#define " << name_no_array << " (_" << name_no_array << ")\n";
|
||||
break;
|
||||
case ShaderCreateInfo::Resource::BindType::STORAGE_BUFFER:
|
||||
array_offset = res.storagebuf.name.find_first_of("[");
|
||||
name_no_array = (array_offset == -1) ? res.storagebuf.name :
|
||||
StringRef(res.storagebuf.name.c_str(), array_offset);
|
||||
os << "#define " << name_no_array << " (_" << name_no_array << ")\n";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
inline int get_location_count(const Type &type)
|
||||
{
|
||||
if (type == shader::Type::MAT4) {
|
||||
|
@ -1019,17 +996,11 @@ std::string VKShader::resources_declare(const shader::ShaderCreateInfo &info) co
|
|||
for (const ShaderCreateInfo::Resource &res : info.pass_resources_) {
|
||||
print_resource(ss, interface, res);
|
||||
}
|
||||
for (const ShaderCreateInfo::Resource &res : info.pass_resources_) {
|
||||
print_resource_alias(ss, res);
|
||||
}
|
||||
|
||||
ss << "\n/* Batch Resources. */\n";
|
||||
for (const ShaderCreateInfo::Resource &res : info.batch_resources_) {
|
||||
print_resource(ss, interface, res);
|
||||
}
|
||||
for (const ShaderCreateInfo::Resource &res : info.batch_resources_) {
|
||||
print_resource_alias(ss, res);
|
||||
}
|
||||
|
||||
/* Push constants. */
|
||||
const VKPushConstants::Layout &push_constants_layout = interface.push_constants_layout_get();
|
||||
|
|
Loading…
Reference in New Issue