When X11 is unavailable, default to a headless display.

Bug 20104157

Change-Id: Idc6cbadc69921b3fa5c299ffe8ad4d2442d0478f
Reviewed-on: https://swiftshader-review.googlesource.com/2901
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Common/Version.h b/src/Common/Version.h
index 288fa09..e144bf4 100644
--- a/src/Common/Version.h
+++ b/src/Common/Version.h
@@ -1,7 +1,7 @@
 #define MAJOR_VERSION 3
 #define MINOR_VERSION 2
-#define BUILD_VERSION 8
-#define BUILD_REVISION 47658
+#define BUILD_VERSION 9
+#define BUILD_REVISION 47659
 
 #define STRINGIFY(x) #x
 #define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/Main/libX11.cpp b/src/Main/libX11.cpp
index ebd76ff..9f6a56e 100644
--- a/src/Main/libX11.cpp
+++ b/src/Main/libX11.cpp
@@ -31,6 +31,11 @@
 
 LibX11exports *LibX11::operator->()
 {
+	return loadExports();
+}
+
+LibX11exports *LibX11::loadExports()
+{
     static void *libX11 = nullptr;
     static void *libXext = nullptr;
     static LibX11exports *libX11exports = nullptr;
@@ -38,8 +43,12 @@
     if(!libX11)
     {
         libX11 = loadLibrary("libX11.so");
-        libXext = loadLibrary("libXext.so");
-        libX11exports = new LibX11exports(libX11, libXext);
+
+        if(libX11)
+        {
+			libXext = loadLibrary("libXext.so");
+			libX11exports = new LibX11exports(libX11, libXext);
+		}
     }
 
     return libX11exports;
diff --git a/src/Main/libX11.hpp b/src/Main/libX11.hpp
index eb5f6fc..897a662 100644
--- a/src/Main/libX11.hpp
+++ b/src/Main/libX11.hpp
@@ -38,7 +38,15 @@
 class LibX11
 {
 public:
+	operator bool()
+	{
+		return loadExports();
+	}
+
     LibX11exports *operator->();
+
+private:
+	LibX11exports *loadExports();
 };
 
 extern LibX11 libX11;
diff --git a/src/OpenGL/libEGL/Display.cpp b/src/OpenGL/libEGL/Display.cpp
index 28042f9..ac26c5e 100644
--- a/src/OpenGL/libEGL/Display.cpp
+++ b/src/OpenGL/libEGL/Display.cpp
@@ -44,7 +44,14 @@
         if(platform == EGL_UNKNOWN)   // Default
         {
             #if defined(__unix__)
-                platform = EGL_PLATFORM_X11_EXT;
+				if(libX11)
+				{
+					platform = EGL_PLATFORM_X11_EXT;
+				}
+				else
+				{
+					platform = EGL_PLATFORM_GBM_KHR;
+				}
             #endif
         }