Allow wildcards in waiver vendor strings

Use wildcard matching instead of exact string comparison for GL
waiver vendor attributes. Use "Google*" prefix for ANGLE XFB
waiver and remove a duplicate ANGLE waiver.

VK-GL-CTS issue: 2770

Components: Framework, OpenGL

Change-Id: I0ffc54af6aaa4c562bf1e8b5077e365da71f9a3e
(cherry picked from commit 074fc201162b347720c4ba3a013101837edf2a8d)
diff --git a/external/openglcts/data/mustpass/waivers/waivers.xml b/external/openglcts/data/mustpass/waivers/waivers.xml
index cb04edc..0237556 100644
--- a/external/openglcts/data/mustpass/waivers/waivers.xml
+++ b/external/openglcts/data/mustpass/waivers/waivers.xml
@@ -17,6 +17,7 @@
 */-->
 	<!--/*
 	Each <waiver> entry must contain vendor and url string attributes.
+	Vendor string can use wildcard *.
 	Url should be a full path to gitlab issue(s).
 	Waiver tag should contain one <description> child that describes issue.
 	Waiver tag should containing one <renderer_list> child.
@@ -64,7 +65,17 @@
 		<t>KHR-GL45.texture_view.view_classes</t>
 		<t>KHR-GL46.texture_view.view_classes</t>
 	</waiver>
-
+	<waiver vendor="Google*" url="https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2237">
+		<description>ANGLE is unable to capture individual array elements in transform feedback using VK_EXT_transform_feedback revision 1.</description>
+		<renderer_list>
+			<r>ANGLE (Vulkan*</r>
+		</renderer_list>
+		<t>dEQP-GLES3.functional.transform_feedback.array_element.*</t>
+		<t>dEQP-GLES3.functional.transform_feedback.random.*</t>
+		<t>dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.*_array_element</t>
+		<t>dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.*.array.*</t>
+		<t>KHR-GLES31.core.program_interface_query.transform-feedback-types</t>
+	</waiver>
 	<waiver vendor="Intel" url="https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/2601">
 		<description>Testing of wide-line attribute interpolation is too strict</description>
 		<renderer_list>
@@ -86,16 +97,4 @@
 		<t>dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide</t>
 	</waiver>
 
-	<waiver vendor="Google Inc." url="https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2237">
-		<description>ANGLE is unable to capture individual array elements in transform feedback using VK_EXT_transform_feedback revision 1.</description>
-		<renderer_list>
-			<r>ANGLE (Vulkan*</r>
-		</renderer_list>
-		<t>dEQP-GLES3.functional.transform_feedback.array_element.*</t>
-		<t>dEQP-GLES3.functional.transform_feedback.random.*</t>
-		<t>dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.*_array_element</t>
-		<t>dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.*.array.*</t>
-		<t>KHR-GLES31.core.program_interface_query.transform-feedback-types</t>
-	</waiver>
-
 </waiver_list>
diff --git a/framework/common/tcuWaiverUtil.cpp b/framework/common/tcuWaiverUtil.cpp
index facaffe..09a1f19 100644
--- a/framework/common/tcuWaiverUtil.cpp
+++ b/framework/common/tcuWaiverUtil.cpp
@@ -438,7 +438,11 @@
 
 bool GLWaiverTreeBuilder::matchVendor(const std::string& vendor) const
 {
-	return m_currentVendor == vendor;
+	return tcu::matchWildcards(vendor.cbegin(),
+							   vendor.cend(),
+							   m_currentVendor.cbegin(),
+							   m_currentVendor.cend(),
+							   false);
 }
 
 bool GLWaiverTreeBuilder::matchDevice(const std::string& device) const