Commit 37dd208d38ab9f65f9e15fd7fe2f0b75bc83220a
1 parent
05f83f0f
VBE: 8 bit DACs + support for VBE BIOS IDs (Volker Ruppert)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2163 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
16 additions
and
4 deletions
hw/vga.c
... | ... | @@ -422,7 +422,9 @@ static void vbe_ioport_write_data(void *opaque, uint32_t addr, uint32_t val) |
422 | 422 | case VBE_DISPI_INDEX_ID: |
423 | 423 | if (val == VBE_DISPI_ID0 || |
424 | 424 | val == VBE_DISPI_ID1 || |
425 | - val == VBE_DISPI_ID2) { | |
425 | + val == VBE_DISPI_ID2 || | |
426 | + val == VBE_DISPI_ID3 || | |
427 | + val == VBE_DISPI_ID4) { | |
426 | 428 | s->vbe_regs[s->vbe_index] = val; |
427 | 429 | } |
428 | 430 | break; |
... | ... | @@ -505,6 +507,7 @@ static void vbe_ioport_write_data(void *opaque, uint32_t addr, uint32_t val) |
505 | 507 | /* XXX: the bios should do that */ |
506 | 508 | s->bank_offset = 0; |
507 | 509 | } |
510 | + s->dac_8bit = (val & VBE_DISPI_8BIT_DAC) > 0; | |
508 | 511 | s->vbe_regs[s->vbe_index] = val; |
509 | 512 | break; |
510 | 513 | case VBE_DISPI_INDEX_VIRT_WIDTH: |
... | ... | @@ -921,9 +924,15 @@ static int update_palette256(VGAState *s) |
921 | 924 | palette = s->last_palette; |
922 | 925 | v = 0; |
923 | 926 | for(i = 0; i < 256; i++) { |
924 | - col = s->rgb_to_pixel(c6_to_8(s->palette[v]), | |
925 | - c6_to_8(s->palette[v + 1]), | |
926 | - c6_to_8(s->palette[v + 2])); | |
927 | + if (s->dac_8bit) { | |
928 | + col = s->rgb_to_pixel(s->palette[v], | |
929 | + s->palette[v + 1], | |
930 | + s->palette[v + 2]); | |
931 | + } else { | |
932 | + col = s->rgb_to_pixel(c6_to_8(s->palette[v]), | |
933 | + c6_to_8(s->palette[v + 1]), | |
934 | + c6_to_8(s->palette[v + 2])); | |
935 | + } | |
927 | 936 | if (col != palette[i]) { |
928 | 937 | full_update = 1; |
929 | 938 | palette[i] = col; | ... | ... |
hw/vga_int.h
... | ... | @@ -49,6 +49,8 @@ |
49 | 49 | #define VBE_DISPI_ID0 0xB0C0 |
50 | 50 | #define VBE_DISPI_ID1 0xB0C1 |
51 | 51 | #define VBE_DISPI_ID2 0xB0C2 |
52 | +#define VBE_DISPI_ID3 0xB0C3 | |
53 | +#define VBE_DISPI_ID4 0xB0C4 | |
52 | 54 | |
53 | 55 | #define VBE_DISPI_DISABLED 0x00 |
54 | 56 | #define VBE_DISPI_ENABLED 0x01 |
... | ... | @@ -103,6 +105,7 @@ |
103 | 105 | uint8_t dac_read_index; \ |
104 | 106 | uint8_t dac_write_index; \ |
105 | 107 | uint8_t dac_cache[3]; /* used when writing */ \ |
108 | + int dac_8bit; \ | |
106 | 109 | uint8_t palette[768]; \ |
107 | 110 | int32_t bank_offset; \ |
108 | 111 | int (*get_bpp)(struct VGAState *s); \ | ... | ... |