Skip EGL Image Tests if no KHR_gl_texture_2D_image

These tests segfault on my machine, Linux AMD Radeon Pro WX 3200
series Polaris12 without this change.

Bug: dawn:2206
Change-Id: I38c629e2c4fb211ebd4c64971d36aca6eea707aa
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/157924
Reviewed-by: Stephen White <senorblanco@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: Gregg Tavares <gman@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
diff --git a/src/dawn/tests/white_box/EGLImageWrappingTests.cpp b/src/dawn/tests/white_box/EGLImageWrappingTests.cpp
index f54e7be..ba41b30 100644
--- a/src/dawn/tests/white_box/EGLImageWrappingTests.cpp
+++ b/src/dawn/tests/white_box/EGLImageWrappingTests.cpp
@@ -27,6 +27,7 @@
 
 #include <EGL/egl.h>
 
+#include <string>
 #include <utility>
 #include <vector>
 
@@ -57,6 +58,7 @@
             reinterpret_cast<PFNEGLGETCURRENTCONTEXTPROC>(LoadProc("eglGetCurrentContext"));
         GetCurrentDisplay =
             reinterpret_cast<PFNEGLGETCURRENTDISPLAYPROC>(LoadProc("eglGetCurrentDisplay"));
+        QueryString = reinterpret_cast<PFNEGLQUERYSTRINGPROC>(LoadProc("eglQueryString"));
     }
 
   private:
@@ -71,6 +73,7 @@
     PFNEGLDESTROYIMAGEPROC DestroyImage;
     PFNEGLGETCURRENTCONTEXTPROC GetCurrentContext;
     PFNEGLGETCURRENTDISPLAYPROC GetCurrentDisplay;
+    PFNEGLQUERYSTRINGPROC QueryString;
 
   private:
     DynamicLib mlibEGL;
@@ -130,6 +133,16 @@
         return {wgpu::FeatureName::DawnInternalUsages};
     }
 
+    bool HasExtension(const char* string) {
+        return strstr(egl.QueryString(egl.GetCurrentDisplay(), EGL_EXTENSIONS), string) != nullptr;
+    }
+
+    void SetUp() override {
+        DawnTest::SetUp();
+        // TODO(crbug.com/dawn/2206): remove this check if possible.
+        DAWN_TEST_UNSUPPORTED_IF(!HasExtension("KHR_gl_texture_2D_image"));
+    }
+
   public:
     ScopedEGLImage CreateEGLImage(uint32_t width,
                                   uint32_t height,