A single orange flower in a sea of blue and white.

System76 Galago Pro Graphics Performance with Pop!_OS

I love my System76 Galago Pro. I’ve had it since last summer, and it has been a great portable workstation. I must admit, however, that it isn’t perfect. The whole time that I’ve been using this laptop, it’s fan has been hyperactive. It would spin up for seemingly any reason, and the machine would heat up extremely quickly. I was willing to live with these problems, but they were irksome.

Another, seemingly related problem, was that most video suffered from extreme screen tearing. It was physically painful to be watching a YouTube video and have it visually rip itself in half every few seconds.

This weekend, I finally got fed up with it. I decided to try to fix the tearing problem. I knew that my computer has a Kaby Lake Intel i7 processor and an Intel HD 620 integrated graphics card. Armed with that knowledge, I hit the search engines.

It didn’t take long to find this helpful article on ArchWiki about how to try out the Tear-Free setting for the Intel Xorg graphics driver. The Arch page suggests adding a line to your /etc/X11/xorg.conf.d/20-intel.conf. Unfortunately, I didn’t have that file. In fact, the /etc/X11/xorg.conf.d/ directory didn’t even exist on my system. By searching the entire filesystem for xorg.conf, I was able to locate the example configuration file shipped by the Intel Xorg driver at /usr/share/doc/xserver-xorg-video-intel/xorg.conf. The README file in that directory indicated that I should see man intel for information about the different settings for the driver.

I opened man 4 intel and found the documentation for the TearFree option:

Option "TearFree" "boolean"
              Disable or enable TearFree updates. This option forces X to perform  all  rendering  to  a  backbuffer
              prior to updating the actual display. It requires an extra memory allocation the same size as a frame‐
              buffer, the occasional extra copy, and requires Damage tracking. Thus enabling TearFree requires  more
              memory  and  is  slower  (reduced  throughput) and introduces a small amount of output latency, but it
              should not impact input latency. However, the update to the screen  is  then  performed  synchronously
              with  the  vertical  refresh  of the display so that the entire update is completed before the display
              starts its refresh. That is only one frame is ever visible, preventing an unsightly tear  between  two
              visible  and differing frames. Note that this replicates what the compositing manager should be doing,
              however TearFree will redirect the compositor updates (and those of fullscreen games) directly  on  to
              the  scanout thus incurring no additional overhead in the composited case. Also note that not all com‐
              positing managers prevent tearing, and if the outputs are rotated, there will still be tearing without
              TearFree enabled.

              Default: TearFree is disabled.

Given how badly my graphics were performing, I figured it was worth the tradeoff. I created xorg.conf.d and copied the example configuration file into it. Then I added the TearFree option so that the file looks like this:

# /etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
    Identifier "Intel"
    Driver "intel"
    Option "TearFree" "true"
EndSection

I restarted with this config and the difference was striking. I can watch streamed HD videos without tearing and without my computer heating up significantly. In order to get a good frame rate consistently, I do need to run at 1920×1080 instead of 3200×1800, but I can live with that.

After digging through the Xorg logs, I’ve come to the conclusion that all of my graphics up to this point were software rendering, hence the heat and fan noise. I can’t believe that I’ve been living with software rendering for months, but I have the log files to prove it.

As a simple test for whether you are running Xorg with hardware acceleration (if you have an Intel graphics chip), you can search your Xorg log for the keyword “intel”. Something like this should work:

grep "intel" /var/log/Xorg.0.log
# the log may also be at ~/.local/share/xorg/Xorg.0.log

If you see no lines about configuring the Intel input driver, you’re not using your integrated graphics card either.

Image Credit: Stefan Lins
Image License: CC-BY-NC 2.0

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s