On 2025/12/20 1:16, Joelle van Dyne wrote:
On Wed, Dec 3, 2025 at 10:41 PM Akihiko Odaki
<[email protected]> wrote:
On 2025/12/03 13:07, Joelle van Dyne wrote:
In order to support native texture scanout beyond D3D, we make this more
generic allowing for multiple native texture handle types.
Signed-off-by: Joelle van Dyne <[email protected]>
---
include/ui/console.h | 22 +++++++++++++++++++---
include/ui/gtk.h | 4 ++--
include/ui/sdl2.h | 2 +-
hw/display/virtio-gpu-virgl.c | 10 +++++++---
ui/console.c | 8 ++++----
ui/dbus-console.c | 2 +-
ui/dbus-listener.c | 8 ++++----
ui/egl-headless.c | 2 +-
ui/gtk-egl.c | 2 +-
ui/gtk-gl-area.c | 2 +-
ui/sdl2-gl.c | 2 +-
ui/spice-display.c | 2 +-
12 files changed, 43 insertions(+), 23 deletions(-)
diff --git a/include/ui/console.h b/include/ui/console.h
index 98feaa58bd..25e45295d4 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -131,6 +131,22 @@ struct QemuConsoleClass {
ObjectClass parent_class;
};
+typedef enum ScanoutTextureNativeType {
+ SCANOUT_TEXTURE_NATIVE_TYPE_NONE,
+ SCANOUT_TEXTURE_NATIVE_TYPE_D3D,
+} ScanoutTextureNativeType;
+
+typedef struct ScanoutTextureNative {
+ ScanoutTextureNativeType type;
+ union {
+ void *d3d_tex2d;
+ } u;> +} ScanoutTextureNative;
Instead, I suggest:
typedef struct ScanoutTextureNative {
ScanoutTextureNativeType type;
void *handle;
} ScanoutTextureNative;
...to align with the definition of struct
virgl_renderer_resource_info_ext and
virgl_renderer_create_handle_for_scanout(), which do not add a field for
each type (except the one for the backward compatibility).
I've updated virglrenderer to use a union as well. Since we are
passing ScanoutTextureNative around byval and it can grow with
additional platform support, I think it would be better to keep it as
a union.
I don't think using a union for virglrenderer is a good idea because
adding another member to the union can change its size and cause an ABI
breakage. Sticking to void * is the safest choice. We rely on void * to
represent platform-specific types anyway so there is practically no type
safetey here, unfortunately.
Regards,
Akihiko Odaki