Created attachment 122340 [details] Reproducer program Description: When enabling glamor acceleration wit hthe modesettings driver, the ARGB surface seems to be painted at (0,0) even though the window is elsewhere. How reproducible: 100% reproducible Steps to reproduce: 1. Enable modesetting with glamor acceleration 2. Save and build the attached reproducer $ gcc -o cairoframe -g cairoframe.c $(pkg-config --libs --cflags cairo x11) 3. Run the reproducer: $ ./cairoframe Actual result: The semi-transparent area is placed in (0,0) instead of the window location, leaving part of the window unpainted Expected result: The semi-transparent area matches the window location Additional data: If relevant, this is on Intel Haswell-ULT Integrated Graphics Controller The same issue does not occur if glamor accel is not used with modesettings (AccelMethod "None") or when using the intel driver.
Created attachment 122341 [details] Expected result This is the expected result, as seen when disabling glamor accel or using intel driver
Created attachment 122342 [details] Actual result This is the actual result with modesettings and glamor
This issue is also present in 1.18.2
glamor debug logs captured with the given reproducer: source pixmap 0x12b65b0 (100 100) mask(0 0) dest(0 0) width 400 height 300 first clipped when compositing. [mi] num: 1 size: 0 [mi] extents: 0 0 400 300 [mi] 0 0 400 300 [mi] clipped (100 100) (0 0) (0 0) width 400 height 300 dest 0 0 dest(0,0) source(0 0) mask (0 -5408), width 400 height 300 finish rendering. glamor_composite_rectangles(op=3, b31159b3 x 1 [(0, 0)x(400, 300) ...]) glamor_composite_rectangles: converted to op 3 _pixman_region_init_clipped_rectangles: nrects=1, region=(100, 100), (500, 400) x 1 glamor_composite_rectangles: drawable extents (100, 100),(500, 400) x 1 glamor_composite_rectangles: clipped extents (100, 100),(500, 400) x 1 glamor_composite_rectangles: pixmap +(-100, -100) extents (0, 0),(400, 300) clipped (0 0) (0 0) (0 0) width 400 height 300 dest 0 0 dest(-100,-100) source(-100 22006) mask (32513 -97), width 400 height 300 finish rendering. glamor_composite_rectangles(op=1, ff1980ff x 4 [(0, 0)x(400, 2) ...]) glamor_composite_rectangles: converted to op 1 _pixman_region_init_clipped_rectangles: nrects=4, region=(100, 100), (500, 400) x 4 glamor_composite_rectangles: drawable extents (100, 100),(500, 400) x 4 glamor_composite_rectangles: clipped extents (100, 100),(500, 400) x 4 glamor_composite_rectangles: pixmap +(-100, -100) extents (0, 0),(400, 300)
Created attachment 122364 [details] [review] Possible fix That patch fixes the issue for me.
Created attachment 122365 [details] [review] [xserver,RFC,v2] glamor: fix wrong offset on composite rectangles https://patchwork.freedesktop.org/patch/77243/ Note: I am not entirely confident with this patch, it fixes the issue for me but I am definitely not certain it's correct...
The patch has landed some time ago, closing.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.