summary refs log tree commit diff stats
path: root/hw/display/apple-gfx.h
diff options
context:
space:
mode:
authorPhil Dennis-Jordan <phil@philjordan.eu>2024-07-15 23:07:03 +0200
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2024-12-31 21:21:34 +0100
commitbb43a2342ddf57e6cd4f24161ee4e641cfbcceca (patch)
tree3d4a6bb44c9b5825dd7adde9328c0b0a840cc51a /hw/display/apple-gfx.h
parentb21f17cce561316f1eb1917a4ca660e65c75c420 (diff)
downloadfocaccia-qemu-bb43a2342ddf57e6cd4f24161ee4e641cfbcceca.tar.gz
focaccia-qemu-bb43a2342ddf57e6cd4f24161ee4e641cfbcceca.zip
hw/display/apple-gfx: Adds configurable mode list
This change adds a property 'display_modes' on the graphics device
which permits specifying a list of display modes. (screen resolution
and refresh rate)

The property is an array of a custom type to make the syntax slightly
less awkward to use, for example:

-device '{"driver":"apple-gfx-pci", "display-modes":["1920x1080@60", "3840x2160@60"]}'

Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-ID: <20241223221645.29911-5-phil@philjordan.eu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Diffstat (limited to 'hw/display/apple-gfx.h')
-rw-r--r--hw/display/apple-gfx.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/hw/display/apple-gfx.h b/hw/display/apple-gfx.h
index 6c74209b36..3900cdbabb 100644
--- a/hw/display/apple-gfx.h
+++ b/hw/display/apple-gfx.h
@@ -25,6 +25,12 @@
 
 typedef QTAILQ_HEAD(, PGTask_s) PGTaskList;
 
+typedef struct AppleGFXDisplayMode {
+    uint16_t width_px;
+    uint16_t height_px;
+    uint16_t refresh_rate_hz;
+} AppleGFXDisplayMode;
+
 typedef struct AppleGFXState {
     /* Initialised on init/realize() */
     MemoryRegion iomem_gfx;
@@ -33,6 +39,8 @@ typedef struct AppleGFXState {
     QemuConsole *con;
     id<MTLDevice> mtl;
     id<MTLCommandQueue> mtl_queue;
+    AppleGFXDisplayMode *display_modes;
+    uint32_t num_display_modes;
 
     /* List `tasks` is protected by task_mutex */
     QemuMutex task_mutex;
@@ -60,5 +68,7 @@ void *apple_gfx_host_ptr_for_gpa_range(uint64_t guest_physical,
                                        uint64_t length, bool read_only,
                                        MemoryRegion **mapping_in_region);
 
+extern const PropertyInfo qdev_prop_apple_gfx_display_mode;
+
 #endif