فهرست منبع

Fix issues with MaxDualSourceDrawBuffersEXT

Daniel Story 2 سال پیش
والد
کامیت
a88f674124
3فایلهای تغییر یافته به همراه19 افزوده شده و 1 حذف شده
  1. 2 0
      StandAlone/ResourceLimits.cpp
  2. 7 1
      glslang/Include/glslang_c_interface.h
  3. 10 0
      gtests/BuiltInResource.FromFile.cpp

+ 2 - 0
StandAlone/ResourceLimits.cpp

@@ -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")

+ 7 - 1
glslang/Include/glslang_c_interface.h

@@ -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;
-    int maxDualSourceDrawBuffersEXT;
+    union
+    {
+        int max_dual_source_draw_buffers_ext;
+
+        /* Incorrectly capitalized name retained for backward compatibility */
+        int maxDualSourceDrawBuffersEXT;
+    };
 
     glslang_limits_t limits;
 } glslang_resource_t;

+ 10 - 0
gtests/BuiltInResource.FromFile.cpp

@@ -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