[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 06/10] hw/display/tcx: Allow 64-bit accesses to framebuffer stippl
From: |
Mark Cave-Ayland |
Subject: |
[PULL 06/10] hw/display/tcx: Allow 64-bit accesses to framebuffer stippler and blitter |
Date: |
Wed, 28 Oct 2020 08:23:54 +0000 |
From: Philippe Mathieu-Daudé <1892540@bugs.launchpad.net>
The S24/TCX datasheet is listed as "Unable to locate" on [1].
However the NetBSD revision 1.32 of the driver introduced
64-bit accesses to the stippler and blitter [2]. It is safe
to assume these memory regions are 64-bit accessible.
QEMU implementation is 32-bit, so fill the 'impl' fields.
Michael Lorenz (author of the NetBSD code [2]) provided us with more
information in [3]:
> IIRC the real hardware *requires* 64bit accesses for stipple and
> blitter operations to work. For stipples you write a 64bit word into
> STIP space, the address defines where in the framebuffer you want to
> draw, the data contain a 32bit bitmask, foreground colour and a ROP.
> BLIT space works similarly, the 64bit word contains an offset were to
> read pixels from, and how many you want to copy.
>
> One more thing since there seems to be some confusion - 64bit accesses
> on the framebuffer are fine as well. TCX/S24 is *not* an SBus device,
> even though its node says it is.
> S24 is a card that plugs into a special slot on the SS5 mainboard,
> which is shared with an SBus slot and looks a lot like a horizontal
> UPA slot. Both S24 and TCX are accessed through the Micro/TurboSPARC's
> AFX bus which is 64bit wide and intended for graphics.
> Early FFB docs even mentioned connecting to both AFX and UPA,
> no idea if that was ever realized in hardware though.
[1]
http://web.archive.org/web/20111209011516/http://wikis.sun.com/display/FOSSdocs/Home
[2]
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/sbus/tcx.c.diff?r1=1.31&r2=1.32
[3] https://www.mail-archive.com/qemu-devel@nongnu.org/msg734928.html
Cc: qemu-stable@nongnu.org
Reported-by: Andreas Gustafsson <gson@gson.org>
Buglink: https://bugs.launchpad.net/bugs/1892540
Fixes: 55d7bfe2293 ("tcx: Implement hardware acceleration")
Tested-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Andreas Gustafsson <gson@gson.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20201024205100.3623006-1-f4bug@amsat.org>
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
hw/display/tcx.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index c9d5e45cd1..878ecc8c50 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -549,20 +549,28 @@ static const MemoryRegionOps tcx_stip_ops = {
.read = tcx_stip_readl,
.write = tcx_stip_writel,
.endianness = DEVICE_NATIVE_ENDIAN,
- .valid = {
+ .impl = {
.min_access_size = 4,
.max_access_size = 4,
},
+ .valid = {
+ .min_access_size = 4,
+ .max_access_size = 8,
+ },
};
static const MemoryRegionOps tcx_rstip_ops = {
.read = tcx_stip_readl,
.write = tcx_rstip_writel,
.endianness = DEVICE_NATIVE_ENDIAN,
- .valid = {
+ .impl = {
.min_access_size = 4,
.max_access_size = 4,
},
+ .valid = {
+ .min_access_size = 4,
+ .max_access_size = 8,
+ },
};
static uint64_t tcx_blit_readl(void *opaque, hwaddr addr,
@@ -651,10 +659,14 @@ static const MemoryRegionOps tcx_rblit_ops = {
.read = tcx_blit_readl,
.write = tcx_rblit_writel,
.endianness = DEVICE_NATIVE_ENDIAN,
- .valid = {
+ .impl = {
.min_access_size = 4,
.max_access_size = 4,
},
+ .valid = {
+ .min_access_size = 4,
+ .max_access_size = 8,
+ },
};
static void tcx_invalidate_cursor_position(TCXState *s)
--
2.20.1
- [PULL 00/10] qemu-sparc queue 20201028, Mark Cave-Ayland, 2020/10/28
- [PULL 01/10] sparc32-dma: use object_initialize_child() for espdma and ledma child objects, Mark Cave-Ayland, 2020/10/28
- [PULL 02/10] sparc32-ledma: use object_initialize_child() for lance child object, Mark Cave-Ayland, 2020/10/28
- [PULL 03/10] sparc32-espdma: use object_initialize_child() for esp child object, Mark Cave-Ayland, 2020/10/28
- [PULL 04/10] sparc32-ledma: don't reference nd_table directly within the device, Mark Cave-Ayland, 2020/10/28
- [PULL 05/10] sabre: don't call sysbus_mmio_map() in sabre_realize(), Mark Cave-Ayland, 2020/10/28
- [PULL 06/10] hw/display/tcx: Allow 64-bit accesses to framebuffer stippler and blitter,
Mark Cave-Ayland <=
- [PULL 07/10] sabre: increase number of PCI bus IRQs from 32 to 64, Mark Cave-Ayland, 2020/10/28
- [PULL 08/10] hw/pci-host/sabre: Update documentation link, Mark Cave-Ayland, 2020/10/28
- [PULL 09/10] hw/pci-host/sabre: Remove superfluous address range check, Mark Cave-Ayland, 2020/10/28
- [PULL 10/10] hw/pci-host/sabre: Simplify code initializing variable once, Mark Cave-Ayland, 2020/10/28
- Re: [PULL 00/10] qemu-sparc queue 20201028, Peter Maydell, 2020/10/31