 8ac919a065
			
		
	
	
		8ac919a065
		
	
	
	
	
		
			
			This patch adds support for a graphic framebuffer device. This device can be added as a sysbus device or as a NuBus device. It is accessed as a framebuffer but the color palette can be set. Co-developed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Hervé Poussineau <hpoussin@reactos.org> Reviewed-by: Thomas Huth <huth@tuxfamily.org> Message-Id: <20191026164546.30020-9-laurent@vivier.eu>
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * QEMU Motorola 680x0 Macintosh Video Card Emulation
 | |
|  *                 Copyright (c) 2012-2018 Laurent Vivier
 | |
|  *
 | |
|  * some parts from QEMU G364 framebuffer Emulator.
 | |
|  *                 Copyright (c) 2007-2011 Herve Poussineau
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2 or later.
 | |
|  * See the COPYING file in the top-level directory.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef MACFB_H
 | |
| #define MACFB_H
 | |
| 
 | |
| #include "qemu/osdep.h"
 | |
| #include "exec/memory.h"
 | |
| #include "ui/console.h"
 | |
| 
 | |
| typedef struct MacfbState {
 | |
|     MemoryRegion mem_vram;
 | |
|     MemoryRegion mem_ctrl;
 | |
|     QemuConsole *con;
 | |
| 
 | |
|     uint8_t *vram;
 | |
|     uint32_t vram_bit_mask;
 | |
|     uint32_t palette_current;
 | |
|     uint8_t color_palette[256 * 3];
 | |
|     uint32_t width, height; /* in pixels */
 | |
|     uint8_t depth;
 | |
| } MacfbState;
 | |
| 
 | |
| #define TYPE_MACFB "sysbus-macfb"
 | |
| #define MACFB(obj) \
 | |
|     OBJECT_CHECK(MacfbSysBusState, (obj), TYPE_MACFB)
 | |
| 
 | |
| typedef struct {
 | |
|     SysBusDevice busdev;
 | |
| 
 | |
|     MacfbState macfb;
 | |
| } MacfbSysBusState;
 | |
| 
 | |
| #define MACFB_NUBUS_DEVICE_CLASS(class) \
 | |
|     OBJECT_CLASS_CHECK(MacfbNubusDeviceClass, (class), TYPE_NUBUS_MACFB)
 | |
| #define MACFB_NUBUS_GET_CLASS(obj) \
 | |
|     OBJECT_GET_CLASS(MacfbNubusDeviceClass, (obj), TYPE_NUBUS_MACFB)
 | |
| 
 | |
| typedef struct MacfbNubusDeviceClass {
 | |
|     DeviceClass parent_class;
 | |
| 
 | |
|     DeviceRealize parent_realize;
 | |
| } MacfbNubusDeviceClass;
 | |
| 
 | |
| #define TYPE_NUBUS_MACFB "nubus-macfb"
 | |
| #define NUBUS_MACFB(obj) \
 | |
|     OBJECT_CHECK(MacfbNubusState, (obj), TYPE_NUBUS_MACFB)
 | |
| 
 | |
| typedef struct {
 | |
|     NubusDevice busdev;
 | |
| 
 | |
|     MacfbState macfb;
 | |
| } MacfbNubusState;
 | |
| 
 | |
| #endif
 |