Present bufer fips in Xwayland GSOC 2017, landed in Xserver 1.20 - - PowerPoint PPT Presentation

present bufer fips in xwayland
SMART_READER_LITE
LIVE PREVIEW

Present bufer fips in Xwayland GSOC 2017, landed in Xserver 1.20 - - PowerPoint PPT Presentation

Present bufer fips in Xwayland GSOC 2017, landed in Xserver 1.20 Roman Gilg 1 / 9 Problem statement T earing with Xwayland clients trying to use Present extension. Additional copy from Pixmap. 2 / 9 Solution overview Idea: fip


slide-1
SLIDE 1

1 / 9

Present bufer fips in Xwayland

GSOC 2017, landed in Xserver 1.20

Roman Gilg

slide-2
SLIDE 2

2 / 9

Problem statement

  • T

earing with Xwayland clients trying to use Present extension.

  • Additional copy from Pixmap.
slide-3
SLIDE 3

3 / 9

Solution overview

  • Idea: fip Pixmaps on separate wl_bufers.
  • New Present “mode“, does fips per window, not per screen:

– minimal change to old screen fip code, – also available on multi-monitor systems and in parallel, – complete notify event waits for second driver call.

  • Xwayland integration:

– listens for frame and release events, – timer fallback when no frame callbacks incoming.

slide-4
SLIDE 4

4 / 9

present/...

  • Window fip mode:

– fips per window, – waits for additional call from driver before telling client,

that it can reuse the Pixmap,

– switches parent Pixmap to fipped one (currently only

does fips if child window same rect as parent).

  • Split screen and window mode into sub routines via function

pointers, asks driver for support.

slide-5
SLIDE 5

5 / 9

hw/xwayland/...

  • Commits fipped Pixmaps as separate wl_bufers.
  • On bufer release event tells Present that the fip completed.
  • Aligns msc with frame callbacks (or a fallback timer).
  • Currently only fips if child window rectangle matches parent

window rectangle (might be possible with subsurfaces).

  • First come frst serve: frst child window only requesting fips

is allowed to do it.

slide-6
SLIDE 6

6 / 9

Bug squashing

  • Priv struct per Window, not only per xwl_window.
  • Remove fake crtc.
  • Fix freed pointer access.
  • Open bug: failed assert on Window reparent, patch by Olivier

Fourdan posted to mailing list yesterday.

slide-7
SLIDE 7

7 / 9

Future work

  • Present window mode on arbitrary child windows:

– In Prsent copy back to parent window Pixmap? – In Xwayland probably with subsurfaces.

slide-8
SLIDE 8

8 / 9

Thank you

  • Daniel Stone, GSOC mentor
  • Michel Dänzer, patch series review + feedback
  • Adam Jackson, testing + feedback
  • Olivier Fourdan, bug hunting
  • Lionel Landwerlin, bug hunting
slide-9
SLIDE 9

9 / 9

Thank you for listening.