You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qemu/hw/display
Yiwei Zhang 1fa2ffdbec virtio-gpu: support context init multiple timeline
Venus and later native contexts have their own fence context along with
multiple timelines within. Fences wtih VIRTIO_GPU_FLAG_INFO_RING_IDX in
the flags must be dispatched to be created on the target context. Fence
signaling also has to be handled on the specific timeline within that
target context.

Before this change, venus fencing is completely broken if the host
driver doesn't support implicit fencing with external memory objects.
Frames can go backwards along with random artifacts on screen if the
host driver doesn't attach an implicit fence to the render target. The
symptom could be hidden by certain guest wsi backend that waits on a
venus native VkFence object for the actual payload with limited present
modes or under special configs. e.g. x11 mailbox or xwayland.

After this change, everything related to venus fencing starts making
sense. Confirmed this via guest and host side perfetto tracing.

Cc: qemu-stable@nongnu.org
Fixes: 94d0ea1c19 ("virtio-gpu: Support Venus context")
Signed-off-by: Yiwei Zhang <zzyiwei@gmail.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Message-Id: <20250518152651.334115-1-zzyiwei@gmail.com>
[AJB: remove version history from commit message]
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Message-ID: <20250627112512.1880708-16-alex.bennee@linaro.org>
4 days ago
..
Kconfig pvg: do not enable it on cross-architecture targets 4 months ago
acpi-vga-stub.c acpi: pc: vga: use AcpiDevAmlIf interface to build VGA device descriptors 3 years ago
acpi-vga.c acpi: pc: vga: use AcpiDevAmlIf interface to build VGA device descriptors 3 years ago
apple-gfx-mmio.m qom: Have class_init() take a const data argument 2 months ago
apple-gfx-pci.m qom: Make InterfaceInfo[] uses const 2 months ago
apple-gfx.h include/system: Move exec/memory.h to system/memory.h 2 months ago
apple-gfx.m hw/display/apple-gfx: Replace QemuSemaphore with QemuEvent 4 weeks ago
artist.c qom: Have class_init() take a const data argument 2 months ago
ati.c qom: Make InterfaceInfo[] uses const 2 months ago
ati_2d.c hw/display/ati: allow compiling without PIXMAN 2 years ago
ati_dbg.c ati-vga: Add 30 bit palette access register 2 years ago
ati_int.h ati-vga: Implement fallback for pixman routines 2 years ago
ati_regs.h ati-vga: Add 30 bit palette access register 2 years ago
bcm2835_fb.c qom: Have class_init() take a const data argument 2 months ago
bochs-display.c qom: Make InterfaceInfo[] uses const 2 months ago
cg3.c qom: Have class_init() take a const data argument 2 months ago
cirrus_vga.c qom: Make InterfaceInfo[] uses const 2 months ago
cirrus_vga_internal.h hw/display/cirrus_vga: Move "isa-cirrus-vga" device into a separate file 7 years ago
cirrus_vga_isa.c qom: Have class_init() take a const data argument 2 months ago
cirrus_vga_rop.h cirrus: fix off-by-one in cirrus_bitblt_rop_bkwd_transp_*_16 8 years ago
cirrus_vga_rop2.h cirrus: fix PUTPIXEL macro 8 years ago
dm163.c qom: Have class_init() take a const data argument 2 months ago
dpcd.c qom: Have class_init() take a const data argument 2 months ago
edid-generate.c edid: Fix clock of Detailed Timing Descriptor 3 years ago
edid-region.c include/system: Move exec/memory.h to system/memory.h 2 months ago
exynos4210_fimd.c qom: Have class_init() take a const data argument 2 months ago
framebuffer.c Include hw/hw.h exactly where needed 6 years ago
framebuffer.h include/system: Move exec/memory.h to system/memory.h 2 months ago
g364fb.c qom: Have class_init() take a const data argument 2 months ago
i2c-ddc.c qom: Have class_init() take a const data argument 2 months ago
jazz_led.c qom: Have class_init() take a const data argument 2 months ago
macfb.c qom: Have class_init() take a const data argument 2 months ago
meson.build pvg: add option to configure it out 4 months ago
next-fb.c qom: Have class_init() take a const data argument 2 months ago
omap_lcdc.c hw/arm/omap: Drop useless casts from void * to pointer 3 years ago
pl110.c qom: Have class_init() take a const data argument 2 months ago
pl110_template.h Replace config-time define HOST_WORDS_BIGENDIAN 3 years ago
qxl-logger.c hw/display/qxl: Pass requested buffer size to qxl_phys2virt() 3 years ago
qxl-render.c include: Rename sysemu/ -> system/ 7 months ago
qxl.c qom: Make InterfaceInfo[] uses const 2 months ago
qxl.h Replace "iothread lock" with "BQL" in comments 2 years ago
ramfb-standalone.c qom: Have class_init() take a const data argument 2 months ago
ramfb-stubs.c ramfb: move stubs out of stubs/ 1 year ago
ramfb.c include: Rename sysemu/ -> system/ 7 months ago
sii9022.c qom: Have class_init() take a const data argument 2 months ago
sm501.c qom: Make InterfaceInfo[] uses const 2 months ago
ssd0303.c qom: Have class_init() take a const data argument 2 months ago
ssd0323.c qom: Have class_init() take a const data argument 2 months ago
tcx.c qom: Have class_init() take a const data argument 2 months ago
trace-events hw/display/apple-gfx: Adds configurable mode list 6 months ago
trace.h trace: switch position of headers to what Meson requires 5 years ago
vga-access.h vga: move access helpers to separate include file 6 years ago
vga-helpers.h vga: optimize horizontal pel panning in 256-color modes 1 year ago
vga-isa.c qom: Have class_init() take a const data argument 2 months ago
vga-mmio.c qom: Have class_init() take a const data argument 2 months ago
vga-pci.c qom: Make InterfaceInfo[] uses const 2 months ago
vga.c exec: Rename target_words_bigendian() -> target_big_endian() 2 months ago
vga_int.h include/system: Move exec/ioport.h to system/ioport.h 2 months ago
vga_regs.h vga: sort-of implement word and double-word access modes 1 year ago
vhost-user-gpu-pci.c modules: introduces module_kconfig directive 3 years ago
vhost-user-gpu.c vhost-user: return failure if backend crash when live migration 2 months ago
vhost-user-vga.c modules: introduces module_kconfig directive 3 years ago
virtio-dmabuf.c hw/display: fix memleak from virtio_add_resource 2 years ago
virtio-gpu-base.c qom: Have class_init() take a const data argument 2 months ago
virtio-gpu-gl.c qom: Have class_init() take a const data argument 2 months ago
virtio-gpu-pci-gl.c modules: introduces module_kconfig directive 3 years ago
virtio-gpu-pci-rutabaga.c qom: Make InterfaceInfo[] uses const 2 months ago
virtio-gpu-pci.c qom: Have class_init() take a const data argument 2 months ago
virtio-gpu-rutabaga.c qom: Have class_init() take a const data argument 2 months ago
virtio-gpu-udmabuf-stubs.c virtio-gpu: splitting one extended mode guest fb into n-scanouts 4 years ago
virtio-gpu-udmabuf.c ui/egl: use DRM_FORMAT_MOD_INVALID as default modifier 2 months ago
virtio-gpu-virgl.c virtio-gpu: support context init multiple timeline 4 days ago
virtio-gpu.c qom: Have class_init() take a const data argument 2 months ago
virtio-vga-gl.c modules: introduces module_kconfig directive 3 years ago
virtio-vga-rutabaga.c gfxstream + rutabaga: add initial support for gfxstream 2 years ago
virtio-vga.c qom: Have class_init() take a const data argument 2 months ago
virtio-vga.h hw/display/virtio-vga: Convert TYPE_VIRTIO_VGA_BASE to 3-phase reset 3 years ago
vmware_vga.c hw/display/vmware_vga: skip automatic zero-init of large struct 3 weeks ago
xenfb.c include: Rename sysemu/ -> system/ 7 months ago
xlnx_dp.c qom: Have class_init() take a const data argument 2 months ago