Bug 94432 - [SKL] highlighting doesn't always work properly in aterm
Summary: [SKL] highlighting doesn't always work properly in aterm
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Chris Wilson
QA Contact: Intel GFX Bugs mailing list
Depends on:
Reported: 2016-03-07 20:02 UTC by Ilia Mirkin
Modified: 2019-11-27 13:42 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

screenshot of the bad highlight (55.34 KB, image/png)
2016-03-07 20:03 UTC, Ilia Mirkin
no flags Details

Description Ilia Mirkin 2016-03-07 20:02:38 UTC
When I try to highlight things, sometimes only the bits of the aterm that have characters get highlighted, spaces in those lines are left alone. When forcing a redraw, it's all rendered as expected.

This also has unfortunate usability implications wrt cursor rendering as focus comes in/out of the aterm.

00:02.0 VGA compatible controller [0300]: Intel Corporation Sky Lake Integrated Graphics [8086:1912] (rev 06)

[   545.138] (II) intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20151010
[   545.139] (--) intel(0): gen9 engineering sample
[   545.139] (--) intel(0): CPU: x86-64, sse2, sse3, ssse3, sse4.1, sse4.2, avx, avx2; using a maximum of 4 threads

Note that I have dual rotated displays, one on HDMI1, one on DP1. DDX is at commit d1672806a.

Window manager: WindowMaker, no TearFree, no compositor. A very similar configuration works fine on HSW.
Comment 1 Ilia Mirkin 2016-03-07 20:03:09 UTC
Created attachment 122151 [details]
screenshot of the bad highlight
Comment 2 Ilia Mirkin 2016-03-07 20:23:10 UTC
BTW, enabling TearFree causes the following errors:

[  6156.955] (EE) intel(0): failed to set mode: Invalid argument [22]
[  6156.974] (EE) intel(0): failed to set mode: Invalid argument [22]

and both screens go to sleep. (This happened several times.) This is with xorg 1.18.1 and kernel 4.4.4.
Comment 3 Chris Wilson 2016-03-08 16:50:24 UTC
Maybe this attempt at skipping clear glyphs is mistaken for when the op is special:

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 71a6207..9dcccfa 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -16263,7 +16263,7 @@ sna_reversed_glyph_blt(DrawablePtr drawable, GCPtr gc,
                                goto skip;
-                       {
+                       if (0) {
                                int clear = 1, j = h;
                                uint8_t *g = glyph;
Comment 4 Chris Wilson 2016-03-08 16:56:10 UTC
If that is indeed the issue (and it seems likely), then the right fix will be

-                       {
+                       if (rop == ROP_S) {
Comment 5 Ilia Mirkin 2016-03-08 17:10:42 UTC
As mentioned on IRC, this does not appear to resolve the issue. A very unscientific observation is that selecting things works the first few times in the session, but then stops working. Could be coincidence.

In addition to the patch in comment #3, I also tried to return false at the top of sna_reversed_glyph_blt.
Comment 6 Martin Peres 2019-11-27 13:42:49 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/issues/90.

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.