Skip to content
Snippets Groups Projects
Commit 699f15fd authored by Marc-André Lureau's avatar Marc-André Lureau
Browse files

hw/display/ati: allow compiling without PIXMAN


Change the "x-pixman" property default value and use the fallback path
when PIXMAN support is disabled.

Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: default avatarBALATON Zoltan <balaton@eik.bme.hu>
parent 376a0531
No related branches found
No related tags found
No related merge requests found
...@@ -32,6 +32,12 @@ ...@@ -32,6 +32,12 @@
#define ATI_DEBUG_HW_CURSOR 0 #define ATI_DEBUG_HW_CURSOR 0
#ifdef CONFIG_PIXMAN
#define DEFAULT_X_PIXMAN 3
#else
#define DEFAULT_X_PIXMAN 0
#endif
static const struct { static const struct {
const char *name; const char *name;
uint16_t dev_id; uint16_t dev_id;
...@@ -946,6 +952,12 @@ static void ati_vga_realize(PCIDevice *dev, Error **errp) ...@@ -946,6 +952,12 @@ static void ati_vga_realize(PCIDevice *dev, Error **errp)
ATIVGAState *s = ATI_VGA(dev); ATIVGAState *s = ATI_VGA(dev);
VGACommonState *vga = &s->vga; VGACommonState *vga = &s->vga;
#ifndef CONFIG_PIXMAN
if (s->use_pixman != 0) {
warn_report("x-pixman != 0, not effective without PIXMAN");
}
#endif
if (s->model) { if (s->model) {
int i; int i;
for (i = 0; i < ARRAY_SIZE(ati_model_aliases); i++) { for (i = 0; i < ARRAY_SIZE(ati_model_aliases); i++) {
...@@ -1033,7 +1045,8 @@ static Property ati_vga_properties[] = { ...@@ -1033,7 +1045,8 @@ static Property ati_vga_properties[] = {
DEFINE_PROP_UINT16("x-device-id", ATIVGAState, dev_id, DEFINE_PROP_UINT16("x-device-id", ATIVGAState, dev_id,
PCI_DEVICE_ID_ATI_RAGE128_PF), PCI_DEVICE_ID_ATI_RAGE128_PF),
DEFINE_PROP_BOOL("guest_hwcursor", ATIVGAState, cursor_guest_mode, false), DEFINE_PROP_BOOL("guest_hwcursor", ATIVGAState, cursor_guest_mode, false),
DEFINE_PROP_UINT8("x-pixman", ATIVGAState, use_pixman, 3), /* this is a debug option, prefer PROP_UINT over PROP_BIT for simplicity */
DEFINE_PROP_UINT8("x-pixman", ATIVGAState, use_pixman, DEFAULT_X_PIXMAN),
DEFINE_PROP_END_OF_LIST() DEFINE_PROP_END_OF_LIST()
}; };
......
...@@ -123,6 +123,7 @@ void ati_2d_blt(ATIVGAState *s) ...@@ -123,6 +123,7 @@ void ati_2d_blt(ATIVGAState *s)
src_bits, dst_bits, src_stride, dst_stride, bpp, bpp, src_bits, dst_bits, src_stride, dst_stride, bpp, bpp,
src_x, src_y, dst_x, dst_y, src_x, src_y, dst_x, dst_y,
s->regs.dst_width, s->regs.dst_height); s->regs.dst_width, s->regs.dst_height);
#ifdef CONFIG_PIXMAN
if ((s->use_pixman & BIT(1)) && if ((s->use_pixman & BIT(1)) &&
s->regs.dp_cntl & DST_X_LEFT_TO_RIGHT && s->regs.dp_cntl & DST_X_LEFT_TO_RIGHT &&
s->regs.dp_cntl & DST_Y_TOP_TO_BOTTOM) { s->regs.dp_cntl & DST_Y_TOP_TO_BOTTOM) {
...@@ -147,7 +148,9 @@ void ati_2d_blt(ATIVGAState *s) ...@@ -147,7 +148,9 @@ void ati_2d_blt(ATIVGAState *s)
s->regs.dst_width, s->regs.dst_height); s->regs.dst_width, s->regs.dst_height);
} }
g_free(tmp); g_free(tmp);
} else { } else
#endif
{
fallback = true; fallback = true;
} }
if (fallback) { if (fallback) {
...@@ -206,9 +209,12 @@ void ati_2d_blt(ATIVGAState *s) ...@@ -206,9 +209,12 @@ void ati_2d_blt(ATIVGAState *s)
DPRINTF("pixman_fill(%p, %d, %d, %d, %d, %d, %d, %x)\n", DPRINTF("pixman_fill(%p, %d, %d, %d, %d, %d, %d, %x)\n",
dst_bits, dst_stride, bpp, dst_x, dst_y, dst_bits, dst_stride, bpp, dst_x, dst_y,
s->regs.dst_width, s->regs.dst_height, filler); s->regs.dst_width, s->regs.dst_height, filler);
#ifdef CONFIG_PIXMAN
if (!(s->use_pixman & BIT(0)) || if (!(s->use_pixman & BIT(0)) ||
!pixman_fill((uint32_t *)dst_bits, dst_stride, bpp, dst_x, dst_y, !pixman_fill((uint32_t *)dst_bits, dst_stride, bpp, dst_x, dst_y,
s->regs.dst_width, s->regs.dst_height, filler)) { s->regs.dst_width, s->regs.dst_height, filler))
#endif
{
/* fallback when pixman failed or we don't want to call it */ /* fallback when pixman failed or we don't want to call it */
unsigned int x, y, i, bypp = bpp / 8; unsigned int x, y, i, bypp = bpp / 8;
unsigned int dst_pitch = dst_stride * sizeof(uint32_t); unsigned int dst_pitch = dst_stride * sizeof(uint32_t);
......
...@@ -62,7 +62,7 @@ system_ss.add(when: 'CONFIG_XLNX_DISPLAYPORT', if_true: files('xlnx_dp.c')) ...@@ -62,7 +62,7 @@ system_ss.add(when: 'CONFIG_XLNX_DISPLAYPORT', if_true: files('xlnx_dp.c'))
system_ss.add(when: 'CONFIG_ARTIST', if_true: files('artist.c')) system_ss.add(when: 'CONFIG_ARTIST', if_true: files('artist.c'))
system_ss.add(when: [pixman, 'CONFIG_ATI_VGA'], if_true: files('ati.c', 'ati_2d.c', 'ati_dbg.c')) system_ss.add(when: 'CONFIG_ATI_VGA', if_true: [files('ati.c', 'ati_2d.c', 'ati_dbg.c'), pixman])
if config_all_devices.has_key('CONFIG_VIRTIO_GPU') if config_all_devices.has_key('CONFIG_VIRTIO_GPU')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment