Index: /trunk/src/VBox/Frontends/VirtualBox/include/VBoxFBOverlay.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/VBoxFBOverlay.h	(revision 23587)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/VBoxFBOverlay.h	(revision 23588)
@@ -1236,4 +1236,8 @@
     static bool isAcceleration2DVideoAvailable();
 
+    /** additional video memory required for the best 2D support performance
+     *  total amount of VRAM required is thus calculated as requiredVideoMemory + required2DOffscreenVideoMemory  */
+    static quint64 required2DOffscreenVideoMemory();
+
     /* not supposed to be called by clients */
     int vhwaLoadExec(struct SSMHANDLE * pSSM, uint32_t u32Version);
Index: /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h	(revision 23587)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h	(revision 23588)
@@ -773,11 +773,8 @@
 #ifdef VBOX_WITH_VIDEOHWACCEL
     static bool isAcceleration2DVideoAvailable();
-//    VBoxDefs::RenderMode vmAcceleration2DVideoRenderMode() {
-//#if 0
-//        return VBoxDefs::QGLOverlayMode;
-//#else
-//        return VBoxDefs::QGLMode;
-//#endif
-//        }
+
+    /** additional video memory required for the best 2D support performance
+     *  total amount of VRAM required is thus calculated as requiredVideoMemory + required2DOffscreenVideoMemory  */
+    static quint64 required2DOffscreenVideoMemory();
 #endif
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp	(revision 23587)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp	(revision 23588)
@@ -5793,4 +5793,16 @@
 }
 
+/** additional video memory required for the best 2D support performance
+ *  total amount of VRAM required is thus calculated as requiredVideoMemory + required2DOffscreenVideoMemory  */
+/* static */
+quint64 VBoxQGLOverlay::required2DOffscreenVideoMemory()
+{
+    /* HDTV == 1920x1080 ~ 2M
+     * for the 4:2:2 formats each pixel is 2Bytes
+     * so each frame may be 4MB
+     * so for triple-buffering we would need 12 MB */
+    return _1M * 12;
+}
+
 VBoxVHWACommandElement * VBoxQGLOverlay::processCmdList(VBoxVHWACommandElement * pCmd)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 23587)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 23588)
@@ -4150,4 +4150,13 @@
     return VBoxQGLOverlay::isAcceleration2DVideoAvailable();
 }
+
+/** additional video memory required for the best 2D support performance
+ *  total amount of VRAM required is thus calculated as requiredVideoMemory + required2DOffscreenVideoMemory  */
+/* static */
+quint64 VBoxGlobal::required2DOffscreenVideoMemory()
+{
+    return VBoxQGLOverlay::required2DOffscreenVideoMemory();
+}
+
 #endif
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsDisplay.cpp	(revision 23587)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsDisplay.cpp	(revision 23588)
@@ -164,4 +164,8 @@
     connect (mCb3D, SIGNAL (stateChanged (int)),
              mValidator, SLOT (revalidate()));
+#ifdef VBOX_WITH_VIDEOHWACCEL
+    connect (mCb2DVideo, SIGNAL (stateChanged (int)),
+             mValidator, SLOT (revalidate()));
+#endif
     connect (mCbVRDP, SIGNAL (toggled (bool)),
              mValidator, SLOT (revalidate()));
@@ -185,4 +189,18 @@
         return true;
     }
+#ifdef VBOX_WITH_VIDEOHWACCEL
+    if (mCb2DVideo->isChecked())
+    {
+        quint64 needBytesWith2D = needBytes + VBoxGlobal::required2DOffscreenVideoMemory();
+        if ((quint64) mSlMemory->value() * _1M < needBytesWith2D)
+        {
+            aWarning = tr (
+                "you have assigned less than <b>%1</b> for video memory which is "
+                "the minimum amount required for the HD Video to be played efficiently.")
+                .arg (vboxGlobal().formatSize (needBytesWith2D, 0, VBoxDefs::FormatSize_RoundUp));
+            return true;
+        }
+    }
+#endif
 
     /* 3D Acceleration support test */
