Revision 1f202568 hw/vmware_vga.c
b/hw/vmware_vga.c | ||
---|---|---|
39 | 39 |
VGACommonState vga; |
40 | 40 |
|
41 | 41 |
int invalidated; |
42 |
int depth; |
|
43 |
int bypp; |
|
42 | 44 |
int enable; |
43 | 45 |
int config; |
44 | 46 |
struct { |
... | ... | |
55 | 57 |
int new_height; |
56 | 58 |
uint32_t guest; |
57 | 59 |
uint32_t svgaid; |
60 |
uint32_t wred; |
|
61 |
uint32_t wgreen; |
|
62 |
uint32_t wblue; |
|
58 | 63 |
int syncing; |
59 | 64 |
|
60 | 65 |
MemoryRegion fifo_ram; |
... | ... | |
718 | 723 |
return SVGA_MAX_HEIGHT; |
719 | 724 |
|
720 | 725 |
case SVGA_REG_DEPTH: |
721 |
return ds_get_depth(s->vga.ds);
|
|
726 |
return s->depth;
|
|
722 | 727 |
|
723 | 728 |
case SVGA_REG_BITS_PER_PIXEL: |
724 |
return ds_get_bits_per_pixel(s->vga.ds);
|
|
729 |
return (s->depth + 7) & ~7;
|
|
725 | 730 |
|
726 | 731 |
case SVGA_REG_PSEUDOCOLOR: |
727 | 732 |
return 0x0; |
728 | 733 |
|
729 | 734 |
case SVGA_REG_RED_MASK: |
730 |
return ds_get_rmask(s->vga.ds);
|
|
735 |
return s->wred;
|
|
731 | 736 |
|
732 | 737 |
case SVGA_REG_GREEN_MASK: |
733 |
return ds_get_gmask(s->vga.ds);
|
|
738 |
return s->wgreen;
|
|
734 | 739 |
|
735 | 740 |
case SVGA_REG_BLUE_MASK: |
736 |
return ds_get_bmask(s->vga.ds);
|
|
741 |
return s->wblue;
|
|
737 | 742 |
|
738 | 743 |
case SVGA_REG_BYTES_PER_LINE: |
739 |
return ds_get_bytes_per_pixel(s->vga.ds) * s->new_width;
|
|
744 |
return s->bypp * s->new_width;
|
|
740 | 745 |
|
741 | 746 |
case SVGA_REG_FB_START: { |
742 | 747 |
struct pci_vmsvga_state_s *pci_vmsvga |
... | ... | |
801 | 806 |
return s->cursor.on; |
802 | 807 |
|
803 | 808 |
case SVGA_REG_HOST_BITS_PER_PIXEL: |
804 |
return ds_get_bits_per_pixel(s->vga.ds);
|
|
809 |
return (s->depth + 7) & ~7;
|
|
805 | 810 |
|
806 | 811 |
case SVGA_REG_SCRATCH_SIZE: |
807 | 812 |
return s->scratch_size; |
... | ... | |
864 | 869 |
break; |
865 | 870 |
|
866 | 871 |
case SVGA_REG_BITS_PER_PIXEL: |
867 |
if (value != ds_get_bits_per_pixel(s->vga.ds)) {
|
|
872 |
if (value != s->depth) {
|
|
868 | 873 |
printf("%s: Bad bits per pixel: %i bits\n", __func__, value); |
869 | 874 |
s->config = 0; |
870 | 875 |
} |
... | ... | |
1084 | 1089 |
.minimum_version_id_old = 0, |
1085 | 1090 |
.post_load = vmsvga_post_load, |
1086 | 1091 |
.fields = (VMStateField[]) { |
1087 |
VMSTATE_UNUSED(4), /* was depth */
|
|
1092 |
VMSTATE_INT32_EQUAL(depth, struct vmsvga_state_s),
|
|
1088 | 1093 |
VMSTATE_INT32(enable, struct vmsvga_state_s), |
1089 | 1094 |
VMSTATE_INT32(config, struct vmsvga_state_s), |
1090 | 1095 |
VMSTATE_INT32(cursor.id, struct vmsvga_state_s), |
... | ... | |
1137 | 1142 |
vga_common_init(&s->vga); |
1138 | 1143 |
vga_init(&s->vga, address_space, io, true); |
1139 | 1144 |
vmstate_register(NULL, 0, &vmstate_vga_common, &s->vga); |
1145 |
/* Save some values here in case they are changed later. |
|
1146 |
* This is suspicious and needs more though why it is needed. */ |
|
1147 |
s->depth = ds_get_bits_per_pixel(s->vga.ds); |
|
1148 |
s->bypp = ds_get_bytes_per_pixel(s->vga.ds); |
|
1149 |
s->wred = ds_get_rmask(s->vga.ds); |
|
1150 |
s->wgreen = ds_get_gmask(s->vga.ds); |
|
1151 |
s->wblue = ds_get_bmask(s->vga.ds); |
|
1140 | 1152 |
} |
1141 | 1153 |
|
1142 | 1154 |
static uint64_t vmsvga_io_read(void *opaque, hwaddr addr, unsigned size) |
Also available in: Unified diff