Revision 4e12cd94 hw/vmware_vga.c

b/hw/vmware_vga.c
38 38

  
39 39
struct vmsvga_state_s {
40 40
#ifdef EMBED_STDVGA
41
    VGA_STATE_COMMON
41
    VGACommonState vga;
42 42
#endif
43 43

  
44 44
    int width;
......
326 326
    bypl = s->bypp * s->width;
327 327
    width = s->bypp * w;
328 328
    start = s->bypp * x + bypl * y;
329
    src = s->vram_ptr + start;
330
    dst = ds_get_data(s->ds) + start;
329
    src = s->vga.vram_ptr + start;
330
    dst = ds_get_data(s->vga.ds) + start;
331 331

  
332 332
    for (; line > 0; line --, src += bypl, dst += bypl)
333 333
        memcpy(dst, src, width);
334 334
#endif
335 335

  
336
    dpy_update(s->ds, x, y, w, h);
336
    dpy_update(s->vga.ds, x, y, w, h);
337 337
}
338 338

  
339 339
static inline void vmsvga_update_screen(struct vmsvga_state_s *s)
340 340
{
341 341
#ifndef DIRECT_VRAM
342
    memcpy(ds_get_data(s->ds), s->vram_ptr, s->bypp * s->width * s->height);
342
    memcpy(ds_get_data(s->vga.ds), s->vga.vram_ptr, s->bypp * s->width * s->height);
343 343
#endif
344 344

  
345
    dpy_update(s->ds, 0, 0, s->width, s->height);
345
    dpy_update(s->vga.ds, 0, 0, s->width, s->height);
346 346
}
347 347

  
348 348
#ifdef DIRECT_VRAM
......
383 383
# ifdef DIRECT_VRAM
384 384
    uint8_t *vram = ds_get_data(s->ds);
385 385
# else
386
    uint8_t *vram = s->vram_ptr;
386
    uint8_t *vram = s->vga.vram_ptr;
387 387
# endif
388 388
    int bypl = s->bypp * s->width;
389 389
    int width = s->bypp * w;
......
420 420
# ifdef DIRECT_VRAM
421 421
    uint8_t *vram = ds_get_data(s->ds);
422 422
# else
423
    uint8_t *vram = s->vram_ptr;
423
    uint8_t *vram = s->vga.vram_ptr;
424 424
# endif
425 425
    int bypp = s->bypp;
426 426
    int bypl = bypp * s->width;
......
485 485
    for (i = SVGA_BITMAP_SIZE(c->width, c->height) - 1; i >= 0; i --)
486 486
        c->mask[i] = ~c->mask[i];
487 487

  
488
    if (s->ds->cursor_define)
489
        s->ds->cursor_define(c->width, c->height, c->bpp, c->hot_x, c->hot_y,
488
    if (s->vga.ds->cursor_define)
489
        s->vga.ds->cursor_define(c->width, c->height, c->bpp, c->hot_x, c->hot_y,
490 490
                        (uint8_t *) c->image, (uint8_t *) c->mask);
491 491
}
492 492
#endif
......
689 689
        return 0x0;
690 690

  
691 691
    case SVGA_REG_VRAM_SIZE:
692
        return s->vram_size - SVGA_FIFO_SIZE;
692
        return s->vga.vram_size - SVGA_FIFO_SIZE;
693 693

  
694 694
    case SVGA_REG_FB_SIZE:
695 695
        return s->fb_size;
......
703 703
        caps |= SVGA_CAP_RECT_FILL;
704 704
#endif
705 705
#ifdef HW_MOUSE_ACCEL
706
        if (s->ds->mouse_set)
706
        if (s->vga.ds->mouse_set)
707 707
            caps |= SVGA_CAP_CURSOR | SVGA_CAP_CURSOR_BYPASS_2 |
708 708
                    SVGA_CAP_CURSOR_BYPASS;
709 709
#endif
710 710
        return caps;
711 711

  
712 712
    case SVGA_REG_MEM_START:
713
        return s->vram_base + s->vram_size - SVGA_FIFO_SIZE;
713
        return s->vram_base + s->vga.vram_size - SVGA_FIFO_SIZE;
714 714

  
715 715
    case SVGA_REG_MEM_SIZE:
716 716
        return SVGA_FIFO_SIZE;
......
775 775
        s->height = -1;
776 776
        s->invalidated = 1;
777 777
#ifdef EMBED_STDVGA
778
        s->invalidate(opaque);
778
        s->vga.invalidate(&s->vga);
779 779
#endif
780 780
        if (s->enable)
781 781
            s->fb_size = ((s->depth + 7) >> 3) * s->new_width * s->new_height;
......
801 801

  
802 802
    case SVGA_REG_CONFIG_DONE:
803 803
        if (value) {
804
            s->fifo = (uint32_t *) &s->vram_ptr[s->vram_size - SVGA_FIFO_SIZE];
804
            s->fifo = (uint32_t *) &s->vga.vram_ptr[s->vga.vram_size - SVGA_FIFO_SIZE];
805 805
            /* Check range and alignment.  */
806 806
            if ((CMD(min) | CMD(max) |
807 807
                        CMD(next_cmd) | CMD(stop)) & 3)
......
847 847
        s->cursor.on |= (value == SVGA_CURSOR_ON_SHOW);
848 848
        s->cursor.on &= (value != SVGA_CURSOR_ON_HIDE);
849 849
#ifdef HW_MOUSE_ACCEL
850
        if (s->ds->mouse_set && value <= SVGA_CURSOR_ON_SHOW)
851
            s->ds->mouse_set(s->cursor.x, s->cursor.y, s->cursor.on);
850
        if (s->vga.ds->mouse_set && value <= SVGA_CURSOR_ON_SHOW)
851
            s->vga.ds->mouse_set(s->cursor.x, s->cursor.y, s->cursor.on);
852 852
#endif
853 853
        break;
854 854

  
......
885 885
    if (s->new_width != s->width || s->new_height != s->height) {
886 886
        s->width = s->new_width;
887 887
        s->height = s->new_height;
888
        qemu_console_resize(s->ds, s->width, s->height);
888
        qemu_console_resize(s->vga.ds, s->width, s->height);
889 889
        s->invalidated = 1;
890 890
    }
891 891
}
......
895 895
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
896 896
    if (!s->enable) {
897 897
#ifdef EMBED_STDVGA
898
        s->update(opaque);
898
        s->vga.update(&s->vga);
899 899
#endif
900 900
        return;
901 901
    }
......
963 963
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
964 964
    if (!s->enable) {
965 965
#ifdef EMBED_STDVGA
966
        s->invalidate(opaque);
966
        s->vga.invalidate(&s->vga);
967 967
#endif
968 968
        return;
969 969
    }
......
978 978
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
979 979
    if (!s->enable) {
980 980
#ifdef EMBED_STDVGA
981
        s->screen_dump(opaque, filename);
981
        s->vga.screen_dump(&s->vga, filename);
982 982
#endif
983 983
        return;
984 984
    }
985 985

  
986 986
    if (s->depth == 32) {
987 987
        DisplaySurface *ds = qemu_create_displaysurface_from(s->width,
988
                s->height, 32, ds_get_linesize(s->ds), s->vram_ptr);
988
                s->height, 32, ds_get_linesize(s->vga.ds), s->vga.vram_ptr);
989 989
        ppm_save(filename, ds);
990 990
        qemu_free(ds);
991 991
    }
......
995 995
{
996 996
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
997 997

  
998
    if (s->text_update)
999
        s->text_update(opaque, chardata);
998
    if (s->vga.text_update)
999
        s->vga.text_update(&s->vga, chardata);
1000 1000
}
1001 1001

  
1002 1002
#ifdef DIRECT_VRAM
......
1116 1116

  
1117 1117
    s->invalidated = 1;
1118 1118
    if (s->config)
1119
        s->fifo = (uint32_t *) &s->vram_ptr[s->vram_size - SVGA_FIFO_SIZE];
1119
        s->fifo = (uint32_t *) &s->vga.vram_ptr[s->vga.vram_size - SVGA_FIFO_SIZE];
1120 1120

  
1121 1121
    return 0;
1122 1122
}
......
1137 1137
    s->vram_ptr = qemu_get_ram_ptr(s->vram_offset);
1138 1138
#endif
1139 1139

  
1140
    s->ds = graphic_console_init(vmsvga_update_display,
1141
                                 vmsvga_invalidate_display,
1142
                                 vmsvga_screen_dump,
1143
                                 vmsvga_text_update, s);
1140
    s->vga.ds = graphic_console_init(vmsvga_update_display,
1141
                                     vmsvga_invalidate_display,
1142
                                     vmsvga_screen_dump,
1143
                                     vmsvga_text_update, &s->vga);
1144 1144

  
1145 1145
#ifdef CONFIG_BOCHS_VBE
1146 1146
    /* XXX: use optimized standard vga accesses */
1147 1147
    cpu_register_physical_memory(VBE_DISPI_LFB_PHYSICAL_ADDRESS,
1148
                                 vga_ram_size, s->vram_offset);
1148
                                 vga_ram_size, s->vga.vram_offset);
1149 1149
#endif
1150 1150
}
1151 1151

  
......
1204 1204
    iomemtype = cpu_register_io_memory(0, vmsvga_vram_read,
1205 1205
                    vmsvga_vram_write, s);
1206 1206
#else
1207
    iomemtype = s->vram_offset | IO_MEM_RAM;
1207
    iomemtype = s->vga.vram_offset | IO_MEM_RAM;
1208 1208
#endif
1209
    cpu_register_physical_memory(s->vram_base, s->vram_size,
1209
    cpu_register_physical_memory(s->vram_base, s->vga.vram_size,
1210 1210
                    iomemtype);
1211 1211
}
1212 1212

  

Also available in: Unified diff