Fix issues with MaxDualSourceDrawBuffersEXT

This commit is contained in:
Daniel Story 2022-12-21 11:53:23 -08:00 committed by Daniel Story [NTD]
parent dcae187376
commit a88f674124
3 changed files with 19 additions and 1 deletions

View File

@ -505,6 +505,8 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config)
resources->maxTaskWorkGroupSizeZ_EXT = value;
else if (tokenStr == "MaxMeshViewCountEXT")
resources->maxMeshViewCountEXT = value;
else if (tokenStr == "MaxDualSourceDrawBuffersEXT")
resources->maxDualSourceDrawBuffersEXT = value;
else if (tokenStr == "nonInductiveForLoops")
resources->limits.nonInductiveForLoops = (value != 0);
else if (tokenStr == "whileLoops")

View File

@ -157,7 +157,13 @@ typedef struct glslang_resource_s {
int max_task_work_group_size_y_ext;
int max_task_work_group_size_z_ext;
int max_mesh_view_count_ext;
union
{
int max_dual_source_draw_buffers_ext;
/* Incorrectly capitalized name retained for backward compatibility */
int maxDualSourceDrawBuffersEXT;
};
glslang_limits_t limits;
} glslang_resource_t;

View File

@ -53,5 +53,15 @@ TEST_F(DefaultResourceTest, FromFile)
ASSERT_EQ(expectedConfig, realConfig);
}
TEST_F(DefaultResourceTest, UnrecognizedLimit)
{
const std::string defaultConfig = GetDefaultTBuiltInResourceString();
testing::internal::CaptureStdout();
TBuiltInResource resources;
DecodeResourceLimits(&resources, const_cast<char*>(defaultConfig.c_str()));
std::string output = testing::internal::GetCapturedStdout();
ASSERT_EQ(output.find("unrecognized limit"), std::string::npos);
}
} // anonymous namespace
} // namespace glslangtest