qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/8] console: add qemu_alloc_display_format.


From: Frederic Konrad
Subject: Re: [Qemu-devel] [PATCH 3/8] console: add qemu_alloc_display_format.
Date: Mon, 18 May 2015 09:51:20 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0

On 18/05/2015 09:34, Gerd Hoffmann wrote:
On Mi, 2015-05-13 at 21:12 +0200, address@hidden wrote:
From: KONRAD Frederic <address@hidden>

This allows to create a surface with a different format than xrgb8888.
What is the use case for this?

cheers,
   Gerd



Hi,

The Display Port introduced in patch 7 and the driver use differents pixel format.
eg: rgb565, RGB888, etc. see xilinx_dp_change_graphic_fmt in patch 7:

+static void xilinx_dp_change_graphic_fmt(XilinxDPState *s)
+{
+    switch (s->avbufm_registers[AV_BUF_FORMAT] & DP_GRAPHIC_MASK) {
+    case DP_GRAPHIC_RGBA8888:
+        s->planes[0].format = PIXMAN_r8g8b8a8;
+        break;
+    case DP_GRAPHIC_ABGR8888:
+        s->planes[0].format = PIXMAN_a8b8g8r8;
+        break;
+    case DP_GRAPHIC_RGB565:
+        s->planes[0].format = PIXMAN_r5g6b5;
+        break;
+    case DP_GRAPHIC_RGB888:
+        s->planes[0].format = PIXMAN_r8g8b8;
+        break;
+    case DP_GRAPHIC_BGR888:
+        s->planes[0].format = PIXMAN_b8g8r8;
+        break;
+    default:
+        DPRINTF("error: unsupported graphic format %u.\n",
+                s->avbufm_registers[AV_BUF_FORMAT] & DP_GRAPHIC_MASK);
+        abort();
+        break;
+    }
+
+    switch (s->avbufm_registers[AV_BUF_FORMAT] & DP_NL_VID_FMT_MASK) {
+    case 0:
+        s->planes[1].format = PIXMAN_r8g8b8a8;
+        break;
+    case DP_NL_VID_RGBA8880:
+        s->planes[1].format = PIXMAN_r8g8b8a8;
+        break;
+    default:
+        DPRINTF("error: unsupported video format %u.\n",
+                s->avbufm_registers[AV_BUF_FORMAT] & DP_NL_VID_FMT_MASK);
+        abort();
+        break;
+    }
+
+    xilinx_dp_recreate_surface(s);
+}


It needs alpha blending of two planes as well. I do this work with pixman.

Thanks,
Fred



reply via email to

[Prev in Thread] Current Thread [Next in Thread]