How does Steam & other applications determine what Video driver is in use?

OK…I have the “new” Intel Xe driver to where it runs very nicely on my system…The problem is that Steam & BOINC do not recognize Xe & “assume” that there is no accelerated driver available.

I want to test the Xe driver with both & don’t know where to make a change to the system. I’ve Google’d until my fingers are numb & can’t seem to find it that way…so if anyone knows or has a clue…I’m ALL EARS…

I’m thinking that Information that Mesa gathers would point the way, but I can’t seem to find any documentation about that.

Have you already checked your BIOS for a GPU switch?

Also, show us that inxi.

inxi -Fxxc0z

I’m using a dedicated Video card (A750), so no switch. The information I’m looking for is pretty deep…I’m looking for specific Mesa or OpenCL (via Intel-Compute-Runtime) documentation as to the way a driver is presented to the system. The Intel i915 driver shows up with ways to show what driver is in use.

sudo lspci -vvv reports this with the i915 driver (note the drivers available at the end–If I change to the Xe driver, the driver in use is blank):

	Subsystem: Intel Corporation Device 1021
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin ? routed to IRQ 256
	Region 0: Memory at 82000000 (64-bit, non-prefetchable) [size=16M]
	Region 2: Memory at 4000000000 (64-bit, prefetchable) [size=8G]
	Expansion ROM at 83000000 [disabled] [size=2M]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express (v2) Endpoint, IntMsgNum 0
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W TEE-IO-
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1
			TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range B, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp- ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
			 AtomicOpsCtl: ReqEn-
			 IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq-
			 10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
		LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit+
		Address: 00000000fee013d8  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [d0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 0
		ARICtl:	MFVC- ACS-, Function Group: 0
	Capabilities: [420 v1] Physical Resizable BAR
		BAR 2: current size: 8GB, supported: 256MB 512MB 1GB 2GB 4GB 8GB
	Capabilities: [400 v1] Latency Tolerance Reporting
		Max snoop latency: 15728640ns
		Max no snoop latency: 15728640ns
	Kernel driver in use: i915
	Kernel modules: i915, xe

As you can see, the Xe driver can be used----but if selected, it is not being reported…

What I’m trying to accomplish is having applications REPORT that the Xe driver is in use…Currently that “seems” to not be possible…I’m running extra-testing & multilib-testing, so I have the most current versions of Mesa & Intel-Compute-Runtime.

What do you get when you run:

lsmod | grep xe

The sudo lspci -vvv report with the Xe driver running (using the kernel line – i915.force_probe=!56a1 xe.force_probe=56a1) Note that there is no report of the driver in use…just the modules available…

03:00.0 VGA compatible controller: Intel Corporation DG2 [Arc A750] (rev 08) (prog-if 00 [VGA controller])
	Subsystem: Intel Corporation Device 1021
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Region 0: Memory at 82000000 (64-bit, non-prefetchable) [size=16M]
	Region 2: Memory at 4000000000 (64-bit, prefetchable) [size=8G]
	Expansion ROM at 83000000 [disabled] [size=2M]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express (v2) Endpoint, IntMsgNum 0
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W TEE-IO-
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1
			TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range B, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp- ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
			 AtomicOpsCtl: ReqEn-
			 IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq-
			 10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
		LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [ac] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [d0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 0
		ARICtl:	MFVC- ACS-, Function Group: 0
	Capabilities: [420 v1] Physical Resizable BAR
		BAR 2: current size: 8GB, supported: 256MB 512MB 1GB 2GB 4GB 8GB
	Capabilities: [400 v1] Latency Tolerance Reporting
		Max snoop latency: 15728640ns
		Max no snoop latency: 15728640ns
	Kernel modules: i915, xe

Nothing…but the driver is working…

This is very quickly getting out of comfort zone. :sweat_smile:

Does the command below return anything?

nano /etc/X11/xorg.conf.d/20-intel.conf

No Xorg—I’m on Wayland…

Yes, but unless you specifically remove X11, it’s still on your system and may impact Wayland-related things.

That being said, make a backup, then try the below by creating the file above:

Section "Device"
  Identifier "Intel Graphics"
  Driver "modesetting"
  Option "AccelMethod" "glamor"
EndSection

I know I can go back to the “comfort zone” of the i915 driver…but I’m wanting to test performance of the Xe driver. It’s irritating that what I want to test the most is just out of my reach…

And add this to your kernel parameters.

i915.force_probe=!<your_pci_id> xe.force_probe=<your_pci_id>

Well—some apps use Xwayland… I just checked & the only things in ,conf.d are old…from before the Wayland changeover I did last year.

Look up a few & you will see that I do that already.

Oh, right! Just remembered that you typed that.

What about this part then just as a test:

Hmmmm…I’ll give that a try.

Wait. Try this with Steam as a launch argument:

MESA_LOADER_DRIVER_OVERRIDE=iris %command%

Or both the previous thing and this?

You may also want to install clinfo to view what’s happening (or not happening).

Well—nothing is working, so I’m going back to the i915 & do some more research…

Hmm. Found some links related to your query. Check them out if you haven’t already. Maybe you’ll find some luck.

Intel Docs: https://dgpu-docs.intel.com/devices/iris-xe-max-graphics/index.html
BBS: https://bbs.archlinux.org/viewtopic.php?id=286102
BOINC: https://boinc.berkeley.edu/dev/forum_user_posts.php?offset=-4130&userid=8
Mesa: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20418

Also found your GitHub post :sweat_smile:

Yes—I’ve been working on this for a while…It’s frustrating to have it " work - but - not work " --THANKS for the freedesktop info…I’ll start chasing that down…the guys over at BOINC said, “well, it’s a Mesa/OpenCL problem - so it’s not our problem…” The problem that I have is what I’m wanting to do is “almost” not been done before…the driver is still too new for anyone but people experimenting to use it…It’s really not ready for any productive use. I have seen the Intel article & traced down everything I can find on Arch Forums ( I have an account there, but I only lurk…Unfriendly place…) I’ve got a fairly good amount of info from following https://www.phoronix.com/linux/Intel … He’s been keeping a good eye on the devlopment.

1 Like

Yeah, app devs are sometimes not in the mood to cater to users’ setups. Also, sometimes they literally can’t because they don’t have the manpower.

That’s one place that I’ll only ever treat as a source of information. Won’t ever sign up even if I install Arch “the Arch way” one day. :grimacing:

Hope you find something soon enough.