infra: Enable gles3 deqp tests with direct SPIR-V generation

Enabled on Linux/Nvidia, Windows/Nvidia and Pixel4.

Bug: angleproject:4889
Change-Id: I2462b7fa7801b766f4359103a5253209b7fded28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3047381
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/infra/specs/angle.json b/infra/specs/angle.json
index 19e7458..35d9bea 100644
--- a/infra/specs/angle.json
+++ b/infra/specs/angle.json
@@ -156,6 +156,44 @@
         "args": [
           "angle_deqp_gles3_tests",
           "--use-angle=vulkan",
+          "--direct-spirv-gen",
+          "-v",
+          "--shard-timeout=500"
+        ],
+        "merge": {
+          "script": "//scripts/angle_deqp_test_merge.py"
+        },
+        "name": "angle_deqp_gles3_vulkan_spirvgen_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "device_os": "R",
+              "device_os_type": "userdebug",
+              "device_type": "flame",
+              "os": "Android",
+              "pool": "chromium.tests.gpu"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test": "angle_deqp_gles3_tests",
+        "test_id_prefix": "ninja://src/tests:angle_deqp_gles3_tests/",
+        "use_isolated_scripts_api": true
+      },
+      {
+        "args": [
+          "angle_deqp_gles3_tests",
+          "--use-angle=vulkan",
           "-v",
           "--shard-timeout=500"
         ],
@@ -302,6 +340,44 @@
         "args": [
           "angle_deqp_khr_gles3_tests",
           "--use-angle=vulkan",
+          "--direct-spirv-gen",
+          "-v",
+          "--shard-timeout=500"
+        ],
+        "merge": {
+          "script": "//scripts/angle_deqp_test_merge.py"
+        },
+        "name": "angle_deqp_khr_gles3_vulkan_spirvgen_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "device_os": "R",
+              "device_os_type": "userdebug",
+              "device_type": "flame",
+              "os": "Android",
+              "pool": "chromium.tests.gpu"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 2
+        },
+        "test": "angle_deqp_khr_gles3_tests",
+        "test_id_prefix": "ninja://src/tests:angle_deqp_khr_gles3_tests/",
+        "use_isolated_scripts_api": true
+      },
+      {
+        "args": [
+          "angle_deqp_khr_gles3_tests",
+          "--use-angle=vulkan",
           "-v",
           "--shard-timeout=500"
         ],
@@ -1132,6 +1208,34 @@
         "args": [
           "angle_deqp_gles3_tests",
           "--use-angle=vulkan",
+          "--direct-spirv-gen",
+          "--bot-mode"
+        ],
+        "merge": {
+          "script": "//scripts/angle_deqp_test_merge.py"
+        },
+        "name": "angle_deqp_gles3_vulkan_spirvgen_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "gpu": "10de:1cb3-418.56",
+              "os": "Ubuntu-19.04",
+              "pool": "chromium.tests.gpu"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
+        },
+        "test": "angle_deqp_gles3_tests",
+        "test_id_prefix": "ninja://src/tests:angle_deqp_gles3_tests/",
+        "use_isolated_scripts_api": true
+      },
+      {
+        "args": [
+          "angle_deqp_gles3_tests",
+          "--use-angle=vulkan",
           "--bot-mode"
         ],
         "merge": {
@@ -1237,6 +1341,33 @@
         "args": [
           "angle_deqp_khr_gles3_tests",
           "--use-angle=vulkan",
+          "--direct-spirv-gen",
+          "--bot-mode"
+        ],
+        "merge": {
+          "script": "//scripts/angle_deqp_test_merge.py"
+        },
+        "name": "angle_deqp_khr_gles3_vulkan_spirvgen_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "gpu": "10de:1cb3-418.56",
+              "os": "Ubuntu-19.04",
+              "pool": "chromium.tests.gpu"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "angle_deqp_khr_gles3_tests",
+        "test_id_prefix": "ninja://src/tests:angle_deqp_khr_gles3_tests/",
+        "use_isolated_scripts_api": true
+      },
+      {
+        "args": [
+          "angle_deqp_khr_gles3_tests",
+          "--use-angle=vulkan",
           "--bot-mode"
         ],
         "merge": {
@@ -2693,6 +2824,34 @@
         "args": [
           "angle_deqp_gles3_tests",
           "--use-angle=vulkan",
+          "--direct-spirv-gen",
+          "--bot-mode"
+        ],
+        "merge": {
+          "script": "//scripts/angle_deqp_test_merge.py"
+        },
+        "name": "angle_deqp_gles3_vulkan_spirvgen_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "gpu": "10de:1cb3-27.21.14.5148",
+              "os": "Windows-10-18363",
+              "pool": "chromium.tests.gpu"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 4
+        },
+        "test": "angle_deqp_gles3_tests",
+        "test_id_prefix": "ninja://src/tests:angle_deqp_gles3_tests/",
+        "use_isolated_scripts_api": true
+      },
+      {
+        "args": [
+          "angle_deqp_gles3_tests",
+          "--use-angle=vulkan",
           "--bot-mode"
         ],
         "merge": {
@@ -2798,6 +2957,33 @@
         "args": [
           "angle_deqp_khr_gles3_tests",
           "--use-angle=vulkan",
+          "--direct-spirv-gen",
+          "--bot-mode"
+        ],
+        "merge": {
+          "script": "//scripts/angle_deqp_test_merge.py"
+        },
+        "name": "angle_deqp_khr_gles3_vulkan_spirvgen_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "containment_type": "AUTO",
+          "dimension_sets": [
+            {
+              "gpu": "10de:1cb3-27.21.14.5148",
+              "os": "Windows-10-18363",
+              "pool": "chromium.tests.gpu"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "angle_deqp_khr_gles3_tests",
+        "test_id_prefix": "ninja://src/tests:angle_deqp_khr_gles3_tests/",
+        "use_isolated_scripts_api": true
+      },
+      {
+        "args": [
+          "angle_deqp_khr_gles3_tests",
+          "--use-angle=vulkan",
           "--bot-mode"
         ],
         "merge": {
diff --git a/infra/specs/test_suites.pyl b/infra/specs/test_suites.pyl
index 7a07ab8..cfceee3 100644
--- a/infra/specs/test_suites.pyl
+++ b/infra/specs/test_suites.pyl
@@ -519,6 +519,34 @@
       },
     },
 
+    'angle_deqp_gles3_vulkan_spirvgen_gtests': {
+      'angle_deqp_gles3_vulkan_spirvgen_tests': {
+        'args': [
+          'angle_deqp_gles3_tests',
+          '--use-angle=vulkan',
+          '--direct-spirv-gen',
+        ],
+        'android_args': [
+          '-v',
+          '--shard-timeout=500',
+        ],
+        'android_swarming': {
+          'shards': 12,
+        },
+        'desktop_args': [
+          '--bot-mode',
+        ],
+        'merge': {
+          'script': '//scripts/angle_deqp_test_merge.py',
+        },
+        'swarming': {
+          'shards': 4,
+        },
+        'test': 'angle_deqp_gles3_tests',
+        'use_isolated_scripts_api': True,
+      },
+    },
+
     'angle_deqp_khr_gles2_vulkan_gtests': {
       'angle_deqp_khr_gles2_vulkan_tests': {
         'args': [
@@ -609,6 +637,31 @@
       },
     },
 
+    'angle_deqp_khr_gles3_vulkan_spirvgen_gtests': {
+      'angle_deqp_khr_gles3_vulkan_spirvgen_tests': {
+        'args': [
+          'angle_deqp_khr_gles3_tests',
+          '--use-angle=vulkan',
+          '--direct-spirv-gen',
+        ],
+        'android_args': [
+          '-v',
+          '--shard-timeout=500',
+        ],
+        'android_swarming': {
+          'shards': 2,
+        },
+        'desktop_args': [
+          '--bot-mode',
+        ],
+        'merge': {
+          'script': '//scripts/angle_deqp_test_merge.py',
+        },
+        'test': 'angle_deqp_khr_gles3_tests',
+        'use_isolated_scripts_api': True,
+      },
+    },
+
     'angle_end2end_gtests': {
       'angle_end2end_tests': {
         'android_args': [
@@ -798,10 +851,12 @@
       'angle_deqp_gles2_vulkan_spirvgen_gtests',
       'angle_deqp_gles31_vulkan_gtests',
       'angle_deqp_gles3_vulkan_gtests',
+      'angle_deqp_gles3_vulkan_spirvgen_gtests',
       'angle_deqp_khr_gles2_vulkan_gtests',
       'angle_deqp_khr_gles31_vulkan_gtests',
       'angle_deqp_khr_gles32_vulkan_gtests',
       'angle_deqp_khr_gles3_vulkan_gtests',
+      'angle_deqp_khr_gles3_vulkan_spirvgen_gtests',
       'angle_end2end_gtests',
       'angle_unit_gtests',
     ],
@@ -834,10 +889,12 @@
       'angle_deqp_gles3_vulkan_rotate180_gtests',
       'angle_deqp_gles3_vulkan_rotate270_gtests',
       'angle_deqp_gles3_vulkan_rotate90_gtests',
+      'angle_deqp_gles3_vulkan_spirvgen_gtests',
       'angle_deqp_khr_gles2_vulkan_gtests',
       'angle_deqp_khr_gles31_vulkan_gtests',
       'angle_deqp_khr_gles32_vulkan_gtests',
       'angle_deqp_khr_gles3_vulkan_gtests',
+      'angle_deqp_khr_gles3_vulkan_spirvgen_gtests',
       'angle_end2end_gtests',
       'angle_unit_gtests',
       'angle_white_box_gtests',
@@ -887,10 +944,12 @@
       'angle_deqp_gles3_vulkan_rotate180_gtests',
       'angle_deqp_gles3_vulkan_rotate270_gtests',
       'angle_deqp_gles3_vulkan_rotate90_gtests',
+      'angle_deqp_gles3_vulkan_spirvgen_gtests',
       'angle_deqp_khr_gles2_vulkan_gtests',
       'angle_deqp_khr_gles31_vulkan_gtests',
       'angle_deqp_khr_gles32_vulkan_gtests',
       'angle_deqp_khr_gles3_vulkan_gtests',
+      'angle_deqp_khr_gles3_vulkan_spirvgen_gtests',
       'angle_end2end_gtests',
       'angle_gles1_conformance_gtests',
       'angle_unit_gtests',
diff --git a/scripts/code_generation_hashes/Test_spec_JSON.json b/scripts/code_generation_hashes/Test_spec_JSON.json
index b732493..21f1309 100644
--- a/scripts/code_generation_hashes/Test_spec_JSON.json
+++ b/scripts/code_generation_hashes/Test_spec_JSON.json
@@ -1,6 +1,6 @@
 {
   "infra/specs/angle.json":
-    "6b5d3140fd8bcacbbf178c9ab7f3ca18",
+    "491b2ce67872b15dfc876527f60e8eac",
   "infra/specs/generate_test_spec_json.py":
     "348921bf70270ec6ee51fbb7e97d6925",
   "infra/specs/mixins.pyl":
@@ -8,7 +8,7 @@
   "infra/specs/test_suite_exceptions.pyl":
     "723460da84a90884a9668c07a0893390",
   "infra/specs/test_suites.pyl":
-    "1fc47f5463680c2b1de303ee9c2f4189",
+    "7f8bfb80651e592d04fced9d40766215",
   "infra/specs/variants.pyl":
     "8cfcaa99fa07ad2a2d5d14f220fd5037",
   "infra/specs/waterfalls.pyl":