Add GLES1 conformance tests.

BUG=angleproject:2303

Change-Id: I5955485e2392c573125bd8785ece103a9607f7d1
Reviewed-on: https://chromium-review.googlesource.com/867311
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
diff --git a/.gitignore b/.gitignore
index b6cea41..78635bc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,6 +25,7 @@
 /testing
 /third_party/cherry
 /third_party/deqp/src
+/third_party/gles1_conform
 /third_party/glslang-angle/src
 /third_party/googletest/src
 /third_party/gyp
diff --git a/src/tests/BUILD.gn b/src/tests/BUILD.gn
index 8f9baa2..a0655ba 100644
--- a/src/tests/BUILD.gn
+++ b/src/tests/BUILD.gn
@@ -17,6 +17,7 @@
 declare_args() {
   # Don't build dEQP by default.
   build_angle_deqp_tests = false
+  build_angle_gles1_conform_tests = false
 }
 
 if (build_with_chromium) {
@@ -81,6 +82,9 @@
         "//src/tests:angle_deqp_gles3_tests",
       ]
     }
+    if (build_angle_gles1_conform_tests) {
+      deps += [ "//src/tests:angle_gles1_conformance_tests" ]
+    }
   }
 }
 
@@ -276,6 +280,212 @@
 }
 
 ###-----------------------------------------------------
+### ES 1 conformance tests
+###-----------------------------------------------------
+
+if (build_angle_gles1_conform_tests) {
+  gles1_conform_root = "//third_party/gles1_conform"
+
+  config("angle_gles1_conform_support") {
+    include_dirs = [
+      "$gles1_conform_root",
+      "$gles1_conform_root/conform/conform",
+      "$gles1_conform_root/conform/conformshell",
+      "$gles1_conform_root/ctk",
+      "$gles1_conform_root/fixed",
+      "$gles1_conform_root/include",
+      "$gles1_conform_root/platform",
+    ]
+
+    defines = [
+      "COMMON",
+      "CONFORM_ALTERNATE_MAIN",
+      "NULLWS",
+    ]
+
+    cflags = []
+    if (is_clang) {
+      # Remove when crbug.com/428099 is resolved.
+      cflags += [
+        "-Wno-implicit-function-declaration",
+        "-Wno-self-assign",
+        "-Wno-sign-compare",
+        "-Wno-unused-const-variable",
+        "-Wno-unused-variable",
+        "-Wno-int-to-pointer-cast",
+      ]
+    }
+  }
+
+  static_library("angle_gles1_conformance_no_gtest") {
+    configs += [ ":angle_gles1_conform_support" ]
+
+    sources = [
+      "$gles1_conform_root/conform/conform/apfunc.c",
+      "$gles1_conform_root/conform/conform/appl.c",
+      "$gles1_conform_root/conform/conform/bclear.c",
+      "$gles1_conform_root/conform/conform/bcolor.c",
+      "$gles1_conform_root/conform/conform/bcorner.c",
+      "$gles1_conform_root/conform/conform/blend.c",
+      "$gles1_conform_root/conform/conform/bufobj.c",
+      "$gles1_conform_root/conform/conform/clip.c",
+      "$gles1_conform_root/conform/conform/colramp.c",
+      "$gles1_conform_root/conform/conform/copytex.c",
+      "$gles1_conform_root/conform/conform/dither.c",
+      "$gles1_conform_root/conform/conform/divzero.c",
+      "$gles1_conform_root/conform/conform/drawtex.c",
+      "$gles1_conform_root/conform/conform/fogexp.c",
+      "$gles1_conform_root/conform/conform/foglin.c",
+      "$gles1_conform_root/conform/conform/gets.c",
+      "$gles1_conform_root/conform/conform/l_ac.c",
+      "$gles1_conform_root/conform/conform/l_al.c",
+      "$gles1_conform_root/conform/conform/l_am.c",
+      "$gles1_conform_root/conform/conform/l_ap.c",
+      "$gles1_conform_root/conform/conform/l_as.c",
+      "$gles1_conform_root/conform/conform/l_dl.c",
+      "$gles1_conform_root/conform/conform/l_dm.c",
+      "$gles1_conform_root/conform/conform/l_dmn.c",
+      "$gles1_conform_root/conform/conform/l_dmp.c",
+      "$gles1_conform_root/conform/conform/l_em.c",
+      "$gles1_conform_root/conform/conform/l_se.c",
+      "$gles1_conform_root/conform/conform/l_sed.c",
+      "$gles1_conform_root/conform/conform/l_sen.c",
+      "$gles1_conform_root/conform/conform/l_sep.c",
+      "$gles1_conform_root/conform/conform/l_sl.c",
+      "$gles1_conform_root/conform/conform/l_sm.c",
+      "$gles1_conform_root/conform/conform/l_sn.c",
+      "$gles1_conform_root/conform/conform/l_sp.c",
+      "$gles1_conform_root/conform/conform/lineaa.c",
+      "$gles1_conform_root/conform/conform/linehv.c",
+      "$gles1_conform_root/conform/conform/linerast.c",
+      "$gles1_conform_root/conform/conform/logicop.c",
+      "$gles1_conform_root/conform/conform/mask.c",
+      "$gles1_conform_root/conform/conform/mget.c",
+      "$gles1_conform_root/conform/conform/mipgen.c",
+      "$gles1_conform_root/conform/conform/miplevels.c",
+      "$gles1_conform_root/conform/conform/miplin.c",
+      "$gles1_conform_root/conform/conform/mipsel.c",
+      "$gles1_conform_root/conform/conform/mpalette.c",
+      "$gles1_conform_root/conform/conform/mquery.c",
+      "$gles1_conform_root/conform/conform/mstack.c",
+      "$gles1_conform_root/conform/conform/multitex.c",
+      "$gles1_conform_root/conform/conform/mustpass.c",
+      "$gles1_conform_root/conform/conform/packpix.c",
+      "$gles1_conform_root/conform/conform/pntaa.c",
+      "$gles1_conform_root/conform/conform/pntrast.c",
+      "$gles1_conform_root/conform/conform/pntsprt.c",
+      "$gles1_conform_root/conform/conform/pntszary.c",
+      "$gles1_conform_root/conform/conform/polycull.c",
+      "$gles1_conform_root/conform/conform/readfmt.c",
+      "$gles1_conform_root/conform/conform/rescalen.c",
+      "$gles1_conform_root/conform/conform/scissor.c",
+      "$gles1_conform_root/conform/conform/spclear.c",
+      "$gles1_conform_root/conform/conform/spcorner.c",
+      "$gles1_conform_root/conform/conform/spfunc.c",
+      "$gles1_conform_root/conform/conform/spop.c",
+      "$gles1_conform_root/conform/conform/tests.c",
+      "$gles1_conform_root/conform/conform/texcombine.c",
+      "$gles1_conform_root/conform/conform/texdecal.c",
+      "$gles1_conform_root/conform/conform/texedge.c",
+      "$gles1_conform_root/conform/conform/texpalet.c",
+      "$gles1_conform_root/conform/conform/trirast.c",
+      "$gles1_conform_root/conform/conform/tritile.c",
+      "$gles1_conform_root/conform/conform/userclip.c",
+      "$gles1_conform_root/conform/conform/vorder.c",
+      "$gles1_conform_root/conform/conform/vpclamp.c",
+      "$gles1_conform_root/conform/conform/xform.c",
+      "$gles1_conform_root/conform/conform/xformmix.c",
+      "$gles1_conform_root/conform/conform/xformn.c",
+      "$gles1_conform_root/conform/conform/xformvp.c",
+      "$gles1_conform_root/conform/conform/xformw.c",
+      "$gles1_conform_root/conform/conform/zbclear.c",
+      "$gles1_conform_root/conform/conform/zbfunc.c",
+      "$gles1_conform_root/conform/conformshell/conform.h",
+      "$gles1_conform_root/conform/conformshell/driver.c",
+      "$gles1_conform_root/conform/conformshell/driver.h",
+      "$gles1_conform_root/conform/conformshell/path.c",
+      "$gles1_conform_root/conform/conformshell/path.h",
+      "$gles1_conform_root/conform/conformshell/pathdata.c",
+      "$gles1_conform_root/conform/conformshell/pathdata.h",
+      "$gles1_conform_root/conform/conformshell/paths.c",
+      "$gles1_conform_root/conform/conformshell/shell.c",
+      "$gles1_conform_root/conform/conformshell/util.c",
+      "$gles1_conform_root/conform/conformshell/util.h",
+      "$gles1_conform_root/conform/conformshell/utilg.c",
+      "$gles1_conform_root/conform/conformshell/utilg.h",
+      "$gles1_conform_root/conform/conformshell/utilm.c",
+      "$gles1_conform_root/conform/conformshell/utilm.h",
+      "$gles1_conform_root/conform/conformshell/utilp.c",
+      "$gles1_conform_root/conform/conformshell/utilp.h",
+      "$gles1_conform_root/conform/conformshell/utilru.c",
+      "$gles1_conform_root/conform/conformshell/utilru.h",
+      "$gles1_conform_root/conform/conformshell/utils.c",
+      "$gles1_conform_root/conform/conformshell/utils.h",
+      "$gles1_conform_root/conform/conformshell/utilt.c",
+      "$gles1_conform_root/conform/conformshell/utilt.h",
+      "$gles1_conform_root/ctk/ctk.h",
+      "$gles1_conform_root/ctk/ctkn.c",
+      "$gles1_conform_root/ctk/glext.c",
+      "$gles1_conform_root/fixed/fixed.c",
+      "$gles1_conform_root/fixed/float64.c",
+      "$gles1_conform_root/fixed/int32.c",
+      "$gles1_conform_root/fixed/int64.c",
+      "$gles1_conform_root/platform/gl_fixed_point.h",
+      "$gles1_conform_root/platform/gl_single_precision.h",
+      "$gles1_conform_root/platform/math_fixed.h",
+      "$gles1_conform_root/platform/math_float.h",
+      "$gles1_conform_root/platform/platform.h",
+      "$gles1_conform_root/platform/platform_gl.h",
+      "$gles1_conform_root/platform/platform_random.h",
+      "$gles1_conform_root/platform/platform_stdlib.h",
+      "$gles1_conform_root/platform/platform_types.h",
+      "$gles1_conform_root/platform/printf_fixed.h",
+      "$gles1_conform_root/platform/printf_float.h",
+      "$gles1_conform_root/platform/random.c",
+      "$gles1_conform_root/platform/stdlib_ansi.h",
+    ]
+  }
+
+  test("angle_gles1_conformance_tests") {
+    deps = googletest_deps + [
+             ":angle_gles1_conformance_no_gtest",
+             angle_root + ":angle_common",
+             angle_root + ":angle_util",
+             angle_root + ":libEGL",
+             angle_root + ":libGLESv1_CM",
+             angle_root + ":libGLESv2",
+           ]
+
+    include_dirs = [
+      "../../src/tests",
+      "../../util",
+    ]
+
+    sources = [
+      "gles1_conformance_tests/ConformanceTests.cpp",
+      "test_utils/ANGLETest.cpp",
+      "test_utils/ANGLETest.h",
+      "test_utils/angle_test_configs.cpp",
+      "test_utils/angle_test_configs.h",
+      "test_utils/angle_test_instantiate.cpp",
+      "test_utils/angle_test_instantiate.h",
+      "test_utils/gl_raii.h",
+    ]
+
+    configs += [
+      angle_root + ":internal_config",
+      angle_root + ":libANGLE_config",
+    ]
+
+    if (build_with_chromium) {
+      sources += [ "//gpu/angle_end2end_tests_main.cc" ]
+    } else {
+      sources += [ "angle_end2end_tests_main.cpp" ]
+    }
+  }
+}
+
+###-----------------------------------------------------
 ### dEQP tests
 ###-----------------------------------------------------
 
diff --git a/src/tests/gles1_conformance_tests/ConformanceTests.cpp b/src/tests/gles1_conformance_tests/ConformanceTests.cpp
new file mode 100644
index 0000000..d72fa43
--- /dev/null
+++ b/src/tests/gles1_conformance_tests/ConformanceTests.cpp
@@ -0,0 +1,515 @@
+//
+// Copyright 2017 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// ConformanceTests.cpp:
+//   GLES1 conformance tests.
+//   Function prototypes taken from tproto.h and turned into gtest tests using a macro.
+//
+
+#include "test_utils/ANGLETest.h"
+#include "test_utils/gl_raii.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// ES 1.0
+extern long AmbLightExec(void);
+extern long AmbMatExec(void);
+extern long AmbSceneExec(void);
+extern long APFuncExec(void);
+extern long AtnConstExec(void);
+extern long AtnPosExec(void);
+extern long BClearExec(void);
+extern long BColorExec(void);
+extern long BCornerExec(void);
+extern long BlendExec(void);
+extern long ClipExec(void);
+extern long ColRampExec(void);
+extern long CopyTexExec(void);
+extern long DifLightExec(void);
+extern long DifMatExec(void);
+extern long DifMatNormExec(void);
+extern long DifMatPosExec(void);
+extern long DitherExec(void);
+extern long DivZeroExec(void);
+extern long EmitMatExec(void);
+extern long FogExpExec(void);
+extern long FogLinExec(void);
+extern long LineAntiAliasExec(void);
+extern long LineHVExec(void);
+extern long LineRasterExec(void);
+extern long LogicOpExec(void);
+extern long MipExec(void);
+extern long MipLevelsExec(void);
+extern long MipLinExec(void);
+extern long MipSelectExec(void);
+extern long MaskExec(void);
+extern long MatrixStackExec(void);
+extern long MultiTexExec(void);
+extern long MustPassExec(void);
+extern long PackedPixelsExec(void);
+extern long PointAntiAliasExec(void);
+extern long PointRasterExec(void);
+extern long PolyCullExec(void);
+extern long ReadFormatExec(void);
+extern long RescaleNormalExec(void);
+extern long ScissorExec(void);
+extern long SPClearExec(void);
+extern long SPCornerExec(void);
+extern long SpecExpExec(void);
+extern long SpecExpNormExec(void);
+extern long SpecLightExec(void);
+extern long SpecMatExec(void);
+extern long SpecNormExec(void);
+extern long SPFuncExec(void);
+extern long SPOpExec(void);
+extern long SpotPosExec(void);
+extern long SpotExpPosExec(void);
+extern long SpotExpDirExec(void);
+extern long TexDecalExec(void);
+extern long TexPaletExec(void);
+extern long TextureEdgeClampExec(void);
+extern long TriRasterExec(void);
+extern long TriTileExec(void);
+extern long VertexOrderExec(void);
+extern long ViewportClampExec(void);
+extern long XFormExec(void);
+extern long XFormMixExec(void);
+extern long XFormNormalExec(void);
+extern long XFormViewportExec(void);
+extern long XFormHomogenousExec(void);
+extern long ZBClearExec(void);
+extern long ZBFuncExec(void);
+
+// GL_OES_draw_texture
+extern long DrawTexExec(void);
+
+// GL_OES_query_matrix
+extern long MatrixQueryExec(void);
+
+// ES 1.1
+extern long BufferObjectExec(void);
+extern long PointSizeArrayExec(void);
+extern long PointSpriteExec(void);
+extern long UserClipExec(void);
+extern long MatrixGetTestExec(void);
+extern long GetsExec(void);
+extern long TexCombineExec(void);
+
+// GL_OES_matrix_palette
+extern long MatrixPaletteExec(void);
+
+#define CONFORMANCE_TEST_ERROR (-1)
+
+#ifdef __cplusplus
+}
+
+#endif
+namespace angle
+{
+class GLES1ConformanceTest : public ANGLETest
+{
+  protected:
+    GLES1ConformanceTest()
+    {
+        setWindowWidth(48);
+        setWindowHeight(48);
+        setConfigRedBits(8);
+        setConfigGreenBits(8);
+        setConfigBlueBits(8);
+        setConfigAlphaBits(8);
+        setConfigDepthBits(24);
+        setConfigStencilBits(8);
+    }
+};
+
+TEST_P(GLES1ConformanceTest, AmbLight)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbLightExec());
+}
+
+TEST_P(GLES1ConformanceTest, AmbMat)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbMatExec());
+}
+
+TEST_P(GLES1ConformanceTest, AmbScene)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, AmbSceneExec());
+}
+
+TEST_P(GLES1ConformanceTest, APFunc)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, APFuncExec());
+}
+
+TEST_P(GLES1ConformanceTest, AtnConst)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, AtnConstExec());
+}
+
+TEST_P(GLES1ConformanceTest, AtnPos)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, AtnPosExec());
+}
+
+TEST_P(GLES1ConformanceTest, BClear)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, BClearExec());
+}
+
+TEST_P(GLES1ConformanceTest, BColor)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, BColorExec());
+}
+
+TEST_P(GLES1ConformanceTest, BCorner)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, BCornerExec());
+}
+
+TEST_P(GLES1ConformanceTest, Blend)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, BlendExec());
+}
+
+TEST_P(GLES1ConformanceTest, Clip)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, ClipExec());
+}
+
+TEST_P(GLES1ConformanceTest, ColRamp)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, ColRampExec());
+}
+
+TEST_P(GLES1ConformanceTest, CopyTex)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, CopyTexExec());
+}
+
+TEST_P(GLES1ConformanceTest, DifLight)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, DifLightExec());
+}
+
+TEST_P(GLES1ConformanceTest, DifMat)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatExec());
+}
+
+TEST_P(GLES1ConformanceTest, DifMatNorm)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatNormExec());
+}
+
+TEST_P(GLES1ConformanceTest, DifMatPos)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, DifMatPosExec());
+}
+
+TEST_P(GLES1ConformanceTest, Dither)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, DitherExec());
+}
+
+TEST_P(GLES1ConformanceTest, DivZero)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, DivZeroExec());
+}
+
+TEST_P(GLES1ConformanceTest, EmitMat)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, EmitMatExec());
+}
+
+TEST_P(GLES1ConformanceTest, FogExp)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, FogExpExec());
+}
+
+TEST_P(GLES1ConformanceTest, FogLin)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, FogLinExec());
+}
+
+TEST_P(GLES1ConformanceTest, LineAntiAlias)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, LineAntiAliasExec());
+}
+
+TEST_P(GLES1ConformanceTest, LineHV)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, LineHVExec());
+}
+
+TEST_P(GLES1ConformanceTest, LineRaster)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, LineRasterExec());
+}
+
+TEST_P(GLES1ConformanceTest, LogicOp)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, LogicOpExec());
+}
+
+TEST_P(GLES1ConformanceTest, Mip)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MipExec());
+}
+
+TEST_P(GLES1ConformanceTest, MipLevels)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MipLevelsExec());
+}
+
+TEST_P(GLES1ConformanceTest, MipLin)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MipLinExec());
+}
+
+TEST_P(GLES1ConformanceTest, MipSelect)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MipSelectExec());
+}
+
+TEST_P(GLES1ConformanceTest, Mask)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MaskExec());
+}
+
+TEST_P(GLES1ConformanceTest, MatrixStack)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixStackExec());
+}
+
+TEST_P(GLES1ConformanceTest, MultiTex)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MultiTexExec());
+}
+
+TEST_P(GLES1ConformanceTest, MustPass)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MustPassExec());
+}
+
+TEST_P(GLES1ConformanceTest, PackedPixels)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, PackedPixelsExec());
+}
+
+TEST_P(GLES1ConformanceTest, PointAntiAlias)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, PointAntiAliasExec());
+}
+
+TEST_P(GLES1ConformanceTest, PointRaster)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, PointRasterExec());
+}
+
+TEST_P(GLES1ConformanceTest, PolyCull)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, PolyCullExec());
+}
+
+TEST_P(GLES1ConformanceTest, ReadFormat)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, ReadFormatExec());
+}
+
+TEST_P(GLES1ConformanceTest, RescaleNormal)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, RescaleNormalExec());
+}
+
+TEST_P(GLES1ConformanceTest, Scissor)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, ScissorExec());
+}
+
+TEST_P(GLES1ConformanceTest, SPClear)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SPClearExec());
+}
+
+TEST_P(GLES1ConformanceTest, SPCorner)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SPCornerExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpecExp)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecExpExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpecExpNorm)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecExpNormExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpecLight)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecLightExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpecMat)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecMatExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpecNorm)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpecNormExec());
+}
+
+TEST_P(GLES1ConformanceTest, SPFunc)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SPFuncExec());
+}
+
+TEST_P(GLES1ConformanceTest, SPOp)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SPOpExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpotPos)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotPosExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpotExpPos)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotExpPosExec());
+}
+
+TEST_P(GLES1ConformanceTest, SpotExpDir)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, SpotExpDirExec());
+}
+
+TEST_P(GLES1ConformanceTest, TexDecal)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, TexDecalExec());
+}
+
+TEST_P(GLES1ConformanceTest, TexPalet)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, TexPaletExec());
+}
+
+TEST_P(GLES1ConformanceTest, TextureEdgeClamp)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, TextureEdgeClampExec());
+}
+
+TEST_P(GLES1ConformanceTest, TriRaster)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, TriRasterExec());
+}
+
+TEST_P(GLES1ConformanceTest, TriTile)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, TriTileExec());
+}
+
+TEST_P(GLES1ConformanceTest, VertexOrder)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, VertexOrderExec());
+}
+
+TEST_P(GLES1ConformanceTest, ViewportClamp)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, ViewportClampExec());
+}
+
+TEST_P(GLES1ConformanceTest, XForm)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormExec());
+}
+
+TEST_P(GLES1ConformanceTest, XFormMix)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormMixExec());
+}
+
+TEST_P(GLES1ConformanceTest, XFormNormal)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormNormalExec());
+}
+
+TEST_P(GLES1ConformanceTest, XFormViewport)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormViewportExec());
+}
+
+TEST_P(GLES1ConformanceTest, XFormHomogenous)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, XFormHomogenousExec());
+}
+
+TEST_P(GLES1ConformanceTest, ZBClear)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, ZBClearExec());
+}
+
+TEST_P(GLES1ConformanceTest, ZBFunc)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, ZBFuncExec());
+}
+
+TEST_P(GLES1ConformanceTest, DrawTex)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, DrawTexExec());
+}
+
+TEST_P(GLES1ConformanceTest, MatrixQuery)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixQueryExec());
+}
+
+TEST_P(GLES1ConformanceTest, BufferObject)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, BufferObjectExec());
+}
+
+TEST_P(GLES1ConformanceTest, PointSizeArray)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, PointSizeArrayExec());
+}
+
+TEST_P(GLES1ConformanceTest, PointSprite)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, PointSpriteExec());
+}
+
+TEST_P(GLES1ConformanceTest, UserClip)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, UserClipExec());
+}
+
+TEST_P(GLES1ConformanceTest, MatrixGetTest)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixGetTestExec());
+}
+
+TEST_P(GLES1ConformanceTest, Gets)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, GetsExec());
+}
+
+TEST_P(GLES1ConformanceTest, TexCombine)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, TexCombineExec());
+}
+
+TEST_P(GLES1ConformanceTest, MatrixPalette)
+{
+    ASSERT_NE(CONFORMANCE_TEST_ERROR, MatrixPaletteExec());
+}
+
+ANGLE_INSTANTIATE_TEST(GLES1ConformanceTest, ES1_OPENGL());
+}
diff --git a/src/tests/test_utils/angle_test_configs.cpp b/src/tests/test_utils/angle_test_configs.cpp
index c6091c2..f6f716a 100644
--- a/src/tests/test_utils/angle_test_configs.cpp
+++ b/src/tests/test_utils/angle_test_configs.cpp
@@ -370,6 +370,11 @@
 }  // namespace egl_platform
 
 // ANGLE tests platforms
+PlatformParameters ES1_D3D9()
+{
+    return PlatformParameters(1, 0, egl_platform::D3D9());
+}
+
 PlatformParameters ES2_D3D9()
 {
     return PlatformParameters(2, 0, egl_platform::D3D9());
@@ -380,6 +385,11 @@
     return PlatformParameters(2, 0, egl_platform::D3D9_REFERENCE());
 }
 
+PlatformParameters ES1_D3D11()
+{
+    return PlatformParameters(1, 0, egl_platform::D3D11());
+}
+
 PlatformParameters ES2_D3D11()
 {
     return PlatformParameters(2, 0, egl_platform::D3D11());
@@ -535,6 +545,11 @@
     return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1_REFERENCE());
 }
 
+PlatformParameters ES1_OPENGLES()
+{
+    return PlatformParameters(1, 0, egl_platform::OPENGLES());
+}
+
 PlatformParameters ES2_OPENGLES()
 {
     return PlatformParameters(2, 0, egl_platform::OPENGLES());
@@ -565,6 +580,11 @@
     return PlatformParameters(3, 1, egl_platform::OPENGLES(major, minor));
 }
 
+PlatformParameters ES1_OPENGL()
+{
+    return PlatformParameters(1, 0, egl_platform::OPENGL());
+}
+
 PlatformParameters ES2_OPENGL()
 {
     return PlatformParameters(2, 0, egl_platform::OPENGL());
@@ -595,6 +615,11 @@
     return PlatformParameters(3, 1, egl_platform::OPENGL(major, minor));
 }
 
+PlatformParameters ES1_NULL()
+{
+    return PlatformParameters(1, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
+}
+
 PlatformParameters ES2_NULL()
 {
     return PlatformParameters(2, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
@@ -610,6 +635,11 @@
     return PlatformParameters(3, 1, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
 }
 
+PlatformParameters ES1_VULKAN()
+{
+    return PlatformParameters(1, 0, egl_platform::VULKAN());
+}
+
 PlatformParameters ES2_VULKAN()
 {
     return PlatformParameters(2, 0, egl_platform::VULKAN());
diff --git a/src/tests/test_utils/angle_test_configs.h b/src/tests/test_utils/angle_test_configs.h
index cf36cd8..88fafc6 100644
--- a/src/tests/test_utils/angle_test_configs.h
+++ b/src/tests/test_utils/angle_test_configs.h
@@ -90,9 +90,11 @@
 }  // namespace egl_platform
 
 // ANGLE tests platforms
+PlatformParameters ES1_D3D9();
 PlatformParameters ES2_D3D9();
 PlatformParameters ES2_D3D9_REFERENCE();
 
+PlatformParameters ES1_D3D11();
 PlatformParameters ES2_D3D11();
 PlatformParameters ES2_D3D11(EGLenum presentPath);
 PlatformParameters ES2_D3D11_FL11_0();
@@ -130,6 +132,7 @@
 PlatformParameters ES3_D3D11_FL11_0_REFERENCE();
 PlatformParameters ES3_D3D11_FL10_1_REFERENCE();
 
+PlatformParameters ES1_OPENGL();
 PlatformParameters ES2_OPENGL();
 PlatformParameters ES2_OPENGL(EGLint major, EGLint minor);
 PlatformParameters ES3_OPENGL();
@@ -137,6 +140,7 @@
 PlatformParameters ES31_OPENGL();
 PlatformParameters ES31_OPENGL(EGLint major, EGLint minor);
 
+PlatformParameters ES1_OPENGLES();
 PlatformParameters ES2_OPENGLES();
 PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor);
 PlatformParameters ES3_OPENGLES();
@@ -144,10 +148,12 @@
 PlatformParameters ES31_OPENGLES();
 PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor);
 
+PlatformParameters ES1_NULL();
 PlatformParameters ES2_NULL();
 PlatformParameters ES3_NULL();
 PlatformParameters ES31_NULL();
 
+PlatformParameters ES1_VULKAN();
 PlatformParameters ES2_VULKAN();
 
 }  // namespace angle