Summary: | glamor: wrong offset with ARGB | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Olivier Fourdan <fourdan> | ||||||||||||
Component: | Server/Acceleration/glamor | Assignee: | Xorg Project Team <xorg-team> | ||||||||||||
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||||||||||
Severity: | normal | ||||||||||||||
Priority: | medium | ||||||||||||||
Version: | unspecified | ||||||||||||||
Hardware: | Other | ||||||||||||||
OS: | All | ||||||||||||||
Whiteboard: | |||||||||||||||
i915 platform: | i915 features: | ||||||||||||||
Attachments: |
|
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.
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.