Hi, XPutImage/XGetImage requires to copy the images around, and the request may be split over several chunks. Using XShm should improve performance.
In particular, the performances are bad when using gnome-shell with Spice and playing video. Chunking the update confuses the video detection heuristic: unfortunately it's not easy to change it without breaking further other cases. Making one big request per video frames solves most of the issues. Changes since v1, after Adam Jackson review: - fix a wrong ximage != NULL condition - add XSync() after XPutImageShm to ensure server is done with it - add getImageShm() Marc-André Lureau (9): dri: add putImageShm and getImageShm to swrastLoader drisw: use putImageShm if available drisw: use shared memory when possible drisw/glx: use XShm if possible gallium: move winsys_handle to its own header gallium: rename DRM_API_HANDLE_TYPE* WINSYS_HANDLE_TYPE* drisw: learn to query shmid handle type drisw: use getImageShm() if available drisw/glx: implement getImageShm include/GL/internal/dri_interface.h | 18 +- src/gallium/auxiliary/vl/vl_winsys_dri.c | 2 +- src/gallium/drivers/freedreno/freedreno_screen.c | 12 +- src/gallium/drivers/nouveau/nouveau_screen.c | 12 +- src/gallium/drivers/vc4/vc4_screen.c | 10 +- src/gallium/include/state_tracker/drisw_api.h | 4 + src/gallium/include/state_tracker/drm_driver.h | 32 +--- src/gallium/include/state_tracker/sw_winsys.h | 3 +- src/gallium/include/state_tracker/winsys_handle.h | 42 +++++ src/gallium/state_trackers/dri/dri2.c | 20 +-- src/gallium/state_trackers/dri/drisw.c | 60 ++++++- src/gallium/state_trackers/nine/swapchain9.c | 2 +- src/gallium/state_trackers/xa/xa_tracker.c | 6 +- src/gallium/winsys/i915/drm/i915_drm_buffer.c | 10 +- src/gallium/winsys/intel/drm/intel_drm_winsys.c | 10 +- src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 14 +- src/gallium/winsys/svga/drm/vmw_screen_dri.c | 14 +- src/gallium/winsys/svga/drm/vmw_screen_ioctl.c | 6 +- src/gallium/winsys/sw/dri/dri_sw_winsys.c | 82 +++++++-- src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c | 12 +- src/glx/drisw_glx.c | 192 +++++++++++++++++++--- src/glx/drisw_priv.h | 3 + 22 files changed, 421 insertions(+), 145 deletions(-) create mode 100644 src/gallium/include/state_tracker/winsys_handle.h -- 2.4.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev