diff --git a/src/OpenGL/libEGL/Display.cpp b/src/OpenGL/libEGL/Display.cpp
index e6c8743..69baa9c 100644
--- a/src/OpenGL/libEGL/Display.cpp
+++ b/src/OpenGL/libEGL/Display.cpp
@@ -29,29 +29,43 @@
 typedef std::map<EGLNativeDisplayType, Display*> DisplayMap; 
 DisplayMap displays;
 
-egl::Display *Display::getDisplay(EGLNativeDisplayType displayId)
+egl::Display *Display::getPlatformDisplay(EGLenum platform, EGLNativeDisplayType displayId)
 {
-    if(displayId == EGL_DEFAULT_DISPLAY)
+    if(platform == EGL_UNKNOWN)   // Default
     {
         #if defined(__unix__)
-            displayId = XOpenDisplay(NULL);
+            platform = EGL_PLATFORM_X11_EXT;
         #endif
     }
 
+    if(displayId == EGL_DEFAULT_DISPLAY)
+    {
+        if(platform == EGL_PLATFORM_X11_EXT)
+        {
+            #if defined(__unix__)
+                displayId = XOpenDisplay(NULL);
+            #else
+                return error(EGL_BAD_PARAMETER, (egl::Display*)EGL_NO_DISPLAY);
+            #endif
+        }
+    }
+    else
+    {
+        // FIXME: Check if displayId is a valid display device context for <platform>
+    }
+
     if(displays.find(displayId) != displays.end())
     {
         return displays[displayId];
     }
 
-    // FIXME: Check if displayId is a valid display device context
-
-    egl::Display *display = new egl::Display(displayId);
+    egl::Display *display = new egl::Display(platform, displayId);
 
     displays[displayId] = display;
     return display;
 }
 
-Display::Display(EGLNativeDisplayType displayId) : displayId(displayId)
+Display::Display(EGLenum platform, EGLNativeDisplayType displayId) : platform(platform), displayId(displayId)
 {
     mMinSwapInterval = 1;
     mMaxSwapInterval = 1;
@@ -449,14 +463,19 @@
 
 bool Display::isValidWindow(EGLNativeWindowType window)
 {
-	#if defined(_WIN32)
-		return IsWindow(window) == TRUE;
-	#else
-		XWindowAttributes windowAttributes;
-		Status status = XGetWindowAttributes(displayId, window, &windowAttributes);
-			
-		return status == True;
+    #if defined(_WIN32)
+        return IsWindow(window) == TRUE;
+    #else
+        if(platform == EGL_PLATFORM_X11_EXT)
+        {
+            XWindowAttributes windowAttributes;
+            Status status = XGetWindowAttributes(displayId, window, &windowAttributes);
+
+            return status == True;
+        }
 	#endif
+
+    return false;
 }
 
 bool Display::hasExistingWindowSurface(EGLNativeWindowType window)
@@ -509,19 +528,29 @@
 	
 		ReleaseDC(0, deviceContext);
 	#else
-		Screen *screen = XDefaultScreenOfDisplay(displayId);
-		displayMode.width = XWidthOfScreen(screen);
-		displayMode.height = XHeightOfScreen(screen);
-		unsigned int bpp = XPlanesOfScreen(screen);
+        if(platform == EGL_PLATFORM_X11_EXT)
+        {
+            Screen *screen = XDefaultScreenOfDisplay(displayId);
+            displayMode.width = XWidthOfScreen(screen);
+            displayMode.height = XHeightOfScreen(screen);
+            unsigned int bpp = XPlanesOfScreen(screen);
 
-		switch(bpp)
-		{
-		case 32: displayMode.format = sw::FORMAT_X8R8G8B8; break;
-		case 24: displayMode.format = sw::FORMAT_R8G8B8;   break;
-		case 16: displayMode.format = sw::FORMAT_R5G6B5;   break;
-		default:
-			ASSERT(false);   // Unexpected display mode color depth
-		}
+            switch(bpp)
+            {
+            case 32: displayMode.format = sw::FORMAT_X8R8G8B8; break;
+            case 24: displayMode.format = sw::FORMAT_R8G8B8;   break;
+            case 16: displayMode.format = sw::FORMAT_R5G6B5;   break;
+            default:
+                ASSERT(false);   // Unexpected display mode color depth
+            }
+        }
+        else if(platform == EGL_PLATFORM_GBM_MESA)
+        {
+            displayMode.width = 0;
+            displayMode.height = 0;
+            displayMode.format = sw::FORMAT_X8R8G8B8;
+        }
+        else UNREACHABLE();
 	#endif
 
 	return displayMode;
diff --git a/src/OpenGL/libEGL/Display.h b/src/OpenGL/libEGL/Display.h
index ff1d7c8..3c47853 100644
--- a/src/OpenGL/libEGL/Display.h
+++ b/src/OpenGL/libEGL/Display.h
@@ -30,7 +30,7 @@
 	public:
 		~Display();
 
-		static egl::Display *getDisplay(EGLNativeDisplayType displayId);
+		static egl::Display *getPlatformDisplay(EGLenum platform, EGLNativeDisplayType displayId);
 
 		bool initialize();
 		void terminate();
@@ -59,10 +59,11 @@
 		const char *getExtensionString() const;
 
 	private:
-		Display(EGLNativeDisplayType displayId);
+		Display(EGLenum platform, EGLNativeDisplayType displayId);
 
 		DisplayMode getDisplayMode() const;
 
+        const EGLenum platform;
 		const EGLNativeDisplayType displayId;
 
 		EGLint mMaxSwapInterval;
diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp
index 6f4a4c8..006005d 100644
--- a/src/OpenGL/libEGL/libEGL.cpp
+++ b/src/OpenGL/libEGL/libEGL.cpp
@@ -105,7 +105,7 @@
 
     try
     {
-        return egl::Display::getDisplay(display_id);
+        return egl::Display::getPlatformDisplay(EGL_UNKNOWN, display_id);
     }
     catch(std::bad_alloc&)
     {
@@ -180,7 +180,10 @@
     {
         if(dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS)
         {
-            return success("EGL_EXT_client_extensions");
+            return success("EGL_KHR_platform_gbm "
+                           "EGL_KHR_platform_x11 "
+                           "EGL_EXT_client_extensions "
+                           "EGL_EXT_platform_base");
         }
 
         egl::Display *display = static_cast<egl::Display*>(dpy);
@@ -1191,6 +1194,32 @@
     return EGL_FALSE;
 }
 
+EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list)
+{
+    TRACE("(EGLenum platform = 0x%X, void *native_display = 0x%0.8p, const EGLint *attrib_list = 0x%0.8p)", platform, native_display, attrib_list);
+
+    try
+    {
+        return egl::Display::getPlatformDisplay(platform, (EGLNativeDisplayType)native_display);
+    }
+    catch(std::bad_alloc&)
+    {
+        return error(EGL_BAD_ALLOC, EGL_NO_DISPLAY);
+    }
+
+    return EGL_NO_DISPLAY;
+}
+
+EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
+{
+    return eglCreateWindowSurface(dpy, config, (EGLNativeWindowType)native_window, attrib_list);
+}
+
+EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
+{
+    return eglCreatePixmapSurface(dpy, config, (EGLNativePixmapType)native_pixmap, attrib_list);
+}
+
 __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char *procname)
 {
     TRACE("(const char *procname = \"%s\")", procname);
@@ -1209,6 +1238,9 @@
 
 			EXTENSION(eglCreateImageKHR),
 			EXTENSION(eglDestroyImageKHR),
+            EXTENSION(eglGetPlatformDisplayEXT),
+            EXTENSION(eglCreatePlatformWindowSurfaceEXT),
+            EXTENSION(eglCreatePlatformPixmapSurfaceEXT),
 
 			#undef EXTENSION
 		};
diff --git a/src/OpenGL/libEGL/libEGL.def b/src/OpenGL/libEGL/libEGL.def
index 4555d71..e9293a9 100644
--- a/src/OpenGL/libEGL/libEGL.def
+++ b/src/OpenGL/libEGL/libEGL.def
@@ -1,44 +1,47 @@
-LIBRARY	libEGL
-EXPORTS
-	eglBindAPI                      @14
-	eglBindTexImage                 @20
-	eglChooseConfig                 @7
-	eglCopyBuffers                  @33
-	eglCreateContext                @23
-	eglCreatePbufferFromClientBuffer        @18
-	eglCreatePbufferSurface         @10
-	eglCreatePixmapSurface          @11
-	eglCreateWindowSurface          @9
-	eglDestroyContext               @24
-	eglDestroySurface               @12
-	eglGetConfigAttrib              @8
-	eglGetConfigs                   @6
-	eglGetCurrentContext            @26
-	eglGetCurrentDisplay            @28
-	eglGetCurrentSurface            @27
-	eglGetDisplay                   @2
-	eglGetError                     @1
-	eglGetProcAddress               @34
-	eglInitialize                   @3
-	eglMakeCurrent                  @25
-	eglQueryAPI                     @15
-	eglQueryContext                 @29
-	eglQueryString                  @5
-	eglQuerySurface                 @13
-	eglReleaseTexImage              @21
-	eglReleaseThread                @17
-	eglSurfaceAttrib                @19
-	eglSwapBuffers                  @32
-	eglSwapInterval                 @22
-	eglTerminate                    @4
-	eglWaitClient                   @16
-	eglWaitGL                       @30
-	eglWaitNative                   @31
-
-	; Extensions
-	eglCreateImageKHR
-	eglDestroyImageKHR
-
-	; Functions that don't change the error code, for use by client APIs
-	clientGetCurrentContext
+LIBRARY	libEGL
+EXPORTS
+	eglBindAPI                      @14
+	eglBindTexImage                 @20
+	eglChooseConfig                 @7
+	eglCopyBuffers                  @33
+	eglCreateContext                @23
+	eglCreatePbufferFromClientBuffer        @18
+	eglCreatePbufferSurface         @10
+	eglCreatePixmapSurface          @11
+	eglCreateWindowSurface          @9
+	eglDestroyContext               @24
+	eglDestroySurface               @12
+	eglGetConfigAttrib              @8
+	eglGetConfigs                   @6
+	eglGetCurrentContext            @26
+	eglGetCurrentDisplay            @28
+	eglGetCurrentSurface            @27
+	eglGetDisplay                   @2
+	eglGetError                     @1
+	eglGetProcAddress               @34
+	eglInitialize                   @3
+	eglMakeCurrent                  @25
+	eglQueryAPI                     @15
+	eglQueryContext                 @29
+	eglQueryString                  @5
+	eglQuerySurface                 @13
+	eglReleaseTexImage              @21
+	eglReleaseThread                @17
+	eglSurfaceAttrib                @19
+	eglSwapBuffers                  @32
+	eglSwapInterval                 @22
+	eglTerminate                    @4
+	eglWaitClient                   @16
+	eglWaitGL                       @30
+	eglWaitNative                   @31
+
+	; Extensions
+	eglCreateImageKHR
+	eglDestroyImageKHR
+	eglGetPlatformDisplayEXT
+    eglCreatePlatformWindowSurfaceEXT
+    eglCreatePlatformPixmapSurfaceEXT
+
+	; Functions that don't change the error code, for use by client APIs
+	clientGetCurrentContext
 	clientGetCurrentDisplay
\ No newline at end of file
