Q:

How to check an application is using hardware or software based display rendering?

My system has a GPU and a shared video memory. I'm using Fedora 27. Some important lines from lspci output is as follows.
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
0a:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Sun LE [Radeon HD 8550M / R5 M230]

What I've understand from "How do I check if my system supports hardware acceleration? Is it on the CPU or motherboard?" is that it's an application which decides whether to use hardware or software based rendering.
This is supported by the fact that Google Chrome has an option to turn off hardware rendering.
But while launching an application from gnome 3 all application has an option to be launched using dedicated graphics.
So, I've two questions

Who decides what rendering to be used (the launcher Gnome 3 or the application solely or something else)?
How to check what rendering an running application is using?

Any explanation regarding this is highly appreciated.

A:

There are a number of issues here.
First, applications can support a variety of rendering methods, e.g. OpenGL and software rendering. If an application renders in software, then no hardware acceleration will be used at all (or minimally, e.g. for blitting operations etc.); this is usually what happens when you select software rendering in applications which support it (Chrome, many older games). If an application renders using OpenGL or something like that, acceleration will depend on the available hardware and whether the appropriate drivers and libraries are installed. In most cases you’ll get hardware acceleration, especially if you’re using GNOME 3 since that requires hardware acceleration (so if GNOME 3 starts in non-classic mode, you’re sure that some form of hardware acceleration is available).
Second, on a system such as yours with two GPUs, acceleration can be provided by either the integrated GPU, or the dedicated GPU. This is generally not controlled by applications, but by the kernel, using the VGA switcheroo. Recent versions of GNOME have support for launching applications using either the integrated GPU or the dedicated GPU explicitly; that’s what the “Launch using Dedicated Graphics Card” option determines (see this blog post for details). If you start an OpenGL application “normally”, it will be hardware accelerated, using your integrated (Intel) GPU; if you start it using “Launch using Dedicated Graphics Card”, it will be hardware accelerated, using your dedicated (AMD) GPU.
To determine whether a running application is using hardware rendering, at least when using non-proprietary drivers, you can find the application’s process id then run
lsof -p ${pid} | grep /dev/dri

(replacing ${pid} with the appropriate value). If this outputs a line containing something like /dev/dri/card0, the application is running using hardware rendering (and the card number will tell you which GPU it’s using — match the values in /dev/dri/by-path with the PCI identifiers); otherwise, it’s not.

