1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
From 2cf7df441ce4c36525ba4d2d040f8cb0b0c75f14 Mon Sep 17 00:00:00 2001
From: Constantin Musca <constantinx.musca@intel.com>
Date: Fri, 7 Dec 2012 12:33:42 +0200
Subject: [PATCH] Revert "vmware_vga: Add back some info in local state
partially reverting aa32b38c"
- this reverts commit 1f202568e0553b416483e5993f1bde219c22cf72
- do not cache the DS depth (the depth might change)
Upstream-Status: Pending
Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
---
hw/vmware_vga.c | 30 +++++++++---------------------
1 file changed, 9 insertions(+), 21 deletions(-)
diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
index 834588d..7c766fb 100644
--- a/hw/vmware_vga.c
+++ b/hw/vmware_vga.c
@@ -39,8 +39,6 @@ struct vmsvga_state_s {
VGACommonState vga;
int invalidated;
- int depth;
- int bypp;
int enable;
int config;
struct {
@@ -57,9 +55,6 @@ struct vmsvga_state_s {
int new_height;
uint32_t guest;
uint32_t svgaid;
- uint32_t wred;
- uint32_t wgreen;
- uint32_t wblue;
int syncing;
MemoryRegion fifo_ram;
@@ -723,25 +718,25 @@ static uint32_t vmsvga_value_read(void *opaque, uint32_t address)
return SVGA_MAX_HEIGHT;
case SVGA_REG_DEPTH:
- return s->depth;
+ return ds_get_depth(s->vga.ds);
case SVGA_REG_BITS_PER_PIXEL:
- return (s->depth + 7) & ~7;
+ return ds_get_bits_per_pixel(s->vga.ds);
case SVGA_REG_PSEUDOCOLOR:
return 0x0;
case SVGA_REG_RED_MASK:
- return s->wred;
+ return ds_get_rmask(s->vga.ds);
case SVGA_REG_GREEN_MASK:
- return s->wgreen;
+ return ds_get_gmask(s->vga.ds);
case SVGA_REG_BLUE_MASK:
- return s->wblue;
+ return ds_get_bmask(s->vga.ds);
case SVGA_REG_BYTES_PER_LINE:
- return s->bypp * s->new_width;
+ return ds_get_bytes_per_pixel(s->vga.ds) * s->new_width;
case SVGA_REG_FB_START: {
struct pci_vmsvga_state_s *pci_vmsvga
@@ -806,7 +801,7 @@ static uint32_t vmsvga_value_read(void *opaque, uint32_t address)
return s->cursor.on;
case SVGA_REG_HOST_BITS_PER_PIXEL:
- return (s->depth + 7) & ~7;
+ return ds_get_bits_per_pixel(s->vga.ds);
case SVGA_REG_SCRATCH_SIZE:
return s->scratch_size;
@@ -869,7 +864,7 @@ static void vmsvga_value_write(void *opaque, uint32_t address, uint32_t value)
break;
case SVGA_REG_BITS_PER_PIXEL:
- if (value != s->depth) {
+ if (value != ds_get_bits_per_pixel(s->vga.ds)) {
printf("%s: Bad bits per pixel: %i bits\n", __func__, value);
s->config = 0;
}
@@ -1089,7 +1084,7 @@ static const VMStateDescription vmstate_vmware_vga_internal = {
.minimum_version_id_old = 0,
.post_load = vmsvga_post_load,
.fields = (VMStateField[]) {
- VMSTATE_INT32_EQUAL(depth, struct vmsvga_state_s),
+ VMSTATE_UNUSED(4), /* was depth */
VMSTATE_INT32(enable, struct vmsvga_state_s),
VMSTATE_INT32(config, struct vmsvga_state_s),
VMSTATE_INT32(cursor.id, struct vmsvga_state_s),
@@ -1142,13 +1137,6 @@ static void vmsvga_init(struct vmsvga_state_s *s,
vga_common_init(&s->vga);
vga_init(&s->vga, address_space, io, true);
vmstate_register(NULL, 0, &vmstate_vga_common, &s->vga);
- /* Save some values here in case they are changed later.
- * This is suspicious and needs more though why it is needed. */
- s->depth = ds_get_bits_per_pixel(s->vga.ds);
- s->bypp = ds_get_bytes_per_pixel(s->vga.ds);
- s->wred = ds_get_rmask(s->vga.ds);
- s->wgreen = ds_get_gmask(s->vga.ds);
- s->wblue = ds_get_bmask(s->vga.ds);
}
static uint64_t vmsvga_io_read(void *opaque, hwaddr addr, unsigned size)
--
1.7.11.7
|