+int intel_leave(void);
+void intel_display_init(DisplayState *ds);
#endif
+diff --git a/dom0_driver.c b/dom0_driver.c
+index a0fa64e..c8b376e 100644
+--- a/dom0_driver.c
++++ b/dom0_driver.c
+@@ -43,6 +43,7 @@
+ #include <time.h>
+
+ extern int vga_passthrough;
++extern int intel;
+
+ static void dom0_driver_state_change(const char *path, void *opaque);
+ static void dom0_driver_command(const char *path, void *opaque);
+@@ -698,6 +699,11 @@ void dom0_driver_init(const char *position)
+ driver.enter = dom0_driver_unblank;
+ driver.leave = dom0_driver_blank;
+ }
++ else if (intel)
++ {
++ driver.enter = intel_enter;
++ driver.leave = intel_leave;
++ }
+ else
+ {
+ driver.enter = dom0_driver_dummy_enter_leave;
diff --git a/hw/vga.c b/hw/vga.c
index 90bd544..a2b8744 100644
--- a/hw/vga.c
vga_update_display(s);
diff --git a/intel.c b/intel.c
new file mode 100644
-index 0000000..eb0b9c0
+index 0000000..c071866
--- /dev/null
+++ b/intel.c
-@@ -0,0 +1,448 @@
+@@ -0,0 +1,453 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+ IntelPitch = intel_get_reg(REG_DR_DSPASTRIDE);
+ IntelX = ((intel_get_reg(REG_DE_PIPEASRC) >> 16) & 0xfff) + 1;
+ IntelY = (intel_get_reg(REG_DE_PIPEASRC) & 0xfff) + 1;
++
++ if (!guest_framebuffer)
++ intel_force_linear(0);
++ memset((uint8_t *)(intel_mem + intel_get_reg(REG_DR_DSPASURF)), 0,
++ IntelX * IntelY * 4);
+ }
+ vga_hw_invalidate();
+ vga_hw_update();