ANGLEPerfTest: Add option to disable GL debug callbacks.

Disable GL debug callbacks on native ARM GLES1.
This fixes native GLES1 replay on Pixel 6 when running debug builds.

Bug: angleproject:7447
Change-Id: I0059c07f4f2fb944e54a5163863b487bc31ab28f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3716584
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
diff --git a/src/tests/perf_tests/ANGLEPerfTest.cpp b/src/tests/perf_tests/ANGLEPerfTest.cpp
index 8fcdb84..bef5193 100644
--- a/src/tests/perf_tests/ANGLEPerfTest.cpp
+++ b/src/tests/perf_tests/ANGLEPerfTest.cpp
@@ -860,7 +860,7 @@
     }
 
 #if defined(ANGLE_ENABLE_ASSERTS)
-    if (IsGLExtensionEnabled("GL_KHR_debug"))
+    if (IsGLExtensionEnabled("GL_KHR_debug") && mEnableDebugCallback)
     {
         EnableDebugCallback(&PerfTestDebugCallback, this);
     }
diff --git a/src/tests/perf_tests/ANGLEPerfTest.h b/src/tests/perf_tests/ANGLEPerfTest.h
index 8d8efa7..0352185 100644
--- a/src/tests/perf_tests/ANGLEPerfTest.h
+++ b/src/tests/perf_tests/ANGLEPerfTest.h
@@ -220,6 +220,7 @@
     void updatePerfCounters();
 
     bool mIsTimestampQueryAvailable;
+    bool mEnableDebugCallback = true;
 
   private:
     void SetUp() override;
diff --git a/src/tests/perf_tests/TracePerfTest.cpp b/src/tests/perf_tests/TracePerfTest.cpp
index ad4d0c9..fd9c391 100644
--- a/src/tests/perf_tests/TracePerfTest.cpp
+++ b/src/tests/perf_tests/TracePerfTest.cpp
@@ -1260,6 +1260,12 @@
         addExtensionPrerequisite("GL_EXT_texture_buffer");
     }
 
+    // glDebugMessageControlKHR and glDebugMessageCallbackKHR crash on ARM GLES1.
+    if (IsARM() && mParams->traceInfo.contextClientMajorVersion == 1)
+    {
+        mEnableDebugCallback = false;
+    }
+
     ASSERT(mParams->surfaceType == SurfaceType::Window || gEnableAllTraceTests);
     ASSERT(mParams->eglParameters.deviceType == EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE ||
            gEnableAllTraceTests);