]> xenbits.xen.org Git - xenclient/ioemu-pq.git/commitdiff
Hopefully fix XC-258
authorJames Mckenzie <jamesmck@taoand.(none)>
Sat, 26 Sep 2009 01:28:01 +0000 (02:28 +0100)
committerJames Mckenzie <jamesmck@taoand.(none)>
Sat, 26 Sep 2009 01:28:01 +0000 (02:28 +0100)
master/fix-video

index 530a3689bf4ed88cd8a428c4ce2291ea61033b89..9593981d2bc2c9c8deceb570e40d2714aa35cef1 100644 (file)
@@ -11,7 +11,7 @@ index 8c9b09b..def586a 100644
  int is_graphic_console(void);
  int is_fixedsize_console(void);
 diff --git a/hw/vga.c b/hw/vga.c
-index a2b8744..66f77b0 100644
+index a2b8744..a6b768c 100644
 --- a/hw/vga.c
 +++ b/hw/vga.c
 @@ -34,6 +34,8 @@
@@ -31,18 +31,17 @@ index a2b8744..66f77b0 100644
      return val;
  }
  
-@@ -631,7 +634,9 @@ static void vbe_ioport_write_data(void *opaque, uint32_t addr, uint32_t val)
+@@ -631,7 +634,8 @@ static void vbe_ioport_write_data(void *opaque, uint32_t addr, uint32_t val)
                  !(s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED)) {
                  int h, shift_control;
  
 -                if (s->vram_gmfn != s->lfb_addr && intel_output != 1) {
-+              /* If framebuffer memory isn't mapped over the real frame buffer, 
-+               * dom0 needs to be able to see it */
++              /* If the real frambuffer isn't mapped in, check that the qemu allocd one is*/
 +                if (s->vram_gmfn != s->lfb_addr && intel_output != INTEL_OUTPUT_MAPPED) {
                       set_vram_mapping(s, s->lfb_addr, s->lfb_end);
                  }
  
-@@ -1686,7 +1691,8 @@ static void vga_draw_graphic(VGAState *s, int full_update)
+@@ -1686,7 +1690,8 @@ static void vga_draw_graphic(VGAState *s, int full_update)
          }
      }
  
@@ -52,19 +51,8 @@ index a2b8744..66f77b0 100644
          return;
  
      vga_draw_line = vga_draw_line_table[v * NB_DEPTHS + get_depth_index(s->ds)];
-@@ -2341,6 +2347,10 @@ static void vga_map(PCIDevice *pci_dev, int region_num,
- #endif
-         fprintf(stderr, "vga s->lfb_addr = %lx s->lfb_end = %lx \n", (unsigned long) s->lfb_addr,(unsigned long) s->lfb_end);
-+      fprintf(stderr, "vbe regs VBE_DISPI_INDEX_VIDEO_MEMORY_64K=%d VBE_DISPI_INDEX_XRES=%d VBE_DISPI_INDEX_BPP=%d\n",
-+                      s->vbe_regs[VBE_DISPI_INDEX_VIDEO_MEMORY_64K],
-+                      s->vbe_regs[VBE_DISPI_INDEX_XRES],
-+                      s->vbe_regs[VBE_DISPI_INDEX_BPP]);
-         if (size != s->vram_size)
-             fprintf(stderr, "vga map with size %x != %x\n", size, s->vram_size);
 diff --git a/intel.c b/intel.c
-index df9ebf7..0f0bfde 100644
+index df9ebf7..46949f6 100644
 --- a/intel.c
 +++ b/intel.c
 @@ -14,31 +14,15 @@
@@ -99,40 +87,53 @@ index df9ebf7..0f0bfde 100644
  extern int                      vga_passthrough;
  uint32_t                        guest_framebuffer;
 -int                             intel_output;
-+int                             intel_output = INTEL_OUTPUT_UNDEF;
++int                             intel_output = INTEL_OUTPUT_BLITTED;
  static int                      display = 0;
  
  static int                      mmio_fd = -1;
-@@ -284,7 +268,7 @@ static void intel_resize(DisplayState *ds)
+@@ -187,6 +171,8 @@ static void set_fb_mapping(void)
+     int rc;
+     unsigned long nr_pfn;
++    intel_output = INTEL_OUTPUT_MAPPED;
++
+     unset_vga_acc();
+     INTEL_DEBUG("set_fb_mapping: %x %x\n", (intel_fb_base + intel_get_surface()), guest_framebuffer);
+     nr_pfn = (ds_get_linesize(lds) * ds_get_height(lds)) >> TARGET_PAGE_BITS;
+@@ -226,6 +212,7 @@ static void unset_fb_mapping(void)
+     }
+     set_vga_acc();
++    intel_output = INTEL_OUTPUT_BLITTED;
+     memcpy(ds_get_data(lds),
+             (uint8_t *) (intel_mem + intel_get_surface()),
+             ds_get_linesize(lds) * ds_get_height(lds));
+@@ -284,7 +271,6 @@ static void intel_resize(DisplayState *ds)
                  intel_force_linear(ds_get_linesize(ds));
                  set_fb_mapping();
              }
 -            intel_output = 1;
-+            intel_output = INTEL_OUTPUT_MAPPED;
          }
          else
          {
-@@ -292,12 +276,12 @@ static void intel_resize(DisplayState *ds)
+@@ -292,12 +278,10 @@ static void intel_resize(DisplayState *ds)
                  unset_fb_mapping();
              else
                  intel_force_linear(0);
 -            intel_output = 2;
-+            intel_output = INTEL_OUTPUT_BLITTED;
          }
      } else {
          if (map_size)
              unset_fb_mapping();
 -        intel_output = 1;
-+        intel_output = INTEL_OUTPUT_MAPPED;
      }
  }
  
-@@ -512,6 +496,6 @@ void intel_display_init(DisplayState *ds)
+@@ -512,6 +496,5 @@ void intel_display_init(DisplayState *ds)
          dpy_resize(ds);
      }
  
 -    intel_output = 1;
-+    intel_output = INTEL_OUTPUT_BLITTED;
      lds = ds;
  }
 diff --git a/intel.h b/intel.h