Add trybot testing specs for linux_optional_gpu_tests_rel

linux_optional_gpu_tests_rel mirrors dummy CI builders (builders that
don't actually exist). To move recipe configs src-side, we'd like to
stop supporting such mirrors and instead add specs for the trybot
itself.

So this adds the testing specs for linux_optional_gpu_tests_rel
based on the specs it currently uses from the dummy builders
"Optional Linux Release (NVIDIA)" and
"Optional Linux Release (Intel HD 630)".

Will verify that tests match up 100% via led before switching the
builder over fully to src-side specs.

This also required adding support for matrix compound suites to GPUTelemetryTestGenerator, which is simply a matter of checking the
types returned by input_tests and iterating differently on them.

LED build with this patch + a follow-up build CL (this CL by itself
has no effect):
https://ci.chromium.org/swarming/task/5a8f34b67036d410?server=chromium-swarm.appspot.com

Bug: 1317134
Change-Id: I085c9f6bb6e1677776bb3c0c9c85b3273b619465
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3608992
Commit-Queue: Ben Pastene <[email protected]>
Reviewed-by: Garrett Beaty <[email protected]>
Reviewed-by: Brian Sheedy <[email protected]>
Cr-Commit-Position: refs/heads/main@{#997849}
diff --git a/testing/buildbot/generate_buildbot_json.py b/testing/buildbot/generate_buildbot_json.py
index 0cc61c1..dc711845 100755
--- a/testing/buildbot/generate_buildbot_json.py
+++ b/testing/buildbot/generate_buildbot_json.py
@@ -87,11 +87,19 @@
   def generate(self, waterfall, tester_name, tester_config, input_tests):
     isolated_scripts = []
     for test_name, test_config in sorted(input_tests.items()):
-      test = self.bb_gen.generate_gpu_telemetry_test(
-          waterfall, tester_name, tester_config, test_name, test_config,
-          self._is_android_webview)
-      if test:
-        isolated_scripts.append(test)
+      # Variants allow more than one definition for a given test, and is defined
+      # in array format from resolve_variants().
+      if not isinstance(test_config, list):
+        test_config = [test_config]
+
+      for config in test_config:
+        test = self.bb_gen.generate_gpu_telemetry_test(waterfall, tester_name,
+                                                       tester_config, test_name,
+                                                       config,
+                                                       self._is_android_webview)
+        if test:
+          isolated_scripts.append(test)
+
     return isolated_scripts
 
   def sort(self, tests):