mirror of https://github.com/xemu-project/xemu.git
macfb: add qdev property to specify display type
Since the available resolutions and colour depths are determined by the attached display type, add a qdev property to allow the display type to be specified. The main resolutions of interest are high resolution 1152x870 with 8-bit colour and SVGA resolution up to 800x600 with 24-bit colour so update the q800 machine to allow high resolution mode if specified and otherwise fall back to SVGA. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20211007221253.29024-9-mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
e6108b9636
commit
4317c51861
|
@ -316,7 +316,8 @@ static uint32_t macfb_sense_read(MacfbState *s)
|
|||
MacFbSense *macfb_sense;
|
||||
uint8_t sense;
|
||||
|
||||
macfb_sense = &macfb_sense_table[MACFB_DISPLAY_VGA];
|
||||
assert(s->type < ARRAY_SIZE(macfb_sense_table));
|
||||
macfb_sense = &macfb_sense_table[s->type];
|
||||
if (macfb_sense->sense == 0x7) {
|
||||
/* Extended sense */
|
||||
sense = 0;
|
||||
|
@ -544,6 +545,8 @@ static Property macfb_sysbus_properties[] = {
|
|||
DEFINE_PROP_UINT32("width", MacfbSysBusState, macfb.width, 640),
|
||||
DEFINE_PROP_UINT32("height", MacfbSysBusState, macfb.height, 480),
|
||||
DEFINE_PROP_UINT8("depth", MacfbSysBusState, macfb.depth, 8),
|
||||
DEFINE_PROP_UINT8("display", MacfbSysBusState, macfb.type,
|
||||
MACFB_DISPLAY_VGA),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
|
@ -551,6 +554,8 @@ static Property macfb_nubus_properties[] = {
|
|||
DEFINE_PROP_UINT32("width", MacfbNubusState, macfb.width, 640),
|
||||
DEFINE_PROP_UINT32("height", MacfbNubusState, macfb.height, 480),
|
||||
DEFINE_PROP_UINT8("depth", MacfbNubusState, macfb.depth, 8),
|
||||
DEFINE_PROP_UINT8("display", MacfbNubusState, macfb.type,
|
||||
MACFB_DISPLAY_VGA),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
|
|
|
@ -421,6 +421,11 @@ static void q800_init(MachineState *machine)
|
|||
qdev_prop_set_uint32(dev, "width", graphic_width);
|
||||
qdev_prop_set_uint32(dev, "height", graphic_height);
|
||||
qdev_prop_set_uint8(dev, "depth", graphic_depth);
|
||||
if (graphic_width == 1152 && graphic_height == 870 && graphic_depth == 8) {
|
||||
qdev_prop_set_uint8(dev, "display", MACFB_DISPLAY_APPLE_21_COLOR);
|
||||
} else {
|
||||
qdev_prop_set_uint8(dev, "display", MACFB_DISPLAY_VGA);
|
||||
}
|
||||
qdev_realize_and_unref(dev, BUS(nubus), &error_fatal);
|
||||
|
||||
cs = CPU(cpu);
|
||||
|
|
|
@ -46,6 +46,7 @@ typedef struct MacfbState {
|
|||
uint8_t color_palette[256 * 3];
|
||||
uint32_t width, height; /* in pixels */
|
||||
uint8_t depth;
|
||||
uint8_t type;
|
||||
|
||||
uint32_t sense;
|
||||
} MacfbState;
|
||||
|
|
Loading…
Reference in New Issue