From: Blue Swirl <blauwirbel@gmail.com>
To: "Andreas Färber" <andreas.faerber@web.de>
Cc: "Juan Quintela" <quintela@redhat.com>,
"Hervé Poussineau" <hpoussin@reactos.org>,
"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
"Roy Tam" <roytam@gmail.com>
Subject: Re: [Qemu-devel] [RFC v2 23/23] 40p: Add an IBM 8514/A graphics card
Date: Sun, 19 Jun 2011 16:27:27 +0300 [thread overview]
Message-ID: <BANLkTimTJdc_CfGwtSSFWKeLZGpYtC_mQQ@mail.gmail.com> (raw)
In-Reply-To: <E82281B8-83E2-4839-91C4-7AB966E3A8EB@web.de>
On Sun, Jun 19, 2011 at 1:04 PM, Andreas Färber <andreas.faerber@web.de> wrote:
> Am 18.06.2011 um 22:42 schrieb Blue Swirl:
>
>> On Thu, Jun 16, 2011 at 3:02 AM, Andreas Färber <andreas.faerber@web.de>
>> wrote:
>>>
>>> The IBM E15 is equivalent to an S3 Vision864.
>>>
>>> Lacking S3 SDAC (86C716) support, the DAC indizes are translated
>>> to greyscale colors. This works sufficiently to observe firmware
>>> boot progress.
>>>
>>> Cc: Hervé Poussineau <hpoussin@reactos.org>
>>>
>>> Fixed off-by-one drawing issue.
>>> Replaced hardcoded color for RECT.
>>> Separate I/O debug output for readability.
>>> Start cleaning up the naming s3 vs. ibm8514.
>>> Prepare support for DAC_MASK, DAC_R_INDEX, DAC_W_INDEX, DAC_DATA regs.
>>>
>>> Cc: Roy Tam <roytam@gmail.com>
>>> Signed-off-by: Andreas Färber <andreas.faerber@web.de>
>>> ---
>>> Makefile.objs | 1 +
>>> default-configs/ppc-softmmu.mak | 1 +
>>> hw/pci_ids.h | 3 +
>>> hw/ppc_prep.c | 2 +
>>> hw/vga-ibm8514.c | 780
>>> +++++++++++++++++++++++++++++++++++++++
>>> 5 files changed, 787 insertions(+), 0 deletions(-)
>>> create mode 100644 hw/vga-ibm8514.c
>
>>> diff --git a/hw/vga-ibm8514.c b/hw/vga-ibm8514.c
>>> new file mode 100644
>>> index 0000000..a87afe1
>>> --- /dev/null
>>> +++ b/hw/vga-ibm8514.c
>
>>> +// 40f3 = CMD_CMD_RECT | CMD_INC_Y | CMD_YMAJAXIS | CMD_INC_X | CMD_DRAW
>>> | CMD_PLANAR | CMD_WRTDATA
>>> +// 4331 = CMD_CMD_RECT | CMD_16BIT | CMD_PCDATA | CMD_INC_X | CMD_DRAW |
>>> CMD_WRTDATA
>>> +// c0b3 = CMD_CMD_BITBLT | CMD_INC_Y | CMD_INC_X | CMD_DRAW | CMD_PLANAR
>>> | CMD_WRTDATA
>>
>> C89 comments?
>
> Yeah, and it could use an explanation: It's a decode table for debug output
> from the command register.
>
>>> +static VMStateDescription vmstate_ibm8514 = {
>
> Missing .name - crashes in some pstrcpy() without it. Better error handling
> would be nice.
>
>>> + .version_id = 1,
>>> + .minimum_version_id = 1,
>>> + .fields = (VMStateField []) {
>>> + VMSTATE_END_OF_LIST()
>>> + },
>>> +};
>
>>> +static void my_update_display(void *opaque)
>>> +{
>>> + VGACommonState *s = opaque;
>>> + int w;
>>> + uint8_t *vram;
>>> + uint8_t *data_display, *dd;
>>> + int x, y;
>>> + unsigned int (*rgb_to_pixel)(unsigned int r, unsigned int g,
>>> unsigned int b);
>>> +
>>> + if (ds_get_width(s->ds) != 640 || ds_get_height(s->ds) != 480) {
>>> + qemu_console_resize(s->ds, 640, 480);
>>> + }
>>> +
>>> + switch (ds_get_bits_per_pixel(s->ds)) {
>>> + case 8:
>>> + rgb_to_pixel = rgb_to_pixel8;
>>> + w = 1;
>>> + break;
>>> + case 15:
>>> + rgb_to_pixel = rgb_to_pixel15;
>>> + w = 2;
>>> + break;
>>> + case 16:
>>> + rgb_to_pixel = rgb_to_pixel16;
>>> + w = 2;
>>> + break;
>>> + case 32:
>>> + rgb_to_pixel = rgb_to_pixel32;
>>> + w = 4;
>>> + break;
>>> + default:
>>> + BADF("unknown host depth %d\n",
>>> ds_get_bits_per_pixel(s->ds));
>>> + return;
>>> + }
>>> +
>>> + vram = s->vram_ptr;
>>> + /* XXX: out of range in vram? */
>>> + data_display = dd = ds_get_data(s->ds);
>>> + for (y = 0; y < 480; y++) {
>>> + for (x = 0; x < 640; x++) {
>>> + unsigned int color;
>>> + color = (*rgb_to_pixel)(vram[0], vram[1], vram[2]);
>>> + memcpy(dd, &color, w);
>>
>> Please take a look at tcx.c for a 8 bit mode frame buffer with palette
>> translation. Also VGA_DIRTY bit handling should be added to this loop
>> to speed it up.
>
> Will look into it.
>
> I doubt this is causing the long delays though.
The difference is that only areas which have been written after last
update are copied to display instead of updating the whole screen
every time. IIRC for TCX it was a major speedup.
> * There's an unhandled write to the PCI card's config address 0x4, for which
> I have no documentation.
> * Generally, there are some unhandled writel to 0x680, which look like IBM
> progress codes (but I didn't find a manual to decode them - Hervé?), and
> * a frequent writeb to 0x690 with value 0x1 or 0x3 (some activity LED
> maybe?).
> I thought it might be trying to access the missing NCR 53C810 SCSI but saw
> no indication of that.
>
> Andreas
next prev parent reply other threads:[~2011-06-19 13:27 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-14 2:37 [Qemu-devel] [RFC 00/23] PReP 40P emulation Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [PATCH RFC 01/23] prep: Refactor CPU initialization Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 02/23] prep: qdev'ify PCI Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 03/23] prep: Prepare emulation of an IBM RS/6000 6015 / 7020 (40p) Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 04/23] 40p: Add PCI host Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 05/23] prep: Add i82374 DMA emulation Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 06/23] prep: Add i82378 PCI-to-ISA bridge emulation Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 07/23] 40p: Add a PCI to ISA bridge (i82378) Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [PATCH v5 08/23] qdev: Add support for property type bool Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [PATCH v5 09/23] qdev: Add helpers for reading properties Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 10/23] isa: Provide enable and disable callbacks Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 11/23] isa: Allow to un-assign I/O ports Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 12/23] isa: Allow to un-associate an IRQ Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 13/23] parallel: Implement ISA state callbacks Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 14/23] serial: " Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [PATCH v5 15/23] fdc: Parametrize ISA base, IRQ and DMA Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 16/23] fdc: Implement ISA state callbacks Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 17/23] ide: Allow to discard I/O ports Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 18/23] ide: Implement ISA state callbacks Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC v5 19/23] prep: Add pc87312 Super I/O emulation Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 20/23] 40p: Add the Super I/O chip (pc87312) Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 21/23] 40p: Add an audio card and a keyboard Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 22/23] prep: qdev'ify System I/O (WIP) Andreas Färber
2011-06-14 2:37 ` [Qemu-devel] [RFC 23/23] 40p: Add an 8514/A graphics card Andreas Färber
2011-06-15 4:33 ` Roy Tam
2011-06-15 18:11 ` Andreas Färber
2011-06-16 0:02 ` [Qemu-devel] [RFC v2 23/23] 40p: Add an IBM " Andreas Färber
2011-06-18 20:42 ` Blue Swirl
2011-06-19 10:04 ` Andreas Färber
2011-06-19 12:10 ` Hervé Poussineau
2011-06-19 13:27 ` Blue Swirl [this message]
2011-06-19 18:40 ` Andreas Färber
2011-06-19 19:03 ` Blue Swirl
2011-06-19 21:38 ` Andreas Färber
2011-06-19 21:43 ` [Qemu-devel] [RFC v3 " Andreas Färber
2011-06-16 0:05 ` [Qemu-devel] [RFC 23/23] 40p: Add an " Andreas Färber
2011-06-16 1:22 ` Roy Tam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BANLkTimTJdc_CfGwtSSFWKeLZGpYtC_mQQ@mail.gmail.com \
--to=blauwirbel@gmail.com \
--cc=andreas.faerber@web.de \
--cc=hpoussin@reactos.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=roytam@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).