[PATCH 0/5] glamor: Fix large pixmap compositing

Keith Packard keithp at keithp.com
Tue Aug 19 13:00:08 PDT 2014


I was casually surfing the net when I came across an image which was
over 8400 pixels tall. Iceweasel happily dumped that into the X server
and proceeded to try and display it scaled to the window using
Render. No such luck; the X server promptly failed an assertion in the
large pixmap compositing code.

I found a bunch of code that casually dereferenced the large side of
the glamor pixmap private without checking whether the pixmap was
actually large. I added an assertion to check all of these and then
fixed up the offenders one at a time.

This patch sequence adds the macro where the assert lives without the
assertion first, then fixes the related bugs and finally enables the
assert.

Keith Packard (5):
  glamor: Change SET_PIXMAP_FBO_CURRENT from macro to static inline
  glamor: Add macro __glamor_large in glamor_largepixmap.c
  glamor: Don't abuse large_pixmap members for regular pixmaps
  glamor: Handle compositing from large to small pixmaps
  glamor: Check large pixmap users in glamor_largepixmap.c

 glamor/glamor_largepixmap.c | 96 +++++++++++++++++++++++++++------------------
 glamor/glamor_pixmap.c      |  2 +-
 glamor/glamor_priv.h        | 17 ++++----
 3 files changed, 68 insertions(+), 47 deletions(-)

-- 
2.0.1



More information about the xorg-devel mailing list