Index: trunk/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
===================================================================
--- trunk/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	(revision 35774)
+++ trunk/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	(revision 35775)
@@ -141,5 +141,5 @@
 	$(VBOX_PATH_X11_ROOT)/xf86driproto-2.1.0
 vboxvideo_drv_13_INCS += $(PATH_ROOT)/src/VBox/Runtime/include
-vboxvideo_drv_13_SOURCES = $(vboxvideo_drv_SOURCES)
+vboxvideo_drv_13_SOURCES = $(vboxvideo_drv_SOURCES) edid.c
 
 
@@ -160,5 +160,5 @@
 	$(VBOX_PATH_X11_ROOT)/xf86driproto-2.1.0
 vboxvideo_drv_14_INCS += $(PATH_ROOT)/src/VBox/Runtime/include
-vboxvideo_drv_14_SOURCES  = $(vboxvideo_drv_SOURCES)
+vboxvideo_drv_14_SOURCES  = $(vboxvideo_drv_13_SOURCES)
 
 
@@ -183,5 +183,5 @@
 	$(VBOX_PATH_X11_ROOT)/xorg-server-1.5.3
 vboxvideo_drv_15_INCS += $(PATH_ROOT)/src/VBox/Runtime/include
-vboxvideo_drv_15_SOURCES  = $(vboxvideo_drv_SOURCES)
+vboxvideo_drv_15_SOURCES  = $(vboxvideo_drv_13_SOURCES)
 if1of ($(KBUILD_TARGET), linux solaris)
  vboxvideo_drv_15_SOURCES += \
Index: trunk/src/VBox/Additions/x11/vboxvideo/undefined_13
===================================================================
--- trunk/src/VBox/Additions/x11/vboxvideo/undefined_13	(revision 35774)
+++ trunk/src/VBox/Additions/x11/vboxvideo/undefined_13	(revision 35775)
@@ -187,4 +187,5 @@
 xf86SetDesiredModes
 xf86SetDpi
+xf86OutputSetEDID
 xf86SetGamma
 xf86SetModeDefaultName
Index: trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c
===================================================================
--- trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c	(revision 35774)
+++ trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c	(revision 35775)
@@ -1035,7 +1035,7 @@
  * @param    pcBits  where to store the mode's BPP
  */
-static unsigned vboxNextStandardMode(ScrnInfoPtr pScrn, unsigned cIndex,
-                                     uint32_t *pcx, uint32_t *pcy,
-                                     uint32_t *pcBits)
+unsigned vboxNextStandardMode(ScrnInfoPtr pScrn, unsigned cIndex,
+                              uint32_t *pcx, uint32_t *pcy,
+                              uint32_t *pcBits)
 {
     XF86ASSERT(cIndex < vboxNumStdModes,
Index: trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c
===================================================================
--- trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c	(revision 35774)
+++ trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c	(revision 35775)
@@ -404,5 +404,5 @@
 }
 
-static void
+static DisplayModePtr
 vbox_output_add_mode (VBOXPtr pVBox, DisplayModePtr *pModes,
                       const char *pszName, int x, int y,
@@ -438,4 +438,5 @@
     }
     *pModes = xf86ModesAdd(*pModes, pMode);
+    return pMode;
 }
 
@@ -443,6 +444,6 @@
 vbox_output_get_modes (xf86OutputPtr output)
 {
-    unsigned i;
-    DisplayModePtr pModes = NULL;
+    unsigned i, cIndex = 0;
+    DisplayModePtr pModes = NULL, pMode;
     ScrnInfoPtr pScrn = output->scrn;
     VBOXPtr pVBox = VBOXGetRec(pScrn);
@@ -452,5 +453,14 @@
     iScreen = (uintptr_t)output->driver_private;
     vboxGetPreferredMode(pScrn, iScreen, &x, &y, &bpp);
-    vbox_output_add_mode(pVBox, &pModes, NULL, x, y, TRUE, FALSE);
+    pMode = vbox_output_add_mode(pVBox, &pModes, NULL, x, y, TRUE, FALSE);
+    VBOXEDIDSet(output, pMode);
+    /* Add standard modes supported by the host */
+    for ( ; ; )
+    {
+        cIndex = vboxNextStandardMode(pScrn, cIndex, &x, &y, NULL);
+        if (cIndex == 0)
+            break;
+        vbox_output_add_mode(pVBox, &pModes, NULL, x, y, FALSE, FALSE);
+    }
 
     /* Also report any modes the user may have requested in the xorg.conf
@@ -470,8 +480,11 @@
 vboxAtomVBoxMode(void)
 {
-    static Atom rc = 0;
-    if (!rc)
-        rc = MakeAtom("VBOX_MODE", sizeof("VBOX_MODE") - 1, TRUE);
-    return rc;
+    return MakeAtom("VBOX_MODE", sizeof("VBOX_MODE") - 1, TRUE);
+}
+
+static Atom
+vboxAtomEDID(void)
+{
+    return MakeAtom("EDID", sizeof("EDID") - 1, TRUE);
 }
 
@@ -504,4 +517,6 @@
         return TRUE;
     }
+    if (property == vboxAtomEDID())
+        return TRUE;
     return FALSE;
 }
Index: trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.h
===================================================================
--- trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.h	(revision 35774)
+++ trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.h	(revision 35775)
@@ -257,4 +257,7 @@
 extern Bool vboxSaveVideoMode(ScrnInfoPtr pScrn, uint32_t cx, uint32_t cy, uint32_t cBits);
 extern Bool vboxRetrieveVideoMode(ScrnInfoPtr pScrn, uint32_t *pcx, uint32_t *pcy, uint32_t *pcBits);
+extern unsigned vboxNextStandardMode(ScrnInfoPtr pScrn, unsigned cIndex,
+                                     uint32_t *pcx, uint32_t *pcy,
+                                     uint32_t *pcBits);
 extern void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t iScreen,
                                  uint32_t *pcx, uint32_t *pcy,
@@ -270,7 +273,6 @@
 extern void VBOXDRICloseScreen(ScreenPtr pScreen, VBOXPtr pVBox);
 
-/* Xinerama stuff */
-#define VBOXRAMA_MAJOR_VERSION 1
-#define VBOXRAMA_MINOR_VERSION 0
+/* EDID generation */
+extern Bool VBOXEDIDSet(struct _xf86Output *output, DisplayModePtr pmode);
 
 #endif /* _VBOXVIDEO_H_ */
