<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.fex-emu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sonicadvance1</id>
	<title>FEX-Emu Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fex-emu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sonicadvance1"/>
	<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php/Special:Contributions/Sonicadvance1"/>
	<updated>2026-04-08T04:10:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Saint_Seiya:_Soldiers%27_Soul&amp;diff=1569</id>
		<title>Saint Seiya: Soldiers' Soul</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Saint_Seiya:_Soldiers%27_Soul&amp;diff=1569"/>
		<updated>2026-04-03T22:37:24Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 348710&lt;br /&gt;
|steamheader     = 348710&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-32&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game, Proton&lt;br /&gt;
|renderapi       = Direct3D 9&lt;br /&gt;
|testedos_warn        = wow64 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== x87 reduced precision causes incorrect textures ===&lt;br /&gt;
Not a game breaking bug. Required to have the game full speed. Once the feature is enabled, some HUD elements will select incorrect textures and appear incorrectly.&lt;br /&gt;
[https://github.com/FEX-Emu/FEX/issues/5411 Tracking bug]&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Saint_Seiya:_Soldiers%27_Soul&amp;diff=1568</id>
		<title>Saint Seiya: Soldiers' Soul</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Saint_Seiya:_Soldiers%27_Soul&amp;diff=1568"/>
		<updated>2026-04-03T20:48:38Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 348710&lt;br /&gt;
|steamheader     = 348710&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-32&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game, Proton&lt;br /&gt;
|renderapi       = Direct3D 9&lt;br /&gt;
|testedos        = wow64 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== x87 reduced precision causes incorrect textures ===&lt;br /&gt;
Not a game breaking bug. Required to have the game full speed. Once the feature is enabled, some HUD elements will select incorrect textures and appear incorrectly.&lt;br /&gt;
[https://github.com/FEX-Emu/FEX/issues/5411 Tracking bug]&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Saint_Seiya:_Soldiers%27_Soul&amp;diff=1567</id>
		<title>Saint Seiya: Soldiers' Soul</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Saint_Seiya:_Soldiers%27_Soul&amp;diff=1567"/>
		<updated>2026-04-03T20:48:32Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 348710 |steamheader      = 348710 |os              = Windows |arch            = x86-32 |cpufeats        = Unknown |compat          = Playable |app...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 348710&lt;br /&gt;
|steamheader      = 348710&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-32&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game, Proton&lt;br /&gt;
|renderapi       = Direct3D 9&lt;br /&gt;
|testedos        = wow64 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== x87 reduced precision causes incorrect textures ===&lt;br /&gt;
Not a game breaking bug. Required to have the game full speed. Once the feature is enabled, some HUD elements will select incorrect textures and appear incorrectly.&lt;br /&gt;
[https://github.com/FEX-Emu/FEX/issues/5411 Tracking bug]&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=ELDEN_RING&amp;diff=1566</id>
		<title>ELDEN RING</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=ELDEN_RING&amp;diff=1566"/>
		<updated>2026-03-31T02:13:30Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 1245620&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Crashes, Playable&lt;br /&gt;
|apptype         = Game, Proton&lt;br /&gt;
|renderapi       = Direct3D 12&lt;br /&gt;
|drm             = Easy Anti-Cheat&lt;br /&gt;
|testedos        = x86 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
=== Need to disable Easy Anti-Cheat ===&lt;br /&gt;
Overwrite the start_protected_game.exe executable with the eldenring executable and this will disable EAC.&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Crashes early in-game due to SIGILL ===&lt;br /&gt;
The game generates 64KB JIT sections which for some reason decides to generate a block of code with a ud2 instruction. Which results in SIGILL.&lt;br /&gt;
   0x0000000145320dce:  mov    QWORD PTR [rbp+0x78],rax&lt;br /&gt;
   0x0000000145320dd2:  mov    rax,QWORD PTR [rbp+0x78]&lt;br /&gt;
   0x0000000145320dd6:  mov    QWORD PTR [rbp+0x70],rax&lt;br /&gt;
   0x0000000145320dda:  mov    QWORD PTR [rsp-0x8],rax&lt;br /&gt;
   0x0000000145320ddf:  lea    rsp,[rsp-0x8]&lt;br /&gt;
   0x0000000145320de4:  lea    rax,[rbp+0x68]&lt;br /&gt;
   0x0000000145320de8:  ud2&lt;br /&gt;
&lt;br /&gt;
No idea why it does this, but it stops it from being playable&lt;br /&gt;
&lt;br /&gt;
=== Turnip crash possible due to vkd3d ===&lt;br /&gt;
When running the game with the Turnip video driver, the game crashes due to trying to access memory zero.&lt;br /&gt;
Which could be a nullptr dereference due to some missing feature of Turnip that vkd3d needs.&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-102-gba93bdd|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Seems to work when EAC is bypassed. Bad performance.|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/entry|revision=FEX-2207|archtitle=x86-64|archhost=AArch64|SoC=Snapdragon 888|GPU=Adreno 660|result=Crashes early due to nullptr|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Call_of_Duty:_Black_Ops_III&amp;diff=1565</id>
		<title>Call of Duty: Black Ops III</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Call_of_Duty:_Black_Ops_III&amp;diff=1565"/>
		<updated>2026-03-31T01:54:55Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Sonicadvance1 moved page Call of Duty Black Ops 3 to Call of Duty: Black Ops III without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 311210&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = IW Engine&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2312|archtitle=x86-64|SoC=Snapdragon 8cx Gen 3|GPU=Adreno 690|result=Online play not tested, but runs okay|tester=Dantheman825}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Call_of_Duty:_Black_Ops_II&amp;diff=1564</id>
		<title>Call of Duty: Black Ops II</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Call_of_Duty:_Black_Ops_II&amp;diff=1564"/>
		<updated>2026-03-31T01:48:25Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 202970 |os              = Windows |cpufeats        = Unknown |compat          = Crashes |apptype         = Game |drm             = Valve CEG |test...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 202970&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Crashes&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|drm             = Valve CEG&lt;br /&gt;
|testedos_nw     = x86 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-114-g7e4cf5e|archtitle=x86-32|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Crashes immediately|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1563</id>
		<title>Template:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1563"/>
		<updated>2026-03-30T22:48:52Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;infobox-title&amp;quot;&amp;gt;{{{title|{{PAGENAME}}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#if:{{{image|}}}|&amp;lt;div class=&amp;quot;infobox-image&amp;quot;&amp;gt;[[File:{{{image}}}|300px]]&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{{steamheader|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamheader}}}/header.jpg&amp;lt;/div&amp;gt;|{{#if:{{{steamappid|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamappid}}}/library_600x900.jpg&amp;lt;/div&amp;gt;}}|}}&lt;br /&gt;
{|&lt;br /&gt;
{{#if:{{{steamappid|}}}{{{gogurl|}}}|&lt;br /&gt;
    &amp;lt;!-- First element --&amp;gt;&lt;br /&gt;
    {{!}}'''Storefronts'''&lt;br /&gt;
{{!!}}&lt;br /&gt;
{{#if:{{{steamappid|}}}|&lt;br /&gt;
{{#regex:{{{steamurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Steam_logo.svg|24px|link=https://store.steampowered.com/app/{{{steamappid}}}]]}}[[Category:On Steam]]&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{gogurl|}}}|&lt;br /&gt;
{{#regex:{{{gogurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Gog_logo.svg|24px|link=$1]]}}[[Category:On GOG]]&lt;br /&gt;
}}&lt;br /&gt;
{{!}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{os|}}}|{{!}}'''Operating Systems'''{{!!}}{{#ifeq:{{#regex:{{{os|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{os|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Games|$1]][[Category:$1 Games]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{engine|}}}|{{!}}'''Engine'''{{!!}}{{#ifeq:{{#regex:{{{engine|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{engine|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Engine|$1]][[Category:$1 Engine]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{arch|}}}|{{!}}'''Architecture'''{{!!}}{{#ifeq:{{#regex:{{{arch|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{arch|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1|$1]][[Category:$1]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{cpufeats|}}}|{{!}}'''CPU Features Used'''{{!!}}{{#ifeq:{{#regex:{{{cpufeats|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{cpufeats|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 CPU Feature|$1]][[Category:$1 CPU Feature]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{compat|}}}|{{!}}'''Compatibility'''{{!!}}{{#ifeq:{{#regex:{{{compat|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{compat|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Compatibility|$1]][[Category:$1 Compatibility]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{apptype|}}}|{{!}}'''Type'''{{!!}}{{#ifeq:{{#regex:{{{apptype|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{apptype|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Type Application|$1]][[Category:$1 Type Application]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{renderapi|}}}|{{!}}'''Render API'''{{!!}}{{#ifeq:{{#regex:{{{renderapi|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{renderapi|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Render API|$1]][[Category:$1 Render API]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{workingthunks|}}}|{{!}}'''Supported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{workingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{workingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Capable|$1]][[Category:$1 Thunk Capable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{nonworkingthunks|}}}|{{!}}'''Unsupported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{nonworkingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{nonworkingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Incapable|$1]][[Category:$1 Thunk Incapable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{drm|}}}|{{!}}'''DRM'''{{!!}}{{#ifeq:{{#regex:{{{drm|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{drm|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 DRM|$1]][[Category:$1 DRM]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{testedos|}}}{{{testedos_warn|}}}{{{testedos_nw|}}}|{{!}}'''Tested OS'''{{!!}}{{#ifeq:{{#regex:{{{testedos|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos|}}}|/([^,]+)(,? ?)/rs|🟩 $1&amp;lt;/br&amp;gt;}}&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_warn|}}}|/([^,]+)(,? ?)/rs|⚠️ $1&amp;lt;/br&amp;gt;}}&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_nw|}}}|/([^,]+)(,? ?)/rs|🟥 $1&amp;lt;/br&amp;gt;}}&lt;br /&gt;
&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1562</id>
		<title>Template:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1562"/>
		<updated>2026-03-30T22:47:07Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;infobox-title&amp;quot;&amp;gt;{{{title|{{PAGENAME}}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#if:{{{image|}}}|&amp;lt;div class=&amp;quot;infobox-image&amp;quot;&amp;gt;[[File:{{{image}}}|300px]]&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{{steamheader|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamheader}}}/header.jpg&amp;lt;/div&amp;gt;|{{#if:{{{steamappid|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamappid}}}/library_600x900.jpg&amp;lt;/div&amp;gt;}}|}}&lt;br /&gt;
{|&lt;br /&gt;
{{#if:{{{steamappid|}}}{{{gogurl|}}}|&lt;br /&gt;
    &amp;lt;!-- First element --&amp;gt;&lt;br /&gt;
    {{!}}'''Storefronts'''&lt;br /&gt;
{{!!}}&lt;br /&gt;
{{#if:{{{steamappid|}}}|&lt;br /&gt;
{{#regex:{{{steamurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Steam_logo.svg|24px|link=https://store.steampowered.com/app/{{{steamappid}}}]]}}[[Category:On Steam]]&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{gogurl|}}}|&lt;br /&gt;
{{#regex:{{{gogurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Gog_logo.svg|24px|link=$1]]}}[[Category:On GOG]]&lt;br /&gt;
}}&lt;br /&gt;
{{!}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{os|}}}|{{!}}'''Operating Systems'''{{!!}}{{#ifeq:{{#regex:{{{os|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{os|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Games|$1]][[Category:$1 Games]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{engine|}}}|{{!}}'''Engine'''{{!!}}{{#ifeq:{{#regex:{{{engine|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{engine|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Engine|$1]][[Category:$1 Engine]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{arch|}}}|{{!}}'''Architecture'''{{!!}}{{#ifeq:{{#regex:{{{arch|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{arch|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1|$1]][[Category:$1]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{cpufeats|}}}|{{!}}'''CPU Features Used'''{{!!}}{{#ifeq:{{#regex:{{{cpufeats|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{cpufeats|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 CPU Feature|$1]][[Category:$1 CPU Feature]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{compat|}}}|{{!}}'''Compatibility'''{{!!}}{{#ifeq:{{#regex:{{{compat|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{compat|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Compatibility|$1]][[Category:$1 Compatibility]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{apptype|}}}|{{!}}'''Type'''{{!!}}{{#ifeq:{{#regex:{{{apptype|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{apptype|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Type Application|$1]][[Category:$1 Type Application]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{renderapi|}}}|{{!}}'''Render API'''{{!!}}{{#ifeq:{{#regex:{{{renderapi|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{renderapi|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Render API|$1]][[Category:$1 Render API]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{workingthunks|}}}|{{!}}'''Supported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{workingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{workingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Capable|$1]][[Category:$1 Thunk Capable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{nonworkingthunks|}}}|{{!}}'''Unsupported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{nonworkingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{nonworkingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Incapable|$1]][[Category:$1 Thunk Incapable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{drm|}}}|{{!}}'''DRM'''{{!!}}{{#ifeq:{{#regex:{{{drm|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{drm|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 DRM|$1]][[Category:$1 DRM]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{testedos|}}}{{{testedos_warn|}}}{{{testedos_nw|}}}|{{!}}'''Tested OS'''{{!!}}{{#ifeq:{{#regex:{{{testedos|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟩 $1&amp;lt;/br&amp;gt;]]}}&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_warn|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|⚠️ $1&amp;lt;/br&amp;gt;]]}}&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_nw|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟥 $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Enhanced&amp;diff=1561</id>
		<title>Grand Theft Auto V Enhanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Enhanced&amp;diff=1561"/>
		<updated>2026-03-30T22:45:51Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 3240220&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 12&lt;br /&gt;
|testedos_nw     = x86 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-93-gd2794e5|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Crashes before the launcher|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Legacy&amp;diff=1560</id>
		<title>Grand Theft Auto V Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Legacy&amp;diff=1560"/>
		<updated>2026-03-30T02:35:54Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 271590&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11, Direct3D 10&lt;br /&gt;
|workingthunks   = Vulkan&lt;br /&gt;
|testedos        = x86 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-93-gd2794e5|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Works fine in single player at least|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Crysis&amp;diff=1559</id>
		<title>Crysis</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Crysis&amp;diff=1559"/>
		<updated>2026-03-30T02:35:25Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 17300&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = CryEngine 2&lt;br /&gt;
|arch            = x86-32, x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 9, Direct3D 10&lt;br /&gt;
|testedos_warn   = x86 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== If CPUID is AMD then 3DNow! is used unconditionally ===&lt;br /&gt;
The game does a check that if the CPUID reports `AuthenticAMD` then it will use 3DNow! unconditionally rather than checking if it is available.&lt;br /&gt;
This is a bug in the original game and can be patched out of its binaries or ensure CPUID is Intel.&lt;br /&gt;
FEX implements 3DNow! but reciprocals don't match behaviour that some games expect.&lt;br /&gt;
&lt;br /&gt;
On AMD Zen CPU cores, this causes the game to crash immediately as one would expect.&lt;br /&gt;
&lt;br /&gt;
=== Explodes with CPUs that have more than 31-threads ===&lt;br /&gt;
If your system has more that 31 CPU cores/threads then the game will crash early.&lt;br /&gt;
&lt;br /&gt;
Pass '''PROTON_CPU_TOPOLOGY=31''' as an environment variable to get Proton to limit the core count and let the game continue.&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2601-108-gd111518|archtitle=x86-32|SoC=Radxa Orion O6|GPU=Radeon Pro W7500|result=Runs fine|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1558</id>
		<title>Assetto Corsa</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1558"/>
		<updated>2026-03-30T02:35:05Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 244210&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11&lt;br /&gt;
|workingthunks   = Vulkan&lt;br /&gt;
|testedos_warn   = x86 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Doesn't work under Proton by default ===&lt;br /&gt;
The game's launcher by default doesn't work under Proton, even without emulation. Need to overwrite the launcher with the game's binary or install the Content Manager Mod&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-22-ga0cba11|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Runs fine|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1557</id>
		<title>Assetto Corsa</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1557"/>
		<updated>2026-03-30T02:34:33Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 244210&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11&lt;br /&gt;
|workingthunks   = Vulkan&lt;br /&gt;
|testedos        = x86 WINE-Proton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Doesn't work under Proton by default ===&lt;br /&gt;
The game's launcher by default doesn't work under Proton, even without emulation. Need to overwrite the launcher with the game's binary or install the Content Manager Mod&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-22-ga0cba11|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Runs fine|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1556</id>
		<title>Template:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1556"/>
		<updated>2026-03-30T02:33:37Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;infobox-title&amp;quot;&amp;gt;{{{title|{{PAGENAME}}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#if:{{{image|}}}|&amp;lt;div class=&amp;quot;infobox-image&amp;quot;&amp;gt;[[File:{{{image}}}|300px]]&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{{steamheader|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamheader}}}/header.jpg&amp;lt;/div&amp;gt;|{{#if:{{{steamappid|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamappid}}}/library_600x900.jpg&amp;lt;/div&amp;gt;}}|}}&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{steamappid|}}}{{{gogurl|}}}|&lt;br /&gt;
    &amp;lt;!-- First element --&amp;gt;&lt;br /&gt;
    {{!}}'''Storefronts'''&lt;br /&gt;
{{!!}}&lt;br /&gt;
{{#if:{{{steamappid|}}}|&lt;br /&gt;
{{#regex:{{{steamurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Steam_logo.svg|24px|link=https://store.steampowered.com/app/{{{steamappid}}}]]}}[[Category:On Steam]]&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{gogurl|}}}|&lt;br /&gt;
{{#regex:{{{gogurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Gog_logo.svg|24px|link=$1]]}}[[Category:On GOG]]&lt;br /&gt;
}}&lt;br /&gt;
{{!}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{os|}}}|{{!}}'''Operating Systems'''{{!!}}{{#ifeq:{{#regex:{{{os|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{os|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Games|$1]][[Category:$1 Games]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{engine|}}}|{{!}}'''Engine'''{{!!}}{{#ifeq:{{#regex:{{{engine|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{engine|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Engine|$1]][[Category:$1 Engine]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{arch|}}}|{{!}}'''Architecture'''{{!!}}{{#ifeq:{{#regex:{{{arch|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{arch|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1|$1]][[Category:$1]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{cpufeats|}}}|{{!}}'''CPU Features Used'''{{!!}}{{#ifeq:{{#regex:{{{cpufeats|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{cpufeats|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 CPU Feature|$1]][[Category:$1 CPU Feature]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{compat|}}}|{{!}}'''Compatibility'''{{!!}}{{#ifeq:{{#regex:{{{compat|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{compat|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Compatibility|$1]][[Category:$1 Compatibility]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{apptype|}}}|{{!}}'''Type'''{{!!}}{{#ifeq:{{#regex:{{{apptype|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{apptype|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Type Application|$1]][[Category:$1 Type Application]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{renderapi|}}}|{{!}}'''Render API'''{{!!}}{{#ifeq:{{#regex:{{{renderapi|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{renderapi|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Render API|$1]][[Category:$1 Render API]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{workingthunks|}}}|{{!}}'''Supported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{workingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{workingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Capable|$1]][[Category:$1 Thunk Capable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{nonworkingthunks|}}}|{{!}}'''Unsupported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{nonworkingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{nonworkingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Incapable|$1]][[Category:$1 Thunk Incapable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{drm|}}}|{{!}}'''DRM'''{{!!}}{{#ifeq:{{#regex:{{{drm|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{drm|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 DRM|$1]][[Category:$1 DRM]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{testedos|}}}{{{testedos_warn|}}}{{{testedos_nw|}}}|{{!}}'''Tested OS'''{{!!}}{{#ifeq:{{#regex:{{{testedos|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟩 $1&amp;lt;/br&amp;gt;]]}}&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_warn|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|⚠️ $1&amp;lt;/br&amp;gt;]]}}&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_nw|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟥 $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1555</id>
		<title>Template:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1555"/>
		<updated>2026-03-30T02:31:17Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;infobox-title&amp;quot;&amp;gt;{{{title|{{PAGENAME}}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#if:{{{image|}}}|&amp;lt;div class=&amp;quot;infobox-image&amp;quot;&amp;gt;[[File:{{{image}}}|300px]]&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{{steamheader|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamheader}}}/header.jpg&amp;lt;/div&amp;gt;|{{#if:{{{steamappid|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamappid}}}/library_600x900.jpg&amp;lt;/div&amp;gt;}}|}}&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{steamappid|}}}{{{gogurl|}}}|&lt;br /&gt;
    &amp;lt;!-- First element --&amp;gt;&lt;br /&gt;
    {{!}}'''Storefronts'''&lt;br /&gt;
{{!!}}&lt;br /&gt;
{{#if:{{{steamappid|}}}|&lt;br /&gt;
{{#regex:{{{steamurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Steam_logo.svg|24px|link=https://store.steampowered.com/app/{{{steamappid}}}]]}}[[Category:On Steam]]&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{gogurl|}}}|&lt;br /&gt;
{{#regex:{{{gogurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Gog_logo.svg|24px|link=$1]]}}[[Category:On GOG]]&lt;br /&gt;
}}&lt;br /&gt;
{{!}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{os|}}}|{{!}}'''Operating Systems'''{{!!}}{{#ifeq:{{#regex:{{{os|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{os|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Games|$1]][[Category:$1 Games]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{engine|}}}|{{!}}'''Engine'''{{!!}}{{#ifeq:{{#regex:{{{engine|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{engine|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Engine|$1]][[Category:$1 Engine]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{arch|}}}|{{!}}'''Architecture'''{{!!}}{{#ifeq:{{#regex:{{{arch|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{arch|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1|$1]][[Category:$1]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{cpufeats|}}}|{{!}}'''CPU Features Used'''{{!!}}{{#ifeq:{{#regex:{{{cpufeats|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{cpufeats|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 CPU Feature|$1]][[Category:$1 CPU Feature]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{compat|}}}|{{!}}'''Compatibility'''{{!!}}{{#ifeq:{{#regex:{{{compat|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{compat|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Compatibility|$1]][[Category:$1 Compatibility]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{apptype|}}}|{{!}}'''Type'''{{!!}}{{#ifeq:{{#regex:{{{apptype|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{apptype|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Type Application|$1]][[Category:$1 Type Application]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{renderapi|}}}|{{!}}'''Render API'''{{!!}}{{#ifeq:{{#regex:{{{renderapi|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{renderapi|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Render API|$1]][[Category:$1 Render API]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{workingthunks|}}}|{{!}}'''Supported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{workingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{workingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Capable|$1]][[Category:$1 Thunk Capable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{nonworkingthunks|}}}|{{!}}'''Unsupported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{nonworkingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{nonworkingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Incapable|$1]][[Category:$1 Thunk Incapable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{drm|}}}|{{!}}'''DRM'''{{!!}}{{#ifeq:{{#regex:{{{drm|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{drm|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 DRM|$1]][[Category:$1 DRM]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{testedos|}}}{{{testedos_warn|}}}{{{testedos_nw|}}}|{{!}}'''Tested OS'''{{!!}}{{#ifeq:{{#regex:{{{testedos|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟩 $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_warn|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|⚠️ $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_nw|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟥 $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1554</id>
		<title>Template:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Template:Infobox&amp;diff=1554"/>
		<updated>2026-03-30T02:22:46Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;infobox-title&amp;quot;&amp;gt;{{{title|{{PAGENAME}}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#if:{{{image|}}}|&amp;lt;div class=&amp;quot;infobox-image&amp;quot;&amp;gt;[[File:{{{image}}}|300px]]&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{#if:{{{steamheader|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamheader}}}/header.jpg&amp;lt;/div&amp;gt;|{{#if:{{{steamappid|}}}|&amp;lt;div class=&amp;quot;portrait300px&amp;quot;&amp;gt;https://cdn.cloudflare.steamstatic.com/steam/apps/{{{steamappid}}}/library_600x900.jpg&amp;lt;/div&amp;gt;}}|}}&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
{{#if:{{{steamappid|}}}{{{gogurl|}}}|&lt;br /&gt;
    &amp;lt;!-- First element --&amp;gt;&lt;br /&gt;
    {{!}}'''Storefronts'''&lt;br /&gt;
{{!!}}&lt;br /&gt;
{{#if:{{{steamappid|}}}|&lt;br /&gt;
{{#regex:{{{steamurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Steam_logo.svg|24px|link=https://store.steampowered.com/app/{{{steamappid}}}]]}}[[Category:On Steam]]&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{gogurl|}}}|&lt;br /&gt;
{{#regex:{{{gogurl}}}|/([^,]+)(,? ?)/rs|&lt;br /&gt;
[[Image:Gog_logo.svg|24px|link=$1]]}}[[Category:On GOG]]&lt;br /&gt;
}}&lt;br /&gt;
{{!}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}&lt;br /&gt;
{{#if:{{{os|}}}|{{!}}'''Operating Systems'''{{!!}}{{#ifeq:{{#regex:{{{os|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{os|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Games|$1]][[Category:$1 Games]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{engine|}}}|{{!}}'''Engine'''{{!!}}{{#ifeq:{{#regex:{{{engine|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{engine|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Engine|$1]][[Category:$1 Engine]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{arch|}}}|{{!}}'''Architecture'''{{!!}}{{#ifeq:{{#regex:{{{arch|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{arch|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1|$1]][[Category:$1]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{cpufeats|}}}|{{!}}'''CPU Features Used'''{{!!}}{{#ifeq:{{#regex:{{{cpufeats|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{cpufeats|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 CPU Feature|$1]][[Category:$1 CPU Feature]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{compat|}}}|{{!}}'''Compatibility'''{{!!}}{{#ifeq:{{#regex:{{{compat|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{compat|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Compatibility|$1]][[Category:$1 Compatibility]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{apptype|}}}|{{!}}'''Type'''{{!!}}{{#ifeq:{{#regex:{{{apptype|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{apptype|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Type Application|$1]][[Category:$1 Type Application]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{renderapi|}}}|{{!}}'''Render API'''{{!!}}{{#ifeq:{{#regex:{{{renderapi|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{renderapi|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Render API|$1]][[Category:$1 Render API]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{workingthunks|}}}|{{!}}'''Supported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{workingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{workingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Capable|$1]][[Category:$1 Thunk Capable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{nonworkingthunks|}}}|{{!}}'''Unsupported Thunks'''{{!!}}{{#ifeq:{{#regex:{{{nonworkingthunks|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{nonworkingthunks|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Thunk Incapable|$1]][[Category:$1 Thunk Incapable]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{drm|}}}|{{!}}'''DRM'''{{!!}}{{#ifeq:{{#regex:{{{drm|}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{drm|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 DRM|$1]][[Category:$1 DRM]]$2}}&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
{{#if:{{{testedos| testedos_nw| testedos_warn}}}|{{!}}'''Tested OS'''{{!!}}{{#ifeq:{{#regex:{{{testedos| testedos_nw| testedos_warn}}}|/&amp;gt;/rs|}}||&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟩 $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_warn|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|⚠️ $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--List--&amp;gt;{{#regex:{{{testedos_nw|}}}|/([^,]+)(,? ?)/rs|[[:Category:$1 Tested OS|🟥 $1&amp;lt;/br&amp;gt;]]}}&lt;br /&gt;
&amp;lt;/tr&amp;gt;|&lt;br /&gt;
}}}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=World_Of_Warcraft&amp;diff=1553</id>
		<title>World Of Warcraft</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=World_Of_Warcraft&amp;diff=1553"/>
		<updated>2026-03-29T03:41:01Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |os              = Windows |arch            = x86-64, ARM64 |compat          = Unplayable |apptype         = Game |renderapi       = Direct3D 11, Direct3D 12 }}  ==...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64, ARM64&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11, Direct3D 12&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Legacy&amp;diff=1552</id>
		<title>Grand Theft Auto V Legacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Legacy&amp;diff=1552"/>
		<updated>2026-03-21T02:18:50Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 271590 |os              = Windows |arch            = x86-64 |compat          = Playable |apptype         = Game |renderapi       = Direct3D 11, Di...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 271590&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11, Direct3D 10&lt;br /&gt;
|workingthunks   = Vulkan&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-93-gd2794e5|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Works fine in single player at least|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Enhanced&amp;diff=1551</id>
		<title>Grand Theft Auto V Enhanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Enhanced&amp;diff=1551"/>
		<updated>2026-03-21T02:16:48Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 3240220&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 12&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-93-gd2794e5|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Crashes before the launcher|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Enhanced&amp;diff=1550</id>
		<title>Grand Theft Auto V Enhanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Grand_Theft_Auto_V_Enhanced&amp;diff=1550"/>
		<updated>2026-03-21T02:13:49Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 3240220 |os              = Windows |arch            = x86-64 |compat          = Unplayable |apptype         = Game |renderapi       = Direct3D 12...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 3240220&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 12&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-22-ga0cba11|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Crashes before the launcher|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1549</id>
		<title>Interesting ARM64 Platforms</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1549"/>
		<updated>2026-03-17T04:02:27Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: /* AmpereOne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brain dump of &amp;quot;actively&amp;quot; interesting ARM64 platforms, mostly from Sonicadvance1. It's hard to remember which platforms are actively interesting for FEX development and usage. Definitely some bias in here.&lt;br /&gt;
&lt;br /&gt;
== Platforms that can accept a GPU ==&lt;br /&gt;
=== &amp;quot;Consumer&amp;quot; platforms  ===&lt;br /&gt;
==== Radxa Orion O6 - '''Current recommended''' ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 54w on the PCIe bus, but supports ATX PSUs to make things easier.&lt;br /&gt;
* 12 core system - 4xA720+4xA720+4xA520&lt;br /&gt;
* Can be run on upstream kernel with some bugs&lt;br /&gt;
* Price is reasonable&lt;br /&gt;
* Supports SVE2 and a bunch of extensions, unlike Snapdragon platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* CPU Clock speeds aren't quite what are advertised&lt;br /&gt;
** Seems to be a firmware bug, might get fixed.&lt;br /&gt;
* Performance isn't as good as newest devices, but significantly better than Jetson Orin&lt;br /&gt;
* 5gbit ethernet seems to saturate at 2gbit due to soft-irq overhead. Better than 1gbit at least.&lt;br /&gt;
* USB connections over a USB 3 hub sometimes can't allocate resources?&lt;br /&gt;
** No idea what this error is about.&lt;br /&gt;
* Memory bandwidth is significantly lower than the 128-bit bus implies.&lt;br /&gt;
** Advertised &amp;gt;100GB/s, can barely crack 40GB/s in a multithreaded CPU microbench, single threaded is worse at ~16GB/s.&lt;br /&gt;
* Still the recommended platform for developing because the pros outweigh the cons&lt;br /&gt;
&lt;br /&gt;
===== GPUs tested =====&lt;br /&gt;
* Tested under ACPI configuration with upstream kernels&lt;br /&gt;
* Tested with BIOS 0.2.2-1, 9.0 just caused a hang early in kernel boot.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Radeon GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA1) Radeon RX 5700 || ✅ Works || ✅ Works&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA2) Radeon Pro W6400 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA3) Radeon Pro W7500 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA4) Radeon RX 9070 || ❌ Minimum Kernel is v6.13 || ❌ Doesn't work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Intel GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Xe2) Arc B580 || ❌ Needs newer kernel || ❌ Hangs when GPU tries coming online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ NVIDIA GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Ada) RTX 4000 SFF || ❌ Doesn't show up on bus || ❌ Doesn't show up on bus&lt;br /&gt;
|}&lt;br /&gt;
==== Snapdragon X2 Elite - '''Upcoming''' ====&lt;br /&gt;
* Not yet shipping&lt;br /&gt;
* CPU performance looks pretty interesting&lt;br /&gt;
* has 16 PCIe lanes&lt;br /&gt;
** 12 lanes of PCIe 5.0&lt;br /&gt;
** 4 lanes of PCIe 4.0&lt;br /&gt;
* Supports SVE2 and SME(2?)&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Unknown if we're getting a platform with a PCIe slot&lt;br /&gt;
** Additionally unknown if PCIe slots can take a GPU&lt;br /&gt;
* No platforms announced currently&lt;br /&gt;
* RNG extension might still be broken&lt;br /&gt;
* iGPU wired up in Turnip/Freedreno for some amount of support in Mesa 26.0&lt;br /&gt;
** Not yet performance complete&lt;br /&gt;
&lt;br /&gt;
==== Jetson Orin ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 55W on the PCIe bus, so a bit underpowered.&lt;br /&gt;
** Needs external power for larger GPUs&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged atomics on its Cortex-A78AE cores, so performance isn't good&lt;br /&gt;
** Errata 1951502&lt;br /&gt;
* Needs a kernel recompile on upstream Linux to enable the amdgpu kernel module&lt;br /&gt;
* Setting up can be a bit of a pain, but boots upstream kernel&lt;br /&gt;
&lt;br /&gt;
==== [https://www.nvidia.com/en-us/products/workstations/dgx-spark/ NVIDIA DGX Spark] ====&lt;br /&gt;
===== Features =====&lt;br /&gt;
* 20 core CPU. 10 Cortex-X925 cores and 10 Cortex-A725&lt;br /&gt;
* Four USB-C 4 40gbit ports.&lt;br /&gt;
* $3000 beginning price&lt;br /&gt;
* $4000 for the fancy NVIDIA DGX case.&lt;br /&gt;
&lt;br /&gt;
===== Unknowns =====&lt;br /&gt;
* USB-C 40gbit ports aren't wired up to enable Thunderbolt in Linux&lt;br /&gt;
** At least the DGX Spark seems to have the redrivers and everything for TB, just not enabled.&lt;br /&gt;
** The curse of Thunderbolt not working on ARM platforms continues.&lt;br /&gt;
&lt;br /&gt;
==== Snapdragon X Elite ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Can have three Thunderbolt ports&lt;br /&gt;
* SoC also has 8x PCIe lane PHY&lt;br /&gt;
** Theoretically can accept GPU on at least the 8x PCIe PHY&lt;br /&gt;
* Reasonable CPU performance, if a little underwhelming&lt;br /&gt;
* Lots of laptop devices to choose from&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Linux doesn't yet support Thunderbolt on this platform&lt;br /&gt;
** GPU on Thunderbolt might not work&lt;br /&gt;
* No platform with 8x PCIe lanes exposed&lt;br /&gt;
** Snapdragon dev kit has a PCIe slot inside of it that isn't wired up&lt;br /&gt;
** Wouldn't work without device tree changes anyway&lt;br /&gt;
** Maybe someone will eventually ship hardware with these PCIe lanes exposed&lt;br /&gt;
* '''Snapdragon Dev kit was cancelled'''&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
All of these are very expensive and not really worth buying as a consumer&lt;br /&gt;
==== NVIDIA Grace ====&lt;br /&gt;
Grace-Hopper and Grace-Grace platform has a large number of Neoverse-V2 cores. Very expensive platform, and Grace-Grace not actually available.&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Really expensive. $40k to $100k+&lt;br /&gt;
* Grace-Grace 144 core not really available&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Vera ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Semi-custom 88-core based on Neoverse-V3&lt;br /&gt;
** Has SMT with &amp;quot;full throughput&amp;quot; hardware threads?&lt;br /&gt;
** Probably statically partitioned pipelines and some more frontend decoder components duplicated than traditional x86 designs.&lt;br /&gt;
* Potentially be in a next-generation DGX Station&lt;br /&gt;
* Don't expect workstation class prices. Hope for $100k and be surprised if it is less.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* [https://github.com/NVIDIA/NV-Kernels/commit/688e754768522e3d6993a18b20a810769bdf642a Has] bugged PCIe which forces remapping of NC PCIe memory to Device-nGnRE&lt;br /&gt;
** Significant performance issues are expected&lt;br /&gt;
&lt;br /&gt;
==== AmpereOne ====&lt;br /&gt;
Only just now becoming available in October 2024.&lt;br /&gt;
* [https://www.newegg.com/p/N82E16813140167 Newegg] sells an Asrock Rack + A192-32X bundle for $4800&lt;br /&gt;
** No A96-36X version available. &lt;br /&gt;
** Coolers are a bit hard to find, some available on Ebay for whatever reason&lt;br /&gt;
** No waterblocks?&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* A96-36X SKU would likely be great in a desktop platform, but not available&lt;br /&gt;
* Custom CPU cores, not as high performance as Grace or very latest consumer platforms&lt;br /&gt;
* PCIe works fine. As far as anyone has tested, no known issues&lt;br /&gt;
&lt;br /&gt;
== Platforms that can '''not''' accept a GPU ==&lt;br /&gt;
=== Consumer platforms ===&lt;br /&gt;
==== All Apple Silicon devices ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Highest performing ARMv8/ARMv9 CPUs today&lt;br /&gt;
* Parallels/UTM VM available in MacOS for all devices&lt;br /&gt;
* Asahi Linux supported for M1/M2 Pro/Max/Ultra for native Linux&lt;br /&gt;
** But breaks FEX because of 16KB pages&lt;br /&gt;
** Big work in progress to get a VM running FEX with 4k pages and virtio-gpu&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Thunderbolt can't accept GPUs&lt;br /&gt;
** This is due to Dart/IOMMU problems and memory mapping problems.&lt;br /&gt;
** Asahi linux has some documentation on this failure&lt;br /&gt;
* Mac Pro PCIe slots have the same issue, so nothing solved on that platform&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
==== Ampere Altra ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Has some desktop-like systems created by System76 and Avantek.&lt;br /&gt;
** Fairly pricey compared to the smaller platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged PCIe fabric that requires kernel workarounds to get GPUs working on it&lt;br /&gt;
** Doesn't fully solve the problem, latest Radeons still don't work&lt;br /&gt;
* Old CPU cores based on Neoverse-N1&lt;br /&gt;
* Not recommended unless you need a lot of cores&lt;br /&gt;
&lt;br /&gt;
==== Jetson Thor ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* 14x Neoverse-V3AE cores&lt;br /&gt;
** 2.6Ghz&lt;br /&gt;
* 128GB LPDDR5X, 273GB/s&lt;br /&gt;
* 8TFLOP Blackwell iGPU&lt;br /&gt;
* 130w TDP&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* They removed the PCIe slot this generation!&lt;br /&gt;
** Only supports PCIe arrangements of 1x + 1x + 2x + 8x (or 4x) off the module board.&lt;br /&gt;
* Unknown if the M.2 slot used for NVMe/booting can be used with a PCIe riser and dGPU.&lt;br /&gt;
** [https://forums.developer.nvidia.com/t/jetson-agx-thor-developer-kit-removed-the-pcie-slot/338524/2 Claims to not support a dGPU on the M.2 slot.]&lt;br /&gt;
** Quote from kayccc: '''For dGPU attached is not supported, and suggest to use IGX, see IGX | Industrial-Grade Edge AI platform | NVIDIA'''&lt;br /&gt;
* No IGX/Clara platform announced with PCIe switch off 8x root node.&lt;br /&gt;
* CPU performance isn't as high as Neoverse-V3AE should be.&lt;br /&gt;
** Memory bus problems or something?&lt;br /&gt;
&lt;br /&gt;
== Misc Platforms ==&lt;br /&gt;
=== Raspberry Pi 4/5 ===&lt;br /&gt;
* Low-cost&lt;br /&gt;
* Low-performance&lt;br /&gt;
* Not really worth using&lt;br /&gt;
* GPU doesn't have enough features for DXVK/VKD3D&lt;br /&gt;
** Limited performance means that even when games run, likely limited to very low-end indie devices.&lt;br /&gt;
* PCIe is bugged and requires nasty kernel work arounds to have a GPU plugged in&lt;br /&gt;
** Not recommended&lt;br /&gt;
&lt;br /&gt;
=== RK3588 boards ===&lt;br /&gt;
* Old CPU cores, Cortex-A76&lt;br /&gt;
* Mali GPU which doesn't support enough features for DXVK/VKD3D&lt;br /&gt;
** Mesa drivers don't have enough features.&lt;br /&gt;
&lt;br /&gt;
=== [https://store.steampowered.com/sale/steamframe Steam Frame] - '''Upcoming''' ===&lt;br /&gt;
==== Behaviour ====&lt;br /&gt;
* Snapdragon 8 Gen 3 based platform&lt;br /&gt;
* 16GB of RAM&lt;br /&gt;
* SteamOS, Arch based Linux&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* No dGPU support&lt;br /&gt;
** Has a PCIe 4.0 1x lane, maybe someone can glue a GPU on to it?&lt;br /&gt;
* Not a traditional form factor&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1548</id>
		<title>Assetto Corsa</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1548"/>
		<updated>2026-03-16T01:17:27Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 244210&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11&lt;br /&gt;
|workingthunks   = Vulkan&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Doesn't work under Proton by default ===&lt;br /&gt;
The game's launcher by default doesn't work under Proton, even without emulation. Need to overwrite the launcher with the game's binary or install the Content Manager Mod&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-22-ga0cba11|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Runs fine|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1547</id>
		<title>Assetto Corsa</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Assetto_Corsa&amp;diff=1547"/>
		<updated>2026-03-16T01:15:02Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 244210 |os              = Windows |arch            = x86-64 |compat          = Playable |apptype         = Game |renderapi       = Direct3D 11 }}...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 244210&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Doesn't work under Proton by default ===&lt;br /&gt;
The game's launcher by default doesn't work under Proton, even without emulation. Need to overwrite the launcher with the game's binary or install the Content Manager Mod&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2603-22-ga0cba11|archtitle=x86-64|SoC=AmpereOne-A192-32x|GPU=Radeon RX 9070|result=Runs fine|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Crysis&amp;diff=1546</id>
		<title>Crysis</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Crysis&amp;diff=1546"/>
		<updated>2026-03-07T02:59:54Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 17300&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = CryEngine 2&lt;br /&gt;
|arch            = x86-32, x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 9, Direct3D 10&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== If CPUID is AMD then 3DNow! is used unconditionally ===&lt;br /&gt;
The game does a check that if the CPUID reports `AuthenticAMD` then it will use 3DNow! unconditionally rather than checking if it is available.&lt;br /&gt;
This is a bug in the original game and can be patched out of its binaries or ensure CPUID is Intel.&lt;br /&gt;
FEX implements 3DNow! but reciprocals don't match behaviour that some games expect.&lt;br /&gt;
&lt;br /&gt;
On AMD Zen CPU cores, this causes the game to crash immediately as one would expect.&lt;br /&gt;
&lt;br /&gt;
=== Explodes with CPUs that have more than 31-threads ===&lt;br /&gt;
If your system has more that 31 CPU cores/threads then the game will crash early.&lt;br /&gt;
&lt;br /&gt;
Pass '''PROTON_CPU_TOPOLOGY=31''' as an environment variable to get Proton to limit the core count and let the game continue.&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2601-108-gd111518|archtitle=x86-32|SoC=Radxa Orion O6|GPU=Radeon Pro W7500|result=Runs fine|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Slay_the_Spire_2&amp;diff=1545</id>
		<title>Slay the Spire 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Slay_the_Spire_2&amp;diff=1545"/>
		<updated>2026-03-07T02:17:47Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 2868840 |os              = Windows, Linux |engine          = Godot |arch            = x86-64 |cpufeats        = Unknown |compat          = Unplaya...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 2868840&lt;br /&gt;
|os              = Windows, Linux&lt;br /&gt;
|engine          = Godot&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Unplayable due to dotNET CoreCLR ===&lt;br /&gt;
Because this game embeds CoreCLR in to its engine, it can not currently run under FEX. Crashes early at startup.&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=S%26box&amp;diff=1544</id>
		<title>S&amp;box</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=S%26box&amp;diff=1544"/>
		<updated>2026-03-07T02:15:17Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 590830 |os              = Windows |engine          = Source 2 |arch            = x86-64 |cpufeats        = Unknown |compat          = Unplayable |...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 590830&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = Source 2&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11, Vulkan&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Unplayable due to dotNET CoreCLR ===&lt;br /&gt;
Because this game embeds CoreCLR in to its engine, it can not currently run under FEX. Crashes early at startup.&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Stray&amp;diff=1536</id>
		<title>Stray</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Stray&amp;diff=1536"/>
		<updated>2026-02-09T02:09:35Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 1332010&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = Unreal Engine 4&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11&lt;br /&gt;
|workingthunks   = Vulkan&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2211|archtitle=x86-64|SoC=Snapdragon 888|GPU=Adreno 660|result=Works with thunks|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Sonic_Rumble&amp;diff=1535</id>
		<title>Sonic Rumble</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Sonic_Rumble&amp;diff=1535"/>
		<updated>2026-02-03T04:00:09Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 2951690 |os              = Windows |engine          = Unity |arch            = x86-64 |cpufeats        = Unknown |compat          = Unplayable |ap...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 2951690&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = Unity&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11&lt;br /&gt;
|drm             = XIGNCODE3 AntiCheat&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
'''XIGNCODE3 AntiCheat'''&lt;br /&gt;
* FEX can't run due to XIGNCODE3 AntiCheat&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Tales_of_Berseria&amp;diff=1534</id>
		<title>Tales of Berseria</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Tales_of_Berseria&amp;diff=1534"/>
		<updated>2026-02-03T00:48:43Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 429660 |os              = Linux |arch            = x86-64 |cpufeats        = Unknown |compat          = Unplayable |apptype         = Game |render...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 429660&lt;br /&gt;
|os              = Linux&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 9&lt;br /&gt;
|drm             = Denuvo Anti-Tamper&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
'''Denuvo Anti-Tamper'''&lt;br /&gt;
* FEX can't run due to Denuvo Anti-Tamper&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2601-118-gcdd8322|archtitle=x86-64|SoC=Radxa Orion O6|GPU=Radeon Pro W6400|result=Crashes early in boot|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Geometry_Dash&amp;diff=1533</id>
		<title>Geometry Dash</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Geometry_Dash&amp;diff=1533"/>
		<updated>2026-02-02T23:39:26Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 322170&lt;br /&gt;
|os              = Windows, MacOS&lt;br /&gt;
|engine          = Cocos Engine&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = OpenGL&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
This title has been tested on the environments listed below:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Test Entries&lt;br /&gt;
!Revision&lt;br /&gt;
!Arch of Title&lt;br /&gt;
!SoC&lt;br /&gt;
!GPU&lt;br /&gt;
!Result&lt;br /&gt;
!Tester&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/FEX-Emu/FEX/commit/FEX-2601 FEX-2601]&lt;br /&gt;
|x86_64&lt;br /&gt;
|Broadcom BCM2712&lt;br /&gt;
|Broadcom VideoCore VII&lt;br /&gt;
|Runs good, a little bit of lag when levels with high object count though.&lt;br /&gt;
|[[Special:Contributions/lxpanel|Lxpanel]]&lt;br /&gt;
|}&lt;br /&gt;
[[Category:On Steam]]&lt;br /&gt;
[[Category:Windows Games]]&lt;br /&gt;
[[Category:X86-64]]&lt;br /&gt;
[[Category:Playable Compatibility]]&lt;br /&gt;
[[Category:Game Type Application]]&lt;br /&gt;
[[Category:OpenGL Render API]]&lt;br /&gt;
[[Category:Tested]]&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Factorio&amp;diff=1532</id>
		<title>Factorio</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Factorio&amp;diff=1532"/>
		<updated>2026-02-02T23:39:00Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 427520&lt;br /&gt;
|os              = Linux, Windows&lt;br /&gt;
|engine          = Custom&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = OpenGL&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
This title has been tested on the environments listed below:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Test Entries&lt;br /&gt;
!Revision&lt;br /&gt;
!Arch of Title&lt;br /&gt;
!SoC&lt;br /&gt;
!GPU&lt;br /&gt;
!Result&lt;br /&gt;
!Tester&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/FEX-Emu/FEX/commit/FEX-2601 FEX-2601]&lt;br /&gt;
|x86_64&lt;br /&gt;
|Broadcom BCM2712&lt;br /&gt;
|Broadcom VideoCore VII&lt;br /&gt;
|Would probably run better on a different GPU&lt;br /&gt;
|[[Special:Contributions/lxpanel|Lxpanel]]&lt;br /&gt;
|}&lt;br /&gt;
[[Category:On Steam]]&lt;br /&gt;
[[Category:Linux Games]]&lt;br /&gt;
[[Category:X86-64]]&lt;br /&gt;
[[Category:Playable Compatibility]]&lt;br /&gt;
[[Category:Game Type Application]]&lt;br /&gt;
[[Category:Tested]]&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Yume_Nikki&amp;diff=1531</id>
		<title>Yume Nikki</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Yume_Nikki&amp;diff=1531"/>
		<updated>2026-02-02T23:38:50Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 650700&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = RPGMaker&lt;br /&gt;
|arch            = x86-32&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = DirectX, Software&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
This title has been tested on the environments listed below:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Test Entries&lt;br /&gt;
!Revision&lt;br /&gt;
!Arch of Title&lt;br /&gt;
!SoC&lt;br /&gt;
!GPU&lt;br /&gt;
!Result&lt;br /&gt;
!Tester&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/FEX-Emu/FEX/commit/FEX-2601 FEX-2601]&lt;br /&gt;
|x86_32&lt;br /&gt;
|Broadcom BCM2712&lt;br /&gt;
|Broadcom VideoCore VII&lt;br /&gt;
|Runs Good&lt;br /&gt;
|[[Special:Contributions/lxpanel|Lxpanel]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Blockland&amp;diff=1530</id>
		<title>Blockland</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Blockland&amp;diff=1530"/>
		<updated>2026-02-02T23:38:35Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox&lt;br /&gt;
|steamappid      = 250340&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = Torque Engine&lt;br /&gt;
|arch            = x86-32&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = DirectX&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Testing Results==&lt;br /&gt;
This title has been tested on the environments listed below:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Test Entries&lt;br /&gt;
!Revision&lt;br /&gt;
!Arch of Title&lt;br /&gt;
!SoC&lt;br /&gt;
!GPU&lt;br /&gt;
!Result&lt;br /&gt;
!Tester&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/FEX-Emu/FEX/commit/FEX-2601 FEX-2601]&lt;br /&gt;
|x86_32&lt;br /&gt;
|Broadcom BCM2712&lt;br /&gt;
|Broadcom VideoCore VII&lt;br /&gt;
|30 FPS&lt;br /&gt;
|[[Special:Contributions/lxpanel|Lxpanel]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Monument_Valley&amp;diff=1529</id>
		<title>Monument Valley</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Monument_Valley&amp;diff=1529"/>
		<updated>2026-02-02T23:38:17Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Weird formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 1927720&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = Unity&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Vulkan&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Testing Results==&lt;br /&gt;
This title has been tested on the environments listed below:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Test Entries&lt;br /&gt;
!Revision&lt;br /&gt;
!Arch of Title&lt;br /&gt;
!SoC&lt;br /&gt;
!GPU&lt;br /&gt;
!Result&lt;br /&gt;
!Tester&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/FEX-Emu/FEX/commit/FEX-2601 FEX-2601]&lt;br /&gt;
|x86_64&lt;br /&gt;
|Broadcom BCM2712&lt;br /&gt;
|Broadcom VideoCore VII&lt;br /&gt;
|Runs good&lt;br /&gt;
|[[Special:Contributions/lxpanel|Lxpanel]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Talk:Half-Life_2&amp;diff=1528</id>
		<title>Talk:Half-Life 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Talk:Half-Life_2&amp;diff=1528"/>
		<updated>2026-02-02T23:36:39Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Half-Life 2 is not a 64-bit game ==&lt;br /&gt;
  ryanh@ryanh-TR7000:~/.steam/steam/steamapps/common/Half-Life 2$ file hl2_linux&lt;br /&gt;
  hl2_linux: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=2fa62b62d2ac135694e952558e295292673e75c2, not stripped&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Talk:Half-Life_2&amp;diff=1527</id>
		<title>Talk:Half-Life 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Talk:Half-Life_2&amp;diff=1527"/>
		<updated>2026-02-02T23:36:34Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;== Half-Life 2 is not a 64-bit game   ryanh@ryanh-TR7000:~/.steam/steam/steamapps/common/Half-Life 2$ file hl2_linux   hl2_linux: ELF 32-bit LSB pie executable, Intel 80386, v...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Half-Life 2 is not a 64-bit game&lt;br /&gt;
  ryanh@ryanh-TR7000:~/.steam/steam/steamapps/common/Half-Life 2$ file hl2_linux&lt;br /&gt;
  hl2_linux: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=2fa62b62d2ac135694e952558e295292673e75c2, not stripped&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Half-Life_2&amp;diff=1526</id>
		<title>Half-Life 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Half-Life_2&amp;diff=1526"/>
		<updated>2026-02-02T23:35:31Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Reverted edits by Lxpanel (talk) to last revision by Sonicadvance1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 220&lt;br /&gt;
|os              = Linux&lt;br /&gt;
|engine          = Source&lt;br /&gt;
|arch            = x86-32&lt;br /&gt;
|cpufeats        = Unknown&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = OpenGL&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2207|archtitle=x86-32|SoC=Snapdragon 888|GPU=Adreno 660|result=Runs, heavily CPU bottlenecked.|tester=Sonicadvance1}}{{testing/entry|revision=FEX-2409|archtitle=x86-32|SoC=Apple M2 Pro|GPU=Apple M2 Pro|result=Runs perfect|tester=MochaMarten}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Crysis&amp;diff=1508</id>
		<title>Crysis</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Crysis&amp;diff=1508"/>
		<updated>2026-01-29T03:05:36Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 17300 |os              = Windows |engine          = CryEngine 2 |arch            = x86-32, x86-64 |compat          = Playable |apptype         = G...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 17300&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = CryEngine 2&lt;br /&gt;
|arch            = x86-32, x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 9, Direct3D 10&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== If CPUID is AMD then 3DNow! is used unconditionally ===&lt;br /&gt;
The game does a check that if the CPUID reports `AuthenticAMD` then it will use 3DNow! unconditionally rather than checking if it is available.&lt;br /&gt;
This is a bug in the original game and can be patched out of its binaries or ensure CPUID is Intel.&lt;br /&gt;
FEX implements 3DNow! but reciprocals don't match behaviour that some games expect.&lt;br /&gt;
&lt;br /&gt;
On AMD Zen CPU cores, this causes the game to crash immediately as one would expect.&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2601-108-gd111518|archtitle=x86-32|SoC=Radxa Orion O6|GPU=Radeon Pro W7500|result=Runs fine|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1507</id>
		<title>Interesting ARM64 Platforms</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1507"/>
		<updated>2026-01-26T00:42:41Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: /* Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brain dump of &amp;quot;actively&amp;quot; interesting ARM64 platforms, mostly from Sonicadvance1. It's hard to remember which platforms are actively interesting for FEX development and usage. Definitely some bias in here.&lt;br /&gt;
&lt;br /&gt;
== Platforms that can accept a GPU ==&lt;br /&gt;
=== &amp;quot;Consumer&amp;quot; platforms  ===&lt;br /&gt;
==== Radxa Orion O6 - '''Current recommended''' ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 54w on the PCIe bus, but supports ATX PSUs to make things easier.&lt;br /&gt;
* 12 core system - 4xA720+4xA720+4xA520&lt;br /&gt;
* Can be run on upstream kernel with some bugs&lt;br /&gt;
* Price is reasonable&lt;br /&gt;
* Supports SVE2 and a bunch of extensions, unlike Snapdragon platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* CPU Clock speeds aren't quite what are advertised&lt;br /&gt;
** Seems to be a firmware bug, might get fixed.&lt;br /&gt;
* Performance isn't as good as newest devices, but significantly better than Jetson Orin&lt;br /&gt;
* 5gbit ethernet seems to saturate at 2gbit due to soft-irq overhead. Better than 1gbit at least.&lt;br /&gt;
* USB connections over a USB 3 hub sometimes can't allocate resources?&lt;br /&gt;
** No idea what this error is about.&lt;br /&gt;
* Memory bandwidth is significantly lower than the 128-bit bus implies.&lt;br /&gt;
** Advertised &amp;gt;100GB/s, can barely crack 40GB/s in a multithreaded CPU microbench, single threaded is worse at ~16GB/s.&lt;br /&gt;
* Still the recommended platform for developing because the pros outweigh the cons&lt;br /&gt;
&lt;br /&gt;
===== GPUs tested =====&lt;br /&gt;
* Tested under ACPI configuration with upstream kernels&lt;br /&gt;
* Tested with BIOS 0.2.2-1, 9.0 just caused a hang early in kernel boot.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Radeon GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA1) Radeon RX 5700 || ✅ Works || ✅ Works&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA2) Radeon Pro W6400 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA3) Radeon Pro W7500 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA4) Radeon RX 9070 || ❌ Minimum Kernel is v6.13 || ❌ Doesn't work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Intel GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Xe2) Arc B580 || ❌ Needs newer kernel || ❌ Hangs when GPU tries coming online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ NVIDIA GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Ada) RTX 4000 SFF || ❌ Doesn't show up on bus || ❌ Doesn't show up on bus&lt;br /&gt;
|}&lt;br /&gt;
==== Snapdragon X2 Elite - '''Upcoming''' ====&lt;br /&gt;
* Not yet shipping&lt;br /&gt;
* CPU performance looks pretty interesting&lt;br /&gt;
* has 16 PCIe lanes&lt;br /&gt;
** 12 lanes of PCIe 5.0&lt;br /&gt;
** 4 lanes of PCIe 4.0&lt;br /&gt;
* Supports SVE2 and SME(2?)&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Unknown if we're getting a platform with a PCIe slot&lt;br /&gt;
** Additionally unknown if PCIe slots can take a GPU&lt;br /&gt;
* No platforms announced currently&lt;br /&gt;
* RNG extension might still be broken&lt;br /&gt;
* iGPU wired up in Turnip/Freedreno for some amount of support in Mesa 26.0&lt;br /&gt;
** Not yet performance complete&lt;br /&gt;
&lt;br /&gt;
==== Jetson Orin ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 55W on the PCIe bus, so a bit underpowered.&lt;br /&gt;
** Needs external power for larger GPUs&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged atomics on its Cortex-A78AE cores, so performance isn't good&lt;br /&gt;
** Errata 1951502&lt;br /&gt;
* Needs a kernel recompile on upstream Linux to enable the amdgpu kernel module&lt;br /&gt;
* Setting up can be a bit of a pain, but boots upstream kernel&lt;br /&gt;
&lt;br /&gt;
==== [https://www.nvidia.com/en-us/products/workstations/dgx-spark/ NVIDIA DGX Spark] ====&lt;br /&gt;
===== Features =====&lt;br /&gt;
* 20 core CPU. 10 Cortex-X925 cores and 10 Cortex-A725&lt;br /&gt;
* Four USB-C 4 40gbit ports.&lt;br /&gt;
* $3000 beginning price&lt;br /&gt;
* $4000 for the fancy NVIDIA DGX case.&lt;br /&gt;
&lt;br /&gt;
===== Unknowns =====&lt;br /&gt;
* USB-C 40gbit ports aren't wired up to enable Thunderbolt in Linux&lt;br /&gt;
** At least the DGX Spark seems to have the redrivers and everything for TB, just not enabled.&lt;br /&gt;
** The curse of Thunderbolt not working on ARM platforms continues.&lt;br /&gt;
&lt;br /&gt;
==== Snapdragon X Elite ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Can have three Thunderbolt ports&lt;br /&gt;
* SoC also has 8x PCIe lane PHY&lt;br /&gt;
** Theoretically can accept GPU on at least the 8x PCIe PHY&lt;br /&gt;
* Reasonable CPU performance, if a little underwhelming&lt;br /&gt;
* Lots of laptop devices to choose from&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Linux doesn't yet support Thunderbolt on this platform&lt;br /&gt;
** GPU on Thunderbolt might not work&lt;br /&gt;
* No platform with 8x PCIe lanes exposed&lt;br /&gt;
** Snapdragon dev kit has a PCIe slot inside of it that isn't wired up&lt;br /&gt;
** Wouldn't work without device tree changes anyway&lt;br /&gt;
** Maybe someone will eventually ship hardware with these PCIe lanes exposed&lt;br /&gt;
* '''Snapdragon Dev kit was cancelled'''&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
All of these are very expensive and not really worth buying as a consumer&lt;br /&gt;
==== NVIDIA Grace ====&lt;br /&gt;
Grace-Hopper and Grace-Grace platform has a large number of Neoverse-V2 cores. Very expensive platform, and Grace-Grace not actually available.&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Really expensive. $40k to $100k+&lt;br /&gt;
* Grace-Grace 144 core not really available&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Vera ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Semi-custom 88-core based on Neoverse-V3&lt;br /&gt;
** Has SMT with &amp;quot;full throughput&amp;quot; hardware threads?&lt;br /&gt;
** Probably statically partitioned pipelines and some more frontend decoder components duplicated than traditional x86 designs.&lt;br /&gt;
* Potentially be in a next-generation DGX Station&lt;br /&gt;
* Don't expect workstation class prices. Hope for $100k and be surprised if it is less.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* [https://github.com/NVIDIA/NV-Kernels/commit/688e754768522e3d6993a18b20a810769bdf642a Has] bugged PCIe which forces remapping of NC PCIe memory to Device-nGnRE&lt;br /&gt;
** Significant performance issues are expected&lt;br /&gt;
&lt;br /&gt;
==== AmpereOne ====&lt;br /&gt;
Only just now becoming available in October 2024.&lt;br /&gt;
No workstation platform available yet. AMPONED8-2T motherboard isn't publicly available yet.&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* A96-37X SKU would likely be great in a desktop platform, but not available&lt;br /&gt;
* Custom CPU cores, not as high performance as Grace or very latest consumer platforms&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Untested but PCIe should be fixed&lt;br /&gt;
&lt;br /&gt;
== Platforms that can '''not''' accept a GPU ==&lt;br /&gt;
=== Consumer platforms ===&lt;br /&gt;
==== All Apple Silicon devices ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Highest performing ARMv8/ARMv9 CPUs today&lt;br /&gt;
* Parallels/UTM VM available in MacOS for all devices&lt;br /&gt;
* Asahi Linux supported for M1/M2 Pro/Max/Ultra for native Linux&lt;br /&gt;
** But breaks FEX because of 16KB pages&lt;br /&gt;
** Big work in progress to get a VM running FEX with 4k pages and virtio-gpu&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Thunderbolt can't accept GPUs&lt;br /&gt;
** This is due to Dart/IOMMU problems and memory mapping problems.&lt;br /&gt;
** Asahi linux has some documentation on this failure&lt;br /&gt;
* Mac Pro PCIe slots have the same issue, so nothing solved on that platform&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
==== Ampere Altra ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Has some desktop-like systems created by System76 and Avantek.&lt;br /&gt;
** Fairly pricey compared to the smaller platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged PCIe fabric that requires kernel workarounds to get GPUs working on it&lt;br /&gt;
** Doesn't fully solve the problem, latest Radeons still don't work&lt;br /&gt;
* Old CPU cores based on Neoverse-N1&lt;br /&gt;
* Not recommended unless you need a lot of cores&lt;br /&gt;
&lt;br /&gt;
==== Jetson Thor ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* 14x Neoverse-V3AE cores&lt;br /&gt;
** 2.6Ghz&lt;br /&gt;
* 128GB LPDDR5X, 273GB/s&lt;br /&gt;
* 8TFLOP Blackwell iGPU&lt;br /&gt;
* 130w TDP&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* They removed the PCIe slot this generation!&lt;br /&gt;
** Only supports PCIe arrangements of 1x + 1x + 2x + 8x (or 4x) off the module board.&lt;br /&gt;
* Unknown if the M.2 slot used for NVMe/booting can be used with a PCIe riser and dGPU.&lt;br /&gt;
** [https://forums.developer.nvidia.com/t/jetson-agx-thor-developer-kit-removed-the-pcie-slot/338524/2 Claims to not support a dGPU on the M.2 slot.]&lt;br /&gt;
** Quote from kayccc: '''For dGPU attached is not supported, and suggest to use IGX, see IGX | Industrial-Grade Edge AI platform | NVIDIA'''&lt;br /&gt;
* No IGX/Clara platform announced with PCIe switch off 8x root node.&lt;br /&gt;
* CPU performance isn't as high as Neoverse-V3AE should be.&lt;br /&gt;
** Memory bus problems or something?&lt;br /&gt;
&lt;br /&gt;
== Misc Platforms ==&lt;br /&gt;
=== Raspberry Pi 4/5 ===&lt;br /&gt;
* Low-cost&lt;br /&gt;
* Low-performance&lt;br /&gt;
* Not really worth using&lt;br /&gt;
* GPU doesn't have enough features for DXVK/VKD3D&lt;br /&gt;
** Limited performance means that even when games run, likely limited to very low-end indie devices.&lt;br /&gt;
* PCIe is bugged and requires nasty kernel work arounds to have a GPU plugged in&lt;br /&gt;
** Not recommended&lt;br /&gt;
&lt;br /&gt;
=== RK3588 boards ===&lt;br /&gt;
* Old CPU cores, Cortex-A76&lt;br /&gt;
* Mali GPU which doesn't support enough features for DXVK/VKD3D&lt;br /&gt;
** Mesa drivers don't have enough features.&lt;br /&gt;
&lt;br /&gt;
=== [https://store.steampowered.com/sale/steamframe Steam Frame] - '''Upcoming''' ===&lt;br /&gt;
==== Behaviour ====&lt;br /&gt;
* Snapdragon 8 Gen 3 based platform&lt;br /&gt;
* 16GB of RAM&lt;br /&gt;
* SteamOS, Arch based Linux&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* No dGPU support&lt;br /&gt;
** Has a PCIe 4.0 1x lane, maybe someone can glue a GPU on to it?&lt;br /&gt;
* Not a traditional form factor&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1506</id>
		<title>Interesting ARM64 Platforms</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1506"/>
		<updated>2026-01-26T00:41:36Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: /* Unknowns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brain dump of &amp;quot;actively&amp;quot; interesting ARM64 platforms, mostly from Sonicadvance1. It's hard to remember which platforms are actively interesting for FEX development and usage. Definitely some bias in here.&lt;br /&gt;
&lt;br /&gt;
== Platforms that can accept a GPU ==&lt;br /&gt;
=== &amp;quot;Consumer&amp;quot; platforms  ===&lt;br /&gt;
==== Radxa Orion O6 - '''Current recommended''' ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 54w on the PCIe bus, but supports ATX PSUs to make things easier.&lt;br /&gt;
* 12 core system - 4xA720+4xA720+4xA520&lt;br /&gt;
* Can be run on upstream kernel with some bugs&lt;br /&gt;
* Price is reasonable&lt;br /&gt;
* Supports SVE2 and a bunch of extensions, unlike Snapdragon platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* CPU Clock speeds aren't quite what are advertised&lt;br /&gt;
** Seems to be a firmware bug, might get fixed.&lt;br /&gt;
* Performance isn't as good as newest devices, but significantly better than Jetson Orin&lt;br /&gt;
* 5gbit ethernet seems to saturate at 2gbit due to soft-irq overhead. Better than 1gbit at least.&lt;br /&gt;
* USB connections over a USB 3 hub sometimes can't allocate resources?&lt;br /&gt;
** No idea what this error is about.&lt;br /&gt;
* Memory bandwidth is significantly lower than the 128-bit bus implies.&lt;br /&gt;
** Advertised &amp;gt;100GB/s, can barely crack 40GB/s in a multithreaded CPU microbench, single threaded is worse at ~16GB/s.&lt;br /&gt;
* Still the recommended platform for developing because the pros outweigh the cons&lt;br /&gt;
&lt;br /&gt;
===== GPUs tested =====&lt;br /&gt;
* Tested under ACPI configuration with upstream kernels&lt;br /&gt;
* Tested with BIOS 0.2.2-1, 9.0 just caused a hang early in kernel boot.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Radeon GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA1) Radeon RX 5700 || ✅ Works || ✅ Works&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA2) Radeon Pro W6400 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA3) Radeon Pro W7500 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA4) Radeon RX 9070 || ❌ Minimum Kernel is v6.13 || ❌ Doesn't work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Intel GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Xe2) Arc B580 || ❌ Needs newer kernel || ❌ Hangs when GPU tries coming online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ NVIDIA GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Ada) RTX 4000 SFF || ❌ Doesn't show up on bus || ❌ Doesn't show up on bus&lt;br /&gt;
|}&lt;br /&gt;
==== Snapdragon X2 Elite - '''Upcoming''' ====&lt;br /&gt;
* Not yet shipping&lt;br /&gt;
* CPU performance looks pretty interesting&lt;br /&gt;
* has 16 PCIe lanes&lt;br /&gt;
** 12 lanes of PCIe 5.0&lt;br /&gt;
** 4 lanes of PCIe 4.0&lt;br /&gt;
* Supports SVE2 and SME(2?)&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Unknown if we're getting a platform with a PCIe slot&lt;br /&gt;
** Additionally unknown if PCIe slots can take a GPU&lt;br /&gt;
* No platforms announced currently&lt;br /&gt;
* RNG extension might still be broken&lt;br /&gt;
* iGPU currently unsupported in Freedreno/Turnip&lt;br /&gt;
** New Adreno 8xx class&lt;br /&gt;
&lt;br /&gt;
==== Jetson Orin ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 55W on the PCIe bus, so a bit underpowered.&lt;br /&gt;
** Needs external power for larger GPUs&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged atomics on its Cortex-A78AE cores, so performance isn't good&lt;br /&gt;
** Errata 1951502&lt;br /&gt;
* Needs a kernel recompile on upstream Linux to enable the amdgpu kernel module&lt;br /&gt;
* Setting up can be a bit of a pain, but boots upstream kernel&lt;br /&gt;
&lt;br /&gt;
==== [https://www.nvidia.com/en-us/products/workstations/dgx-spark/ NVIDIA DGX Spark] ====&lt;br /&gt;
===== Features =====&lt;br /&gt;
* 20 core CPU. 10 Cortex-X925 cores and 10 Cortex-A725&lt;br /&gt;
* Four USB-C 4 40gbit ports.&lt;br /&gt;
* $3000 beginning price&lt;br /&gt;
* $4000 for the fancy NVIDIA DGX case.&lt;br /&gt;
&lt;br /&gt;
===== Unknowns =====&lt;br /&gt;
* USB-C 40gbit ports aren't wired up to enable Thunderbolt in Linux&lt;br /&gt;
** At least the DGX Spark seems to have the redrivers and everything for TB, just not enabled.&lt;br /&gt;
** The curse of Thunderbolt not working on ARM platforms continues.&lt;br /&gt;
&lt;br /&gt;
==== Snapdragon X Elite ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Can have three Thunderbolt ports&lt;br /&gt;
* SoC also has 8x PCIe lane PHY&lt;br /&gt;
** Theoretically can accept GPU on at least the 8x PCIe PHY&lt;br /&gt;
* Reasonable CPU performance, if a little underwhelming&lt;br /&gt;
* Lots of laptop devices to choose from&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Linux doesn't yet support Thunderbolt on this platform&lt;br /&gt;
** GPU on Thunderbolt might not work&lt;br /&gt;
* No platform with 8x PCIe lanes exposed&lt;br /&gt;
** Snapdragon dev kit has a PCIe slot inside of it that isn't wired up&lt;br /&gt;
** Wouldn't work without device tree changes anyway&lt;br /&gt;
** Maybe someone will eventually ship hardware with these PCIe lanes exposed&lt;br /&gt;
* '''Snapdragon Dev kit was cancelled'''&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
All of these are very expensive and not really worth buying as a consumer&lt;br /&gt;
==== NVIDIA Grace ====&lt;br /&gt;
Grace-Hopper and Grace-Grace platform has a large number of Neoverse-V2 cores. Very expensive platform, and Grace-Grace not actually available.&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Really expensive. $40k to $100k+&lt;br /&gt;
* Grace-Grace 144 core not really available&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Vera ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Semi-custom 88-core based on Neoverse-V3&lt;br /&gt;
** Has SMT with &amp;quot;full throughput&amp;quot; hardware threads?&lt;br /&gt;
** Probably statically partitioned pipelines and some more frontend decoder components duplicated than traditional x86 designs.&lt;br /&gt;
* Potentially be in a next-generation DGX Station&lt;br /&gt;
* Don't expect workstation class prices. Hope for $100k and be surprised if it is less.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* [https://github.com/NVIDIA/NV-Kernels/commit/688e754768522e3d6993a18b20a810769bdf642a Has] bugged PCIe which forces remapping of NC PCIe memory to Device-nGnRE&lt;br /&gt;
** Significant performance issues are expected&lt;br /&gt;
&lt;br /&gt;
==== AmpereOne ====&lt;br /&gt;
Only just now becoming available in October 2024.&lt;br /&gt;
No workstation platform available yet. AMPONED8-2T motherboard isn't publicly available yet.&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* A96-37X SKU would likely be great in a desktop platform, but not available&lt;br /&gt;
* Custom CPU cores, not as high performance as Grace or very latest consumer platforms&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Untested but PCIe should be fixed&lt;br /&gt;
&lt;br /&gt;
== Platforms that can '''not''' accept a GPU ==&lt;br /&gt;
=== Consumer platforms ===&lt;br /&gt;
==== All Apple Silicon devices ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Highest performing ARMv8/ARMv9 CPUs today&lt;br /&gt;
* Parallels/UTM VM available in MacOS for all devices&lt;br /&gt;
* Asahi Linux supported for M1/M2 Pro/Max/Ultra for native Linux&lt;br /&gt;
** But breaks FEX because of 16KB pages&lt;br /&gt;
** Big work in progress to get a VM running FEX with 4k pages and virtio-gpu&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Thunderbolt can't accept GPUs&lt;br /&gt;
** This is due to Dart/IOMMU problems and memory mapping problems.&lt;br /&gt;
** Asahi linux has some documentation on this failure&lt;br /&gt;
* Mac Pro PCIe slots have the same issue, so nothing solved on that platform&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
==== Ampere Altra ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Has some desktop-like systems created by System76 and Avantek.&lt;br /&gt;
** Fairly pricey compared to the smaller platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged PCIe fabric that requires kernel workarounds to get GPUs working on it&lt;br /&gt;
** Doesn't fully solve the problem, latest Radeons still don't work&lt;br /&gt;
* Old CPU cores based on Neoverse-N1&lt;br /&gt;
* Not recommended unless you need a lot of cores&lt;br /&gt;
&lt;br /&gt;
==== Jetson Thor ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* 14x Neoverse-V3AE cores&lt;br /&gt;
** 2.6Ghz&lt;br /&gt;
* 128GB LPDDR5X, 273GB/s&lt;br /&gt;
* 8TFLOP Blackwell iGPU&lt;br /&gt;
* 130w TDP&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* They removed the PCIe slot this generation!&lt;br /&gt;
** Only supports PCIe arrangements of 1x + 1x + 2x + 8x (or 4x) off the module board.&lt;br /&gt;
* Unknown if the M.2 slot used for NVMe/booting can be used with a PCIe riser and dGPU.&lt;br /&gt;
** [https://forums.developer.nvidia.com/t/jetson-agx-thor-developer-kit-removed-the-pcie-slot/338524/2 Claims to not support a dGPU on the M.2 slot.]&lt;br /&gt;
** Quote from kayccc: '''For dGPU attached is not supported, and suggest to use IGX, see IGX | Industrial-Grade Edge AI platform | NVIDIA'''&lt;br /&gt;
* No IGX/Clara platform announced with PCIe switch off 8x root node.&lt;br /&gt;
* CPU performance isn't as high as Neoverse-V3AE should be.&lt;br /&gt;
** Memory bus problems or something?&lt;br /&gt;
&lt;br /&gt;
== Misc Platforms ==&lt;br /&gt;
=== Raspberry Pi 4/5 ===&lt;br /&gt;
* Low-cost&lt;br /&gt;
* Low-performance&lt;br /&gt;
* Not really worth using&lt;br /&gt;
* GPU doesn't have enough features for DXVK/VKD3D&lt;br /&gt;
** Limited performance means that even when games run, likely limited to very low-end indie devices.&lt;br /&gt;
* PCIe is bugged and requires nasty kernel work arounds to have a GPU plugged in&lt;br /&gt;
** Not recommended&lt;br /&gt;
&lt;br /&gt;
=== RK3588 boards ===&lt;br /&gt;
* Old CPU cores, Cortex-A76&lt;br /&gt;
* Mali GPU which doesn't support enough features for DXVK/VKD3D&lt;br /&gt;
** Mesa drivers don't have enough features.&lt;br /&gt;
&lt;br /&gt;
=== [https://store.steampowered.com/sale/steamframe Steam Frame] - '''Upcoming''' ===&lt;br /&gt;
==== Behaviour ====&lt;br /&gt;
* Snapdragon 8 Gen 3 based platform&lt;br /&gt;
* 16GB of RAM&lt;br /&gt;
* SteamOS, Arch based Linux&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* No dGPU support&lt;br /&gt;
** Has a PCIe 4.0 1x lane, maybe someone can glue a GPU on to it?&lt;br /&gt;
* Not a traditional form factor&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1505</id>
		<title>Interesting ARM64 Platforms</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1505"/>
		<updated>2026-01-26T00:28:53Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brain dump of &amp;quot;actively&amp;quot; interesting ARM64 platforms, mostly from Sonicadvance1. It's hard to remember which platforms are actively interesting for FEX development and usage. Definitely some bias in here.&lt;br /&gt;
&lt;br /&gt;
== Platforms that can accept a GPU ==&lt;br /&gt;
=== &amp;quot;Consumer&amp;quot; platforms  ===&lt;br /&gt;
==== Radxa Orion O6 - '''Current recommended''' ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 54w on the PCIe bus, but supports ATX PSUs to make things easier.&lt;br /&gt;
* 12 core system - 4xA720+4xA720+4xA520&lt;br /&gt;
* Can be run on upstream kernel with some bugs&lt;br /&gt;
* Price is reasonable&lt;br /&gt;
* Supports SVE2 and a bunch of extensions, unlike Snapdragon platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* CPU Clock speeds aren't quite what are advertised&lt;br /&gt;
** Seems to be a firmware bug, might get fixed.&lt;br /&gt;
* Performance isn't as good as newest devices, but significantly better than Jetson Orin&lt;br /&gt;
* 5gbit ethernet seems to saturate at 2gbit due to soft-irq overhead. Better than 1gbit at least.&lt;br /&gt;
* USB connections over a USB 3 hub sometimes can't allocate resources?&lt;br /&gt;
** No idea what this error is about.&lt;br /&gt;
* Memory bandwidth is significantly lower than the 128-bit bus implies.&lt;br /&gt;
** Advertised &amp;gt;100GB/s, can barely crack 40GB/s in a multithreaded CPU microbench, single threaded is worse at ~16GB/s.&lt;br /&gt;
* Still the recommended platform for developing because the pros outweigh the cons&lt;br /&gt;
&lt;br /&gt;
===== GPUs tested =====&lt;br /&gt;
* Tested under ACPI configuration with upstream kernels&lt;br /&gt;
* Tested with BIOS 0.2.2-1, 9.0 just caused a hang early in kernel boot.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Radeon GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA1) Radeon RX 5700 || ✅ Works || ✅ Works&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA2) Radeon Pro W6400 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA3) Radeon Pro W7500 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA4) Radeon RX 9070 || ❌ Minimum Kernel is v6.13 || ❌ Doesn't work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Intel GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Xe2) Arc B580 || ❌ Needs newer kernel || ❌ Hangs when GPU tries coming online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ NVIDIA GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Ada) RTX 4000 SFF || ❌ Doesn't show up on bus || ❌ Doesn't show up on bus&lt;br /&gt;
|}&lt;br /&gt;
==== Snapdragon X2 Elite - '''Upcoming''' ====&lt;br /&gt;
* Not yet shipping&lt;br /&gt;
* CPU performance looks pretty interesting&lt;br /&gt;
* has 16 PCIe lanes&lt;br /&gt;
** 12 lanes of PCIe 5.0&lt;br /&gt;
** 4 lanes of PCIe 4.0&lt;br /&gt;
* Supports SVE2 and SME(2?)&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Unknown if we're getting a platform with a PCIe slot&lt;br /&gt;
** Additionally unknown if PCIe slots can take a GPU&lt;br /&gt;
* No platforms announced currently&lt;br /&gt;
* RNG extension might still be broken&lt;br /&gt;
* iGPU currently unsupported in Freedreno/Turnip&lt;br /&gt;
** New Adreno 8xx class&lt;br /&gt;
&lt;br /&gt;
==== Jetson Orin ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 55W on the PCIe bus, so a bit underpowered.&lt;br /&gt;
** Needs external power for larger GPUs&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged atomics on its Cortex-A78AE cores, so performance isn't good&lt;br /&gt;
** Errata 1951502&lt;br /&gt;
* Needs a kernel recompile on upstream Linux to enable the amdgpu kernel module&lt;br /&gt;
* Setting up can be a bit of a pain, but boots upstream kernel&lt;br /&gt;
&lt;br /&gt;
==== [https://www.nvidia.com/en-us/products/workstations/dgx-spark/ NVIDIA DGX Spark] ====&lt;br /&gt;
===== Features =====&lt;br /&gt;
* 20 core CPU. 10 Cortex-X925 cores and 10 Cortex-A725&lt;br /&gt;
* Four USB-C 4 40gbit ports.&lt;br /&gt;
* $3000 beginning price&lt;br /&gt;
* $4000 for the fancy NVIDIA DGX case.&lt;br /&gt;
&lt;br /&gt;
===== Unknowns =====&lt;br /&gt;
* USB-C 40gbit ports. Unknown if Thunderbolt and eGPUs work in Linux yet.&lt;br /&gt;
** If eGPUs don't work then hard to care about until Mesa/Nouveau/NVK support lands.&lt;br /&gt;
&lt;br /&gt;
==== Snapdragon X Elite ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Can have three Thunderbolt ports&lt;br /&gt;
* SoC also has 8x PCIe lane PHY&lt;br /&gt;
** Theoretically can accept GPU on at least the 8x PCIe PHY&lt;br /&gt;
* Reasonable CPU performance, if a little underwhelming&lt;br /&gt;
* Lots of laptop devices to choose from&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Linux doesn't yet support Thunderbolt on this platform&lt;br /&gt;
** GPU on Thunderbolt might not work&lt;br /&gt;
* No platform with 8x PCIe lanes exposed&lt;br /&gt;
** Snapdragon dev kit has a PCIe slot inside of it that isn't wired up&lt;br /&gt;
** Wouldn't work without device tree changes anyway&lt;br /&gt;
** Maybe someone will eventually ship hardware with these PCIe lanes exposed&lt;br /&gt;
* '''Snapdragon Dev kit was cancelled'''&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
All of these are very expensive and not really worth buying as a consumer&lt;br /&gt;
==== NVIDIA Grace ====&lt;br /&gt;
Grace-Hopper and Grace-Grace platform has a large number of Neoverse-V2 cores. Very expensive platform, and Grace-Grace not actually available.&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Really expensive. $40k to $100k+&lt;br /&gt;
* Grace-Grace 144 core not really available&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Vera ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Semi-custom 88-core based on Neoverse-V3&lt;br /&gt;
** Has SMT with &amp;quot;full throughput&amp;quot; hardware threads?&lt;br /&gt;
** Probably statically partitioned pipelines and some more frontend decoder components duplicated than traditional x86 designs.&lt;br /&gt;
* Potentially be in a next-generation DGX Station&lt;br /&gt;
* Don't expect workstation class prices. Hope for $100k and be surprised if it is less.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* [https://github.com/NVIDIA/NV-Kernels/commit/688e754768522e3d6993a18b20a810769bdf642a Has] bugged PCIe which forces remapping of NC PCIe memory to Device-nGnRE&lt;br /&gt;
** Significant performance issues are expected&lt;br /&gt;
&lt;br /&gt;
==== AmpereOne ====&lt;br /&gt;
Only just now becoming available in October 2024.&lt;br /&gt;
No workstation platform available yet. AMPONED8-2T motherboard isn't publicly available yet.&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* A96-37X SKU would likely be great in a desktop platform, but not available&lt;br /&gt;
* Custom CPU cores, not as high performance as Grace or very latest consumer platforms&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Untested but PCIe should be fixed&lt;br /&gt;
&lt;br /&gt;
== Platforms that can '''not''' accept a GPU ==&lt;br /&gt;
=== Consumer platforms ===&lt;br /&gt;
==== All Apple Silicon devices ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Highest performing ARMv8/ARMv9 CPUs today&lt;br /&gt;
* Parallels/UTM VM available in MacOS for all devices&lt;br /&gt;
* Asahi Linux supported for M1/M2 Pro/Max/Ultra for native Linux&lt;br /&gt;
** But breaks FEX because of 16KB pages&lt;br /&gt;
** Big work in progress to get a VM running FEX with 4k pages and virtio-gpu&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Thunderbolt can't accept GPUs&lt;br /&gt;
** This is due to Dart/IOMMU problems and memory mapping problems.&lt;br /&gt;
** Asahi linux has some documentation on this failure&lt;br /&gt;
* Mac Pro PCIe slots have the same issue, so nothing solved on that platform&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
==== Ampere Altra ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Has some desktop-like systems created by System76 and Avantek.&lt;br /&gt;
** Fairly pricey compared to the smaller platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged PCIe fabric that requires kernel workarounds to get GPUs working on it&lt;br /&gt;
** Doesn't fully solve the problem, latest Radeons still don't work&lt;br /&gt;
* Old CPU cores based on Neoverse-N1&lt;br /&gt;
* Not recommended unless you need a lot of cores&lt;br /&gt;
&lt;br /&gt;
==== Jetson Thor ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* 14x Neoverse-V3AE cores&lt;br /&gt;
** 2.6Ghz&lt;br /&gt;
* 128GB LPDDR5X, 273GB/s&lt;br /&gt;
* 8TFLOP Blackwell iGPU&lt;br /&gt;
* 130w TDP&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* They removed the PCIe slot this generation!&lt;br /&gt;
** Only supports PCIe arrangements of 1x + 1x + 2x + 8x (or 4x) off the module board.&lt;br /&gt;
* Unknown if the M.2 slot used for NVMe/booting can be used with a PCIe riser and dGPU.&lt;br /&gt;
** [https://forums.developer.nvidia.com/t/jetson-agx-thor-developer-kit-removed-the-pcie-slot/338524/2 Claims to not support a dGPU on the M.2 slot.]&lt;br /&gt;
** Quote from kayccc: '''For dGPU attached is not supported, and suggest to use IGX, see IGX | Industrial-Grade Edge AI platform | NVIDIA'''&lt;br /&gt;
* No IGX/Clara platform announced with PCIe switch off 8x root node.&lt;br /&gt;
* CPU performance isn't as high as Neoverse-V3AE should be.&lt;br /&gt;
** Memory bus problems or something?&lt;br /&gt;
&lt;br /&gt;
== Misc Platforms ==&lt;br /&gt;
=== Raspberry Pi 4/5 ===&lt;br /&gt;
* Low-cost&lt;br /&gt;
* Low-performance&lt;br /&gt;
* Not really worth using&lt;br /&gt;
* GPU doesn't have enough features for DXVK/VKD3D&lt;br /&gt;
** Limited performance means that even when games run, likely limited to very low-end indie devices.&lt;br /&gt;
* PCIe is bugged and requires nasty kernel work arounds to have a GPU plugged in&lt;br /&gt;
** Not recommended&lt;br /&gt;
&lt;br /&gt;
=== RK3588 boards ===&lt;br /&gt;
* Old CPU cores, Cortex-A76&lt;br /&gt;
* Mali GPU which doesn't support enough features for DXVK/VKD3D&lt;br /&gt;
** Mesa drivers don't have enough features.&lt;br /&gt;
&lt;br /&gt;
=== [https://store.steampowered.com/sale/steamframe Steam Frame] - '''Upcoming''' ===&lt;br /&gt;
==== Behaviour ====&lt;br /&gt;
* Snapdragon 8 Gen 3 based platform&lt;br /&gt;
* 16GB of RAM&lt;br /&gt;
* SteamOS, Arch based Linux&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* No dGPU support&lt;br /&gt;
** Has a PCIe 4.0 1x lane, maybe someone can glue a GPU on to it?&lt;br /&gt;
* Not a traditional form factor&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1504</id>
		<title>Interesting ARM64 Platforms</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1504"/>
		<updated>2026-01-26T00:08:47Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brain dump of &amp;quot;actively&amp;quot; interesting ARM64 platforms, mostly from Sonicadvance1. It's hard to remember which platforms are actively interesting for FEX development and usage. Definitely some bias in here.&lt;br /&gt;
&lt;br /&gt;
== Platforms that can accept a GPU ==&lt;br /&gt;
=== &amp;quot;Consumer&amp;quot; platforms  ===&lt;br /&gt;
==== Radxa Orion O6 - '''Current recommended''' ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 54w on the PCIe bus, but supports ATX PSUs to make things easier.&lt;br /&gt;
* 12 core system - 4xA720+4xA720+4xA520&lt;br /&gt;
* Can be run on upstream kernel with some bugs&lt;br /&gt;
* Price is reasonable&lt;br /&gt;
* Supports SVE2 and a bunch of extensions, unlike Snapdragon platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* CPU Clock speeds aren't quite what are advertised&lt;br /&gt;
** Seems to be a firmware bug, might get fixed.&lt;br /&gt;
* Performance isn't as good as newest devices, but significantly better than Jetson Orin&lt;br /&gt;
* 5gbit ethernet seems to saturate at 2gbit due to soft-irq overhead. Better than 1gbit at least.&lt;br /&gt;
* USB connections over a USB 3 hub sometimes can't allocate resources?&lt;br /&gt;
** No idea what this error is about.&lt;br /&gt;
* Memory bandwidth is significantly lower than the 128-bit bus implies.&lt;br /&gt;
** Advertised &amp;gt;100GB/s, can barely crack 40GB/s in a multithreaded CPU microbench, single threaded is worse at ~16GB/s.&lt;br /&gt;
* Still the recommended platform for developing because the pros outweigh the cons&lt;br /&gt;
&lt;br /&gt;
===== GPUs tested =====&lt;br /&gt;
* Tested under ACPI configuration with upstream kernels&lt;br /&gt;
* Tested with BIOS 0.2.2-1, 9.0 just caused a hang early in kernel boot.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Radeon GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA1) Radeon RX 5700 || ✅ Works || ✅ Works&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA2) Radeon Pro W6400 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA3) Radeon Pro W7500 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA4) Radeon RX 9070 || ❌ Minimum Kernel is v6.13 || ❌ Doesn't work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Intel GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Xe2) Arc B580 || ❌ Needs newer kernel || ❌ Hangs when GPU tries coming online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ NVIDIA GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Ada) RTX 4000 SFF || ❌ Doesn't show up on bus || ❌ Doesn't show up on bus&lt;br /&gt;
|}&lt;br /&gt;
==== Snapdragon X2 Elite - '''Upcoming''' ====&lt;br /&gt;
* Not yet shipping&lt;br /&gt;
* CPU performance looks pretty interesting&lt;br /&gt;
* has 16 PCIe lanes&lt;br /&gt;
** 12 lanes of PCIe 5.0&lt;br /&gt;
** 4 lanes of PCIe 4.0&lt;br /&gt;
* Supports SVE2 and SME(2?)&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Unknown if we're getting a platform with a PCIe slot&lt;br /&gt;
** Additionally unknown if PCIe slots can take a GPU&lt;br /&gt;
* No platforms announced currently&lt;br /&gt;
* RNG extension might still be broken&lt;br /&gt;
* iGPU currently unsupported in Freedreno/Turnip&lt;br /&gt;
** New Adreno 8xx class&lt;br /&gt;
&lt;br /&gt;
==== Jetson Orin ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 55W on the PCIe bus, so a bit underpowered.&lt;br /&gt;
** Needs external power for larger GPUs&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged atomics on its Cortex-A78AE cores, so performance isn't good&lt;br /&gt;
** Errata 1951502&lt;br /&gt;
* Needs a kernel recompile on upstream Linux to enable the amdgpu kernel module&lt;br /&gt;
* Setting up can be a bit of a pain, but boots upstream kernel&lt;br /&gt;
&lt;br /&gt;
==== [https://www.nvidia.com/en-us/products/workstations/dgx-spark/ NVIDIA DGX Spark] ====&lt;br /&gt;
===== Features =====&lt;br /&gt;
* 20 core CPU. 10 Cortex-X925 cores and 10 Cortex-A725&lt;br /&gt;
* Four USB-C 4 40gbit ports.&lt;br /&gt;
* $3000 beginning price&lt;br /&gt;
* $4000 for the fancy NVIDIA DGX case.&lt;br /&gt;
&lt;br /&gt;
===== Unknowns =====&lt;br /&gt;
* USB-C 40gbit ports. Unknown if Thunderbolt and eGPUs work in Linux yet.&lt;br /&gt;
** If eGPUs don't work then hard to care about until Mesa/Nouveau/NVK support lands.&lt;br /&gt;
&lt;br /&gt;
==== Snapdragon X Elite ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Can have three Thunderbolt ports&lt;br /&gt;
* SoC also has 8x PCIe lane PHY&lt;br /&gt;
** Theoretically can accept GPU on at least the 8x PCIe PHY&lt;br /&gt;
* Reasonable CPU performance, if a little underwhelming&lt;br /&gt;
* Lots of laptop devices to choose from&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Linux doesn't yet support Thunderbolt on this platform&lt;br /&gt;
** GPU on Thunderbolt might not work&lt;br /&gt;
* No platform with 8x PCIe lanes exposed&lt;br /&gt;
** Snapdragon dev kit has a PCIe slot inside of it that isn't wired up&lt;br /&gt;
** Wouldn't work without device tree changes anyway&lt;br /&gt;
** Maybe someone will eventually ship hardware with these PCIe lanes exposed&lt;br /&gt;
* '''Snapdragon Dev kit was cancelled'''&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
All of these are very expensive and not really worth buying as a consumer&lt;br /&gt;
==== NVIDIA Grace ====&lt;br /&gt;
Grace-Hopper and Grace-Grace platform has a large number of Neoverse-V2 cores. Very expensive platform, and Grace-Grace not actually available.&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Really expensive. $40k to $100k+&lt;br /&gt;
* Grace-Grace 144 core not really available&lt;br /&gt;
&lt;br /&gt;
==== AmpereOne ====&lt;br /&gt;
Only just now becoming available in October 2024.&lt;br /&gt;
No workstation platform available yet. AMPONED8-2T motherboard isn't publicly available yet.&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* A96-37X SKU would likely be great in a desktop platform, but not available&lt;br /&gt;
* Custom CPU cores, not as high performance as Grace or very latest consumer platforms&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Untested but PCIe should be fixed&lt;br /&gt;
&lt;br /&gt;
== Platforms that can '''not''' accept a GPU ==&lt;br /&gt;
=== Consumer platforms ===&lt;br /&gt;
==== All Apple Silicon devices ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Highest performing ARMv8/ARMv9 CPUs today&lt;br /&gt;
* Parallels/UTM VM available in MacOS for all devices&lt;br /&gt;
* Asahi Linux supported for M1/M2 Pro/Max/Ultra for native Linux&lt;br /&gt;
** But breaks FEX because of 16KB pages&lt;br /&gt;
** Big work in progress to get a VM running FEX with 4k pages and virtio-gpu&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Thunderbolt can't accept GPUs&lt;br /&gt;
** This is due to Dart/IOMMU problems and memory mapping problems.&lt;br /&gt;
** Asahi linux has some documentation on this failure&lt;br /&gt;
* Mac Pro PCIe slots have the same issue, so nothing solved on that platform&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
==== Ampere Altra ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Has some desktop-like systems created by System76 and Avantek.&lt;br /&gt;
** Fairly pricey compared to the smaller platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged PCIe fabric that requires kernel workarounds to get GPUs working on it&lt;br /&gt;
** Doesn't fully solve the problem, latest Radeons still don't work&lt;br /&gt;
* Old CPU cores based on Neoverse-N1&lt;br /&gt;
* Not recommended unless you need a lot of cores&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Vera ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Semi-custom 88-core based on Neoverse-V3&lt;br /&gt;
** Has SMT with &amp;quot;full throughput&amp;quot; hardware threads?&lt;br /&gt;
** Probably statically partitioned pipelines and some more frontend decoder components duplicated than traditional x86 designs.&lt;br /&gt;
* Potentially be in a next-generation DGX Station&lt;br /&gt;
* Don't expect workstation class prices. Hope for $100k and be surprised if it is less.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* [https://github.com/NVIDIA/NV-Kernels/commit/688e754768522e3d6993a18b20a810769bdf642a Has] bugged PCIe which forces remapping of NC PCIe memory to Device-nGnRE&lt;br /&gt;
** Significant performance issues are expected&lt;br /&gt;
&lt;br /&gt;
==== Jetson Thor ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* 14x Neoverse-V3AE cores&lt;br /&gt;
** 2.6Ghz&lt;br /&gt;
* 128GB LPDDR5X, 273GB/s&lt;br /&gt;
* 8TFLOP Blackwell iGPU&lt;br /&gt;
* 130w TDP&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* They removed the PCIe slot this generation!&lt;br /&gt;
** Only supports PCIe arrangements of 1x + 1x + 2x + 8x (or 4x) off the module board.&lt;br /&gt;
* Unknown if the M.2 slot used for NVMe/booting can be used with a PCIe riser and dGPU.&lt;br /&gt;
** [https://forums.developer.nvidia.com/t/jetson-agx-thor-developer-kit-removed-the-pcie-slot/338524/2 Claims to not support a dGPU on the M.2 slot.]&lt;br /&gt;
** Quote from kayccc: '''For dGPU attached is not supported, and suggest to use IGX, see IGX | Industrial-Grade Edge AI platform | NVIDIA'''&lt;br /&gt;
* No IGX/Clara platform announced with PCIe switch off 8x root node.&lt;br /&gt;
* CPU performance isn't as high as Neoverse-V3AE should be.&lt;br /&gt;
** Memory bus problems or something?&lt;br /&gt;
&lt;br /&gt;
== Misc Platforms ==&lt;br /&gt;
=== Raspberry Pi 4/5 ===&lt;br /&gt;
* Low-cost&lt;br /&gt;
* Low-performance&lt;br /&gt;
* Not really worth using&lt;br /&gt;
* GPU doesn't have enough features for DXVK/VKD3D&lt;br /&gt;
** Limited performance means that even when games run, likely limited to very low-end indie devices.&lt;br /&gt;
* PCIe is bugged and requires nasty kernel work arounds to have a GPU plugged in&lt;br /&gt;
** Not recommended&lt;br /&gt;
&lt;br /&gt;
=== RK3588 boards ===&lt;br /&gt;
* Old CPU cores, Cortex-A76&lt;br /&gt;
* Mali GPU which doesn't support enough features for DXVK/VKD3D&lt;br /&gt;
** Mesa drivers don't have enough features.&lt;br /&gt;
&lt;br /&gt;
=== [https://store.steampowered.com/sale/steamframe Steam Frame] - '''Upcoming''' ===&lt;br /&gt;
==== Behaviour ====&lt;br /&gt;
* Snapdragon 8 Gen 3 based platform&lt;br /&gt;
* 16GB of RAM&lt;br /&gt;
* SteamOS, Arch based Linux&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* No dGPU support&lt;br /&gt;
** Has a PCIe 4.0 1x lane, maybe someone can glue a GPU on to it?&lt;br /&gt;
* Not a traditional form factor&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Development:Setting_up_FEX&amp;diff=1493</id>
		<title>Development:Setting up FEX</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Development:Setting_up_FEX&amp;diff=1493"/>
		<updated>2026-01-04T14:32:36Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Development]]&lt;br /&gt;
== Build dependencies ==&lt;br /&gt;
=== Debian/Ubuntu dependencies ===&lt;br /&gt;
* git&lt;br /&gt;
* cmake&lt;br /&gt;
* ninja-build&lt;br /&gt;
* pkgconf&lt;br /&gt;
* ccache (Recommended if you're rebuilding constantly)&lt;br /&gt;
* clang&lt;br /&gt;
* llvm&lt;br /&gt;
* lld (For ThinLTO)&lt;br /&gt;
* binfmt-support (For AArch64 binfmt_misc support)&lt;br /&gt;
* libssl-dev&lt;br /&gt;
* python3-setuptools (For build scripts)&lt;br /&gt;
* g++-x86-64-linux-gnu (For building thunks)&lt;br /&gt;
* libgcc-XX-dev-i386-cross (For building thunks, version should match your g++-x86-64-linux-gnu package)&lt;br /&gt;
* libgcc-XX-dev-amd64-cross (For building thunks, version should match your g++-x86-64-linux-gnu package)&lt;br /&gt;
* nasm (only if building tests)&lt;br /&gt;
* python3-clang (for struct verifier)&lt;br /&gt;
* libstdc++-12-dev-i386-cross (for struct verifier)&lt;br /&gt;
* libstdc++-12-dev-amd64-cross (for struct verifier)&lt;br /&gt;
* libstdc++-12-dev-arm64-cross (for struct verifier)&lt;br /&gt;
* squashfs-tools (For squashfs rootfs support)&lt;br /&gt;
* squashfuse (For mounting the squashfs)&lt;br /&gt;
* libc-bin or glibc-tools (For unittests, needs catchsegv from this)&lt;br /&gt;
* libc6-dev-i386-amd64-cross (For FEXLinuxTests)&lt;br /&gt;
* lib32stdc++-XX-dev-amd64-cross (For FEXLinuxTests, version should match your g++-x86-64-linux-gnu package)&lt;br /&gt;
* qtdeclarative5-dev (For GUI)&lt;br /&gt;
* qml-module-qtquick-controls (For GUI)&lt;br /&gt;
* qml-module-qtquick-controls2 (For GUI)&lt;br /&gt;
* qml-module-qtquick-dialogs (For GUI)&lt;br /&gt;
&lt;br /&gt;
=== Gentoo dependencies ===&lt;br /&gt;
* dev-vcs/git&lt;br /&gt;
* dev-build/cmake&lt;br /&gt;
* dev-build/ninja&lt;br /&gt;
* dev-util/ccache&lt;br /&gt;
* llvm-core/clang&lt;br /&gt;
* llvm-core/lld&lt;br /&gt;
* llvm-core/llvm&lt;br /&gt;
* dev-lang/nasm&lt;br /&gt;
* dev-libs/xxhash&lt;br /&gt;
* dev-libs/libfmt &amp;gt;= 11&lt;br /&gt;
* dev-qt/qtbase:6 (with `gui` and `widgets` USE flags)&lt;br /&gt;
* dev-qt/qtdeclarative:6&lt;br /&gt;
* sys-fs/squashfs-tools (with `zstd` USE flag)&lt;br /&gt;
&lt;br /&gt;
'''Use gubbins'''&lt;br /&gt;
* &amp;gt;=media-libs/libglvnd-1.3.4 X&lt;br /&gt;
&lt;br /&gt;
=== Fedora dependencies ===&lt;br /&gt;
* git&lt;br /&gt;
* cmake&lt;br /&gt;
* ninja-build&lt;br /&gt;
* pkg-config&lt;br /&gt;
* ccache&lt;br /&gt;
* clang&lt;br /&gt;
* lld&lt;br /&gt;
* llvm&lt;br /&gt;
* llvm-devel&lt;br /&gt;
* openssl-devel&lt;br /&gt;
* nasm&lt;br /&gt;
* python3-clang&lt;br /&gt;
* python3-setuptools&lt;br /&gt;
* squashfs-tools&lt;br /&gt;
* squashfuse&lt;br /&gt;
* erofs-fuse&lt;br /&gt;
* erofs-utils&lt;br /&gt;
* qt5-qtdeclarative-devel&lt;br /&gt;
* qt5-qtquickcontrols&lt;br /&gt;
* qt5-qtquickcontrols2&lt;br /&gt;
&lt;br /&gt;
== Build Configuration ==&lt;br /&gt;
* Ensure release mode is enabled&lt;br /&gt;
* Disable test building&lt;br /&gt;
* Enable LTO in a release build&lt;br /&gt;
* Enable LLD to make LTO builds faster&lt;br /&gt;
&lt;br /&gt;
  git clone --recurse-submodules https://github.com/FEX-Emu/FEX.git&lt;br /&gt;
  cd FEX&lt;br /&gt;
  mkdir Build&lt;br /&gt;
  cd Build&lt;br /&gt;
  CC=clang CXX=clang++ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DUSE_LINKER=lld -DENABLE_LTO=True -DBUILD_TESTING=False -DENABLE_ASSERTIONS=False -G Ninja ..&lt;br /&gt;
  ninja&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
  sudo ninja install&lt;br /&gt;
&lt;br /&gt;
You can install a binfmt_misc handler for both 32bit and 64bit x86 execution directly from the environment.&lt;br /&gt;
If you already have box86's 32bit binfmt_misc handler installed then make sure to uninstall their's first.&lt;br /&gt;
Make sure to have run install prior to this, otherwise binfmt_misc will install an old handler even if the executable has been updated.&lt;br /&gt;
&lt;br /&gt;
  sudo ninja binfmt_misc&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
==== binfmt_misc problems ====&lt;br /&gt;
* Double check that binfmt_misc has worked&lt;br /&gt;
** `ls /usr/share/binfmts/FEX*` should return files&lt;br /&gt;
** `ls /var/lib/binfmts/FEX*` should return files&lt;br /&gt;
** `/proc/sys/fs/binfmt_misc/status` should exist&lt;br /&gt;
*** If it doesn't exist then make sure your kernel has `CONFIG_BINFMT_MISC=y`&lt;br /&gt;
*** If it still doesn't exist then make sure systemd isn't disabling it `systemctl enable binfmt-support`&lt;br /&gt;
&lt;br /&gt;
==== DESTDIR quirks ====&lt;br /&gt;
* When using DESTDIR, make sure the path is absolute instead of relative&lt;br /&gt;
** FEX's thunks use subprojects because it needs to cross-compile&lt;br /&gt;
** If DESTDIR is relative then the install paths of the subprojects go to the wrong location&lt;br /&gt;
** Using $(pwd)/install works well&lt;br /&gt;
&lt;br /&gt;
== Runtime Configuration ==&lt;br /&gt;
FEXConfig is the application to use for runtime configuration setup.&lt;br /&gt;
&lt;br /&gt;
CTRL+S saves the configuration.&lt;br /&gt;
&lt;br /&gt;
=== Things to ensure to set ===&lt;br /&gt;
On AArch64 host, a rootfs path is mandatory, while it is optional on x86-64 host&lt;br /&gt;
&lt;br /&gt;
* Core: JIT&lt;br /&gt;
* RootFS&lt;br /&gt;
* Silent Logging (Useful to get FEX information spam out of the way)&lt;br /&gt;
* Block Size (500 is a good default. Optimization passes may break things though)&lt;br /&gt;
&lt;br /&gt;
More Details at: Follow the instructions [[Development:Configuring_FEX|here]]&lt;br /&gt;
&lt;br /&gt;
== RootFS generation ==&lt;br /&gt;
AArch64 hosts require a rootfs for running applications. FEX provides various x86 images that can be installed through [[Development:Setting_up_RootFS#Quick_Setup_with_FEXRootFSFetcher|FEXRootFSFetcher]]&lt;br /&gt;
&lt;br /&gt;
For more detailed instructions see [[Development:Setting_up_RootFS]]&lt;br /&gt;
&lt;br /&gt;
== Setting up library forwarding ==&lt;br /&gt;
&lt;br /&gt;
Follow the instructions [[Development:Setting_up_Library_Forwarding|here]].&lt;br /&gt;
&lt;br /&gt;
== Binaries ==&lt;br /&gt;
* FEX&lt;br /&gt;
** This is the emulator executable used to run x86 programs&lt;br /&gt;
* FEXInterpreter&lt;br /&gt;
** This is a (deprecated) alias for ''FEX'', provided for backwards compatibility&lt;br /&gt;
* FEXConfig&lt;br /&gt;
** Used for configuring emulation from a Qt-based GUI&lt;br /&gt;
* FEXBash&lt;br /&gt;
** Can be useful for starting a bash instance that is running under emulation&lt;br /&gt;
** It's not a chroot! Don't use sudo inside of this environment!&lt;br /&gt;
* FEXMountDaemon&lt;br /&gt;
** This is a mount daemon that will run in the background when you are using a squashfs based rootfs&lt;br /&gt;
** Usually one one instance open at any given moment&lt;br /&gt;
** It usually closes when FEX exits, but not always. See the problems section in setting up a rootfs&lt;br /&gt;
*** Has a ten second timeout window in case a another instance of FEX opens and uses it.&lt;br /&gt;
&lt;br /&gt;
=== Debug binaries ===&lt;br /&gt;
* TestHarnessRunner&lt;br /&gt;
** Used for running FEX's ASM unit tests&lt;br /&gt;
** Runs some binary in a host x86_64 host environment or FEX and checks results&lt;br /&gt;
** Useful for quickly creating ASM based unit tests&lt;br /&gt;
* IRLoader&lt;br /&gt;
** Used for running FEX's IR based unit tests&lt;br /&gt;
** Only runs through FEX and checks the results&lt;br /&gt;
** Minimal number of tests&lt;br /&gt;
* UnitTestGenerator&lt;br /&gt;
** This is supposed to be an x86-64 instruction generator&lt;br /&gt;
** Has an understanding of x86-64 instruction encoding format&lt;br /&gt;
** Generates hundreds of thousands of instructions&lt;br /&gt;
** Used to be used with a lockstep runner to ensure correct behaviour&lt;br /&gt;
** Largely unsupported, avoiding undefined behaviour is difficult and FEX doesn't need to match undefined behaviour&lt;br /&gt;
** Lockstep hostrunner wasn't ever made to be bug free, hard to support&lt;br /&gt;
** Doesn't ensure correct behaviour on AArch64 device&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Persona_5_Royal&amp;diff=1492</id>
		<title>Persona 5 Royal</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Persona_5_Royal&amp;diff=1492"/>
		<updated>2026-01-03T23:48:49Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 1687950 |os              = Windows |engine          = GFD |arch            = x86-64 |compat          = Unplayable |apptype         = Game |rendera...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 1687950&lt;br /&gt;
|os              = Windows&lt;br /&gt;
|engine          = GFD&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Unplayable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = Direct3D 11&lt;br /&gt;
|drm             = Denuvo Anti-Tamper&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
'''Denuvo Anti-Tamper'''&lt;br /&gt;
* FEX can't run due to Denuvo Anti-Tamper&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|SoC=|GPU=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2507-247-g23d0d7d|archtitle=x86-64|SoC=Radxa Orion O6|GPU=Radeon Pro W7500|result=Doesn't run|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Terraria&amp;diff=1486</id>
		<title>Terraria</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Terraria&amp;diff=1486"/>
		<updated>2025-12-29T23:01:29Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: Created page with &amp;quot;{{Infobox |steamappid      = 105600 |os              = Windows, Linux |engine          = XNA, FNA |arch            = x86-64 |compat          = Playable |apptype         = Game...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
|steamappid      = 105600&lt;br /&gt;
|os              = Windows, Linux&lt;br /&gt;
|engine          = XNA, FNA&lt;br /&gt;
|arch            = x86-64&lt;br /&gt;
|compat          = Playable&lt;br /&gt;
|apptype         = Game&lt;br /&gt;
|renderapi       = OpenGL, Vulkan, Direct3D 9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Steps to Run ==&lt;br /&gt;
'''No special instructions'''&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
=== Significant CPU time invalidating code ===&lt;br /&gt;
The game seems to have some sort of code obfuscation in place that causes significant overhead with FEX's multiblock code handling. Disable multiblock to make the game playable.&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copy the below and paste it above testing/end, then fill it out. Please don't delete any existing data. Revision is the githash. Arch should be formatted as x86-32, x86-64, ARM.--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{testing/entry|revision=|archtitle=|archhost=|result=|tester=}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{testing/start}}&lt;br /&gt;
{{testing/entry|revision=FEX-2512-170-gdbd802c|archtitle=x86-64|SoC=Radxa Orion O6|GPU=Radeon Pro W6400|result=Linux build works with caveats|tester=Sonicadvance1}}&lt;br /&gt;
{{testing/end}}&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Steam&amp;diff=1485</id>
		<title>Steam</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Steam&amp;diff=1485"/>
		<updated>2025-12-29T19:22:32Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: /* Fedora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing Steam to your host ==&lt;br /&gt;
We install Steam to the host OS to execute games from.&lt;br /&gt;
=== Debian and Ubuntu ===&lt;br /&gt;
Steps to install&lt;br /&gt;
* Download the official debian package from https://repo.steampowered.com/steam/archive/stable/&lt;br /&gt;
** Direct Debian package file link: https://repo.steampowered.com/steam/archive/stable/steam-launcher_latest_all.deb&lt;br /&gt;
* Install with `sudo apt install ./steam-launcher_latest_all.deb`&lt;br /&gt;
* Run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
* Download the x86 steam rpm from: https://mirrors.cloud.tencent.com/rpmfusion/nonfree/fedora/steam/44/x86_64/s/steam-1.0.0.83-3.fc44.i686.rpm&lt;br /&gt;
* Extract it with rpm2cpio steam-1.0.0.83-3.fc44.i686.rpm | cpio -idmv&lt;br /&gt;
* '''TODO''' - Add instructions for how to copy to root filesystem&lt;br /&gt;
* run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
=== ArchLinux ===&lt;br /&gt;
* Download the deb file from above&lt;br /&gt;
* Extract with ar x steam-launcher_latest_all.deb&lt;br /&gt;
* tar -xvf data.tar.xz&lt;br /&gt;
* copy the folders in to the root /&lt;br /&gt;
** Careful with using rsync here! It might overwrite your /usr symlink with a directory and break things!&lt;br /&gt;
** I'd recommend recursive cp instead.&lt;br /&gt;
* run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
=== 32-bit application under FEX ===&lt;br /&gt;
FEX is a 64bit AArch64 application. To get 32-bit applications like Steam running under FEX there we workarounds in place to get them working without kernel patches.&lt;br /&gt;
&lt;br /&gt;
This involves a userspace virtual memory allocator and ioctl emulation. Ideally we have kernel patches in place to have full coverage of ioctls but those patches are difficult to land upstream.&lt;br /&gt;
&lt;br /&gt;
There is an ongoing effort to upstream these kernel bits but the ARM kernel maintainers really don't want to support this use case.&lt;br /&gt;
For more information about the problems we encounter [[Development:32Bit_Syscall_Woes]]&lt;br /&gt;
&lt;br /&gt;
=== Setting environment variable STEAMOS and STEAM_RUNTIME ===&lt;br /&gt;
* export STEAMOS=1&lt;br /&gt;
* export STEAM_RUNTIME=1&lt;br /&gt;
Setting these environment variables skips Steam's bash script from checking for glibc and throwing a warning window&lt;br /&gt;
&lt;br /&gt;
Some additional arguments that can be helpful when tinkering. Don't use these unless you understand what you're breaking.&lt;br /&gt;
  -noverifyfiles -nobootstrapupdate -skipinitialbootstrap -norepairfiles -nodircheck -inhibitbootstrap -noassert&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
Steam is a very complex application which can cause FEX some pain.&lt;br /&gt;
The primary application is also a 32bit binary which requires kernel patches to run on AArch64 platforms.&lt;br /&gt;
&lt;br /&gt;
=== Steam crashing on startup ===&lt;br /&gt;
If steam has updated its runtime then it may have updated its pinned libraries and broke itself&lt;br /&gt;
&lt;br /&gt;
* Message: `Version `GCC_7.0.0' not found (required by /usr/lib/i386-linux-gnu/dri/msm_dri.so) (search paths /usr/lib/i386-linux-gnu/dri)`&lt;br /&gt;
&lt;br /&gt;
Going in to the runtime and deleting some libraries can help here.&lt;br /&gt;
&lt;br /&gt;
These live in $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/&lt;br /&gt;
&lt;br /&gt;
Delete the following files from that folder and it can help&lt;br /&gt;
&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libstdc++*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libxcb*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/libgcc_s*&lt;br /&gt;
&lt;br /&gt;
=== Game Library and other things not visible ===&lt;br /&gt;
Steam is using CEF (Chromium Embedded Framework) for large amounts of its library rendering&lt;br /&gt;
&lt;br /&gt;
This can be a bit buggy due to some circumstances. Either driver, CPU timeout, or other reasons.&lt;br /&gt;
&lt;br /&gt;
Known bits that use CEF&lt;br /&gt;
* Game Library (Switch over to Small Mode or Big Picture mode in the menu)&lt;br /&gt;
* Friends List&lt;br /&gt;
* Game properties window&lt;br /&gt;
* Storefront and other web views&lt;br /&gt;
* Game install window&lt;br /&gt;
&lt;br /&gt;
=== CEF crashing on startup ===&lt;br /&gt;
You may find messages in the steam log saying that steamwebhelper has failed to find symbols.&lt;br /&gt;
&lt;br /&gt;
You may need to remove some libraries from the steam-runtime to get past this point.&lt;br /&gt;
&lt;br /&gt;
This will let the steamwebhelper to use libraries from the rootfs instead of the steam-runtime&lt;br /&gt;
&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libz.so*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libfreetype.so.6*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libfontconfig.so.1*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libdbus-1.so*&lt;br /&gt;
&lt;br /&gt;
=== Long load times ===&lt;br /&gt;
Steam's load time can take a couple minutes. This is due to x87 utilization during initialization which is particularly slow. This will take some time to optimize.&lt;br /&gt;
It can look like Steam has hung while loading. Might be worth watching the process in something like htop to watch if it crashed or is running.&lt;br /&gt;
* Additionally Steam starts some background processes and if they hang or crash, then it takes a minute or two for that to timeout&lt;br /&gt;
** An example is if you stall steamwebhelper, it will hang for a while, seemingly waiting for the process.&lt;br /&gt;
Additionally it launches a few applications in the background that searches for things which can be a bit slow.&lt;br /&gt;
&lt;br /&gt;
== steamcmd ==&lt;br /&gt;
=== Installing ===&lt;br /&gt;
Follow Valve's guide for installing steamcmd manually [https://developer.valvesoftware.com/wiki/SteamCMD#Manually here]&lt;br /&gt;
or&lt;br /&gt;
  mkdir ~/Steam &amp;amp;&amp;amp; cd ~/Steam&lt;br /&gt;
  curl -sqL &amp;quot;https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz&amp;quot; | tar zxvf -&lt;br /&gt;
  FEXBash ./steamcmd.sh&lt;br /&gt;
&lt;br /&gt;
=== Running ===&lt;br /&gt;
Just execute steamcmd.sh under FEXBash&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Steam&amp;diff=1484</id>
		<title>Steam</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Steam&amp;diff=1484"/>
		<updated>2025-12-29T19:10:00Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing Steam to your host ==&lt;br /&gt;
We install Steam to the host OS to execute games from.&lt;br /&gt;
=== Debian and Ubuntu ===&lt;br /&gt;
Steps to install&lt;br /&gt;
* Download the official debian package from https://repo.steampowered.com/steam/archive/stable/&lt;br /&gt;
** Direct Debian package file link: https://repo.steampowered.com/steam/archive/stable/steam-launcher_latest_all.deb&lt;br /&gt;
* Install with `sudo apt install ./steam-launcher_latest_all.deb`&lt;br /&gt;
* Run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
* Download the x86 steam rpm from: https://mirrors.cloud.tencent.com/rpmfusion/nonfree/fedora/steam/44/x86_64/s/steam-1.0.0.83-3.fc44.i686.rpm&lt;br /&gt;
* Install it with rpm2cpio steam-1.0.0.83-3.fc44.i686.rpm | cpio -idmv&lt;br /&gt;
* run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
=== ArchLinux ===&lt;br /&gt;
* Download the deb file from above&lt;br /&gt;
* Extract with ar x steam-launcher_latest_all.deb&lt;br /&gt;
* tar -xvf data.tar.xz&lt;br /&gt;
* copy the folders in to the root /&lt;br /&gt;
** Careful with using rsync here! It might overwrite your /usr symlink with a directory and break things!&lt;br /&gt;
** I'd recommend recursive cp instead.&lt;br /&gt;
* run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
=== 32-bit application under FEX ===&lt;br /&gt;
FEX is a 64bit AArch64 application. To get 32-bit applications like Steam running under FEX there we workarounds in place to get them working without kernel patches.&lt;br /&gt;
&lt;br /&gt;
This involves a userspace virtual memory allocator and ioctl emulation. Ideally we have kernel patches in place to have full coverage of ioctls but those patches are difficult to land upstream.&lt;br /&gt;
&lt;br /&gt;
There is an ongoing effort to upstream these kernel bits but the ARM kernel maintainers really don't want to support this use case.&lt;br /&gt;
For more information about the problems we encounter [[Development:32Bit_Syscall_Woes]]&lt;br /&gt;
&lt;br /&gt;
=== Setting environment variable STEAMOS and STEAM_RUNTIME ===&lt;br /&gt;
* export STEAMOS=1&lt;br /&gt;
* export STEAM_RUNTIME=1&lt;br /&gt;
Setting these environment variables skips Steam's bash script from checking for glibc and throwing a warning window&lt;br /&gt;
&lt;br /&gt;
Some additional arguments that can be helpful when tinkering. Don't use these unless you understand what you're breaking.&lt;br /&gt;
  -noverifyfiles -nobootstrapupdate -skipinitialbootstrap -norepairfiles -nodircheck -inhibitbootstrap -noassert&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
Steam is a very complex application which can cause FEX some pain.&lt;br /&gt;
The primary application is also a 32bit binary which requires kernel patches to run on AArch64 platforms.&lt;br /&gt;
&lt;br /&gt;
=== Steam crashing on startup ===&lt;br /&gt;
If steam has updated its runtime then it may have updated its pinned libraries and broke itself&lt;br /&gt;
&lt;br /&gt;
* Message: `Version `GCC_7.0.0' not found (required by /usr/lib/i386-linux-gnu/dri/msm_dri.so) (search paths /usr/lib/i386-linux-gnu/dri)`&lt;br /&gt;
&lt;br /&gt;
Going in to the runtime and deleting some libraries can help here.&lt;br /&gt;
&lt;br /&gt;
These live in $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/&lt;br /&gt;
&lt;br /&gt;
Delete the following files from that folder and it can help&lt;br /&gt;
&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libstdc++*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libxcb*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/libgcc_s*&lt;br /&gt;
&lt;br /&gt;
=== Game Library and other things not visible ===&lt;br /&gt;
Steam is using CEF (Chromium Embedded Framework) for large amounts of its library rendering&lt;br /&gt;
&lt;br /&gt;
This can be a bit buggy due to some circumstances. Either driver, CPU timeout, or other reasons.&lt;br /&gt;
&lt;br /&gt;
Known bits that use CEF&lt;br /&gt;
* Game Library (Switch over to Small Mode or Big Picture mode in the menu)&lt;br /&gt;
* Friends List&lt;br /&gt;
* Game properties window&lt;br /&gt;
* Storefront and other web views&lt;br /&gt;
* Game install window&lt;br /&gt;
&lt;br /&gt;
=== CEF crashing on startup ===&lt;br /&gt;
You may find messages in the steam log saying that steamwebhelper has failed to find symbols.&lt;br /&gt;
&lt;br /&gt;
You may need to remove some libraries from the steam-runtime to get past this point.&lt;br /&gt;
&lt;br /&gt;
This will let the steamwebhelper to use libraries from the rootfs instead of the steam-runtime&lt;br /&gt;
&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libz.so*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libfreetype.so.6*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libfontconfig.so.1*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libdbus-1.so*&lt;br /&gt;
&lt;br /&gt;
=== Long load times ===&lt;br /&gt;
Steam's load time can take a couple minutes. This is due to x87 utilization during initialization which is particularly slow. This will take some time to optimize.&lt;br /&gt;
It can look like Steam has hung while loading. Might be worth watching the process in something like htop to watch if it crashed or is running.&lt;br /&gt;
* Additionally Steam starts some background processes and if they hang or crash, then it takes a minute or two for that to timeout&lt;br /&gt;
** An example is if you stall steamwebhelper, it will hang for a while, seemingly waiting for the process.&lt;br /&gt;
Additionally it launches a few applications in the background that searches for things which can be a bit slow.&lt;br /&gt;
&lt;br /&gt;
== steamcmd ==&lt;br /&gt;
=== Installing ===&lt;br /&gt;
Follow Valve's guide for installing steamcmd manually [https://developer.valvesoftware.com/wiki/SteamCMD#Manually here]&lt;br /&gt;
or&lt;br /&gt;
  mkdir ~/Steam &amp;amp;&amp;amp; cd ~/Steam&lt;br /&gt;
  curl -sqL &amp;quot;https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz&amp;quot; | tar zxvf -&lt;br /&gt;
  FEXBash ./steamcmd.sh&lt;br /&gt;
&lt;br /&gt;
=== Running ===&lt;br /&gt;
Just execute steamcmd.sh under FEXBash&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Steam&amp;diff=1483</id>
		<title>Steam</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Steam&amp;diff=1483"/>
		<updated>2025-12-29T19:09:26Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing Steam to your host ==&lt;br /&gt;
We install Steam to the host OS to execute games from.&lt;br /&gt;
=== Debian and Ubuntu ===&lt;br /&gt;
Steps to install&lt;br /&gt;
* Download the official debian package from https://repo.steampowered.com/steam/archive/stable/&lt;br /&gt;
** Direct Debian package file link: https://repo.steampowered.com/steam/archive/stable/steam-launcher_latest_all.deb&lt;br /&gt;
* Install with `sudo apt install ./steam-launcher_latest_all.deb`&lt;br /&gt;
* Run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
* Download the x86 steam rpm from: https://mirrors.cloud.tencent.com/rpmfusion/nonfree/fedora/steam/44/x86_64/s/steam-1.0.0.83-3.fc43.i686.rpm&lt;br /&gt;
* Install it with rpm2cpio steam-1.0.0.83-3.fc43.i686.rpm | cpio -idmv&lt;br /&gt;
* run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
=== ArchLinux ===&lt;br /&gt;
* Download the deb file from above&lt;br /&gt;
* Extract with ar x steam-launcher_latest_all.deb&lt;br /&gt;
* tar -xvf data.tar.xz&lt;br /&gt;
* copy the folders in to the root /&lt;br /&gt;
** Careful with using rsync here! It might overwrite your /usr symlink with a directory and break things!&lt;br /&gt;
** I'd recommend recursive cp instead.&lt;br /&gt;
* run with `FEXBash steam`&lt;br /&gt;
&lt;br /&gt;
== Quirks ==&lt;br /&gt;
=== 32-bit application under FEX ===&lt;br /&gt;
FEX is a 64bit AArch64 application. To get 32-bit applications like Steam running under FEX there we workarounds in place to get them working without kernel patches.&lt;br /&gt;
&lt;br /&gt;
This involves a userspace virtual memory allocator and ioctl emulation. Ideally we have kernel patches in place to have full coverage of ioctls but those patches are difficult to land upstream.&lt;br /&gt;
&lt;br /&gt;
There is an ongoing effort to upstream these kernel bits but the ARM kernel maintainers really don't want to support this use case.&lt;br /&gt;
For more information about the problems we encounter [[Development:32Bit_Syscall_Woes]]&lt;br /&gt;
&lt;br /&gt;
=== Setting environment variable STEAMOS and STEAM_RUNTIME ===&lt;br /&gt;
* export STEAMOS=1&lt;br /&gt;
* export STEAM_RUNTIME=1&lt;br /&gt;
Setting these environment variables skips Steam's bash script from checking for glibc and throwing a warning window&lt;br /&gt;
&lt;br /&gt;
Some additional arguments that can be helpful when tinkering. Don't use these unless you understand what you're breaking.&lt;br /&gt;
  -noverifyfiles -nobootstrapupdate -skipinitialbootstrap -norepairfiles -nodircheck -inhibitbootstrap -noassert&lt;br /&gt;
&lt;br /&gt;
== Problems/Workarounds ==&lt;br /&gt;
Steam is a very complex application which can cause FEX some pain.&lt;br /&gt;
The primary application is also a 32bit binary which requires kernel patches to run on AArch64 platforms.&lt;br /&gt;
&lt;br /&gt;
=== Steam crashing on startup ===&lt;br /&gt;
If steam has updated its runtime then it may have updated its pinned libraries and broke itself&lt;br /&gt;
&lt;br /&gt;
* Message: `Version `GCC_7.0.0' not found (required by /usr/lib/i386-linux-gnu/dri/msm_dri.so) (search paths /usr/lib/i386-linux-gnu/dri)`&lt;br /&gt;
&lt;br /&gt;
Going in to the runtime and deleting some libraries can help here.&lt;br /&gt;
&lt;br /&gt;
These live in $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/&lt;br /&gt;
&lt;br /&gt;
Delete the following files from that folder and it can help&lt;br /&gt;
&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libstdc++*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libxcb*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/libgcc_s*&lt;br /&gt;
&lt;br /&gt;
=== Game Library and other things not visible ===&lt;br /&gt;
Steam is using CEF (Chromium Embedded Framework) for large amounts of its library rendering&lt;br /&gt;
&lt;br /&gt;
This can be a bit buggy due to some circumstances. Either driver, CPU timeout, or other reasons.&lt;br /&gt;
&lt;br /&gt;
Known bits that use CEF&lt;br /&gt;
* Game Library (Switch over to Small Mode or Big Picture mode in the menu)&lt;br /&gt;
* Friends List&lt;br /&gt;
* Game properties window&lt;br /&gt;
* Storefront and other web views&lt;br /&gt;
* Game install window&lt;br /&gt;
&lt;br /&gt;
=== CEF crashing on startup ===&lt;br /&gt;
You may find messages in the steam log saying that steamwebhelper has failed to find symbols.&lt;br /&gt;
&lt;br /&gt;
You may need to remove some libraries from the steam-runtime to get past this point.&lt;br /&gt;
&lt;br /&gt;
This will let the steamwebhelper to use libraries from the rootfs instead of the steam-runtime&lt;br /&gt;
&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libz.so*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libfreetype.so.6*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libfontconfig.so.1*&lt;br /&gt;
* rm $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/lib/x86_64-linux-gnu/libdbus-1.so*&lt;br /&gt;
&lt;br /&gt;
=== Long load times ===&lt;br /&gt;
Steam's load time can take a couple minutes. This is due to x87 utilization during initialization which is particularly slow. This will take some time to optimize.&lt;br /&gt;
It can look like Steam has hung while loading. Might be worth watching the process in something like htop to watch if it crashed or is running.&lt;br /&gt;
* Additionally Steam starts some background processes and if they hang or crash, then it takes a minute or two for that to timeout&lt;br /&gt;
** An example is if you stall steamwebhelper, it will hang for a while, seemingly waiting for the process.&lt;br /&gt;
Additionally it launches a few applications in the background that searches for things which can be a bit slow.&lt;br /&gt;
&lt;br /&gt;
== steamcmd ==&lt;br /&gt;
=== Installing ===&lt;br /&gt;
Follow Valve's guide for installing steamcmd manually [https://developer.valvesoftware.com/wiki/SteamCMD#Manually here]&lt;br /&gt;
or&lt;br /&gt;
  mkdir ~/Steam &amp;amp;&amp;amp; cd ~/Steam&lt;br /&gt;
  curl -sqL &amp;quot;https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz&amp;quot; | tar zxvf -&lt;br /&gt;
  FEXBash ./steamcmd.sh&lt;br /&gt;
&lt;br /&gt;
=== Running ===&lt;br /&gt;
Just execute steamcmd.sh under FEXBash&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Development:32Bit_Syscall_Woes&amp;diff=1482</id>
		<title>Development:32Bit Syscall Woes</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Development:32Bit_Syscall_Woes&amp;diff=1482"/>
		<updated>2025-12-01T00:33:27Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Syscall problems ==&lt;br /&gt;
We are always running as a 64bit process. Either x86-64 or AArch64 at the moment.&lt;br /&gt;
A large number of syscalls require struct rewriting. This is entirely expected and is something we have to just deal with.&lt;br /&gt;
This is mostly a manual process of defining the 32bit structure layout and remapping the host's structure in to the 32bit x86 structure.&lt;br /&gt;
&lt;br /&gt;
== mmap and mmap2 - 90/192 ==&lt;br /&gt;
32bit mmap must return pointers in the lower 32bit memory space.&lt;br /&gt;
We can get around this by having an allocator that does placement of pointers with mmap manually.&lt;br /&gt;
One of the issues with this approach is that the kernel has more knowledge about the memory arrangement, so if any ioctl allocates memory behind our back it'll desync our allocator.&lt;br /&gt;
Means that our allocator must always be allowed to fail and try and allocate forward until it has either wrapped around or found a location.&lt;br /&gt;
We will always end up with holes in our bitmap because ioctls will have consumed space.&lt;br /&gt;
&lt;br /&gt;
=== Possible Fixes ===&lt;br /&gt;
* MAP_32BIT&lt;br /&gt;
** Doesn't exist on AArch64&lt;br /&gt;
** Only allows allocation in the range of [0x4000'0000, 0x8000'0000) (1GB) instead of the full lower 32bits&lt;br /&gt;
** Not a real solution&lt;br /&gt;
* New Flag: MAP_FULL_32BIT&lt;br /&gt;
** Make it available on AArch64 and x86-64 (For compatibility testing)&lt;br /&gt;
** Allow it to map the full 32bit memory space&lt;br /&gt;
** Should be fine to allow 64bit address and 64bit pgoff to allow mmap2 behaviour&lt;br /&gt;
* New syscall: mmap_range - **Ideal solution**&lt;br /&gt;
** Instead of a single address, pass in a lower bound and upper bound address&lt;br /&gt;
** ERANGE if one of the addresses live outside of viable range? Or silently clamp?&lt;br /&gt;
** MAP_FIXED{_NOREPLACE} ignores upper range argument, places at lower?&lt;br /&gt;
** Bit more code work to punch it through everywhere&lt;br /&gt;
* Do userspace bitmap allocator&lt;br /&gt;
** Puts the burden on FEX to use MAP_FIXED_NOREPLACE for anything that hasn't set MAP_FIXED or MAP_FIXED_NOREPLACE&lt;br /&gt;
** We don't have the full VMA view so it must always be pessimistic about failures and keep trying on failure&lt;br /&gt;
** Will always gave higher overhead&lt;br /&gt;
** HUGETLB is an annoyance to reimplement&lt;br /&gt;
&lt;br /&gt;
=== Current implementation ===&lt;br /&gt;
* Map the full [0x1'0000'0000, 0x1'0000'0000'0000) range on application startup&lt;br /&gt;
** This is 256TB subtract 4GB of range&lt;br /&gt;
* Once the 256TB of space is allocated, use an internal allocator for the host side allocations.&lt;br /&gt;
** FEX itself won't ever use any of:&lt;br /&gt;
*** mmap without MAP_FIXED placement&lt;br /&gt;
*** mremap without MREMAP_FIXED allocation&lt;br /&gt;
*** shmat (at all, can't control placement)&lt;br /&gt;
*** ioctl (at all)&lt;br /&gt;
&lt;br /&gt;
== mremap - 163 ==&lt;br /&gt;
Allows userspace to remap an allocation from an old size to a new size, with the possibility to move to a new address.&lt;br /&gt;
MREMAP_FIXED allows the application to remap the address to a new fixed location. This isn't a problem.&lt;br /&gt;
MREMAP_MAYMOVE allows the kernel to select a new memory region on resize if the previous VM location wouldn't fit. This is a problem.&lt;br /&gt;
&lt;br /&gt;
Specifically MREMAP_FIXED means that we will have to attempt scanning the memory region with mmap first, then once we found a valid location. Do an mremap on that location with MREMAP_FIXED. This can be a race condition.&lt;br /&gt;
&lt;br /&gt;
On move the kernel may end up moving a VM range to the 64bit range, which would break things&lt;br /&gt;
&lt;br /&gt;
=== Possible fixes ===&lt;br /&gt;
* With support from the previous userspace bitmap allocator&lt;br /&gt;
** This would allow us to find a new memory region to remap the location to&lt;br /&gt;
** Performance concern since we fall down the same pessimistic path that mmap needs to hit&lt;br /&gt;
* New flag: MREMAP_FULL_32BIT&lt;br /&gt;
** Just like the mmap new flag, limit mremap to the full lower 32bits&lt;br /&gt;
** Would leave the burden of support to the kernel since it has the full VMA view&lt;br /&gt;
* New flag: MREMAP_FIXED_NOREPLACE&lt;br /&gt;
** Just like mmap's MAP_FIXED_NOREPLACE but for mremap&lt;br /&gt;
** Makes the bitmap allocator path less of a race condition to implement.&lt;br /&gt;
* New syscall: mremap_range&lt;br /&gt;
** Just like the mmap new syscall, provide a address range that is viable&lt;br /&gt;
&lt;br /&gt;
=== Current implementation ===&lt;br /&gt;
See mmap/mmap2 current implementation&lt;br /&gt;
&lt;br /&gt;
== shmat - 397 ==&lt;br /&gt;
Allows userspace to attach a SHM region to an address of the process.&lt;br /&gt;
If the passed in address is nullptr then the kernel is allowed to choose the address to map the region.&lt;br /&gt;
This can end up mapping the region to 64bit space, which will obviously break things&lt;br /&gt;
Using the address of null is preferred by docs as the portable utilization.&lt;br /&gt;
&lt;br /&gt;
=== Possible fixes ===&lt;br /&gt;
* With support from the previous userspace bitmap allocator&lt;br /&gt;
** Will allow us to find a new memory region&lt;br /&gt;
** Same performance concerns&lt;br /&gt;
** shmat behaves like MAP_FIXED_NOREPLACE, will return EINVAL if the memory region is already mapped (Unless SHM_REMAP specified)&lt;br /&gt;
* New Flag: SHM_FULL_32BIT&lt;br /&gt;
** Just like the mmap flag, limits the shmat behaviour to 32bits&lt;br /&gt;
* New Syscall: shmat_range&lt;br /&gt;
** Just like mmap_range, limits to address range provided&lt;br /&gt;
&lt;br /&gt;
=== Current implementation ===&lt;br /&gt;
See mmap/mmap2 current implementation&lt;br /&gt;
&lt;br /&gt;
== ioctl - 54 ==&lt;br /&gt;
Linux branch: https://github.com/Sonicadvance1/linux/tree/fex_ioctl32&lt;br /&gt;
=== Possible fixes ===&lt;br /&gt;
* Userspace ioctl structure parsing&lt;br /&gt;
** Prone to failure&lt;br /&gt;
** Requires userspace to constantly be tracking upstream support of ioctls&lt;br /&gt;
** Ioctls allocating any sort of memory will likely break and can't be worked around&lt;br /&gt;
** Any ioctls changing will be difficult to track (doesn't happen often but it does)&lt;br /&gt;
** Will always be a subset of the full kernel ioctl support&lt;br /&gt;
** Not a good solution&lt;br /&gt;
* Implement new compat_ioctl syscall&lt;br /&gt;
** Allows us to call the 32bit ioctl syscall from 64bit userspace&lt;br /&gt;
** Proven to work locally with some hiccups&lt;br /&gt;
** Tracks the regular compat_ioctl support in the kernel so it'll always be up to date&lt;br /&gt;
** Requires CONFIG_COMPAT in the kernel to be supported&lt;br /&gt;
** Might hit problems if the ioctl checks the process type instead of where the entry was from.&lt;br /&gt;
* Expose compat_ioctl to symbols for modules to use&lt;br /&gt;
** Allows FEX to load a kernel module for 32bit support&lt;br /&gt;
** Exposes the compat_ioctl syscall interface through the module through a 64bit ioctl interface&lt;br /&gt;
** Might hit problems if the ioctl checks the process type instead of where the entry was from.&lt;br /&gt;
&lt;br /&gt;
=== Possible Problems ===&lt;br /&gt;
**Some ioctls use `compat_alloc_user_space` to allocate temporary data on to the stack.**&lt;br /&gt;
&lt;br /&gt;
Depending on architecture, this may or may not return a 64bit stack offset.&lt;br /&gt;
* On x86-64 it returns a 32bit truncated stack pointer&lt;br /&gt;
* On AArch64 it returns the full 64bit stack pointer&lt;br /&gt;
&lt;br /&gt;
Users of this helper may or may not expect a 64bit pointer.&lt;br /&gt;
From the 29 users of this helper in the kernel this may be easy enough to resolve.&lt;br /&gt;
&lt;br /&gt;
=== Possible Fixes ===&lt;br /&gt;
* Enforce that this may return a stack that is in 64bit space&lt;br /&gt;
** Might cause headaches for kernel developers that are expecting compat ioctls to only ever have 32bit pointers&lt;br /&gt;
** From the low amount of users it may still be fine?&lt;br /&gt;
** sound drivers, socket drivers, usb drivers, &lt;br /&gt;
* Allocate host stack in 32bit space&lt;br /&gt;
** This works around the issue by the host stack living in 32bit space&lt;br /&gt;
** Major problem is that now we have two stacks living in 32bit space PER THREAD.&lt;br /&gt;
** We don't want to take up more of the limited 32bit address space than we have to&lt;br /&gt;
*** Per-thread VMA regions for stack would be a viable solution, needs support in kernel&lt;br /&gt;
*** New mmap flag MAP_THREAD_VMA?&lt;br /&gt;
*** Something like this might already exist in the form of the kernel vmacache?&lt;br /&gt;
*** Each (emulator) thread's stack lives at the same VM location, and special care to be taken to not try and pass that region to another thread&lt;br /&gt;
*** Set up a mirror to another region so if we absolutely need to pull that threads data from another thread, Index + offset in to the mirrored backing buffer, which is mapped for the full process VMA.&lt;br /&gt;
**** We don't want to remove CLONE_VM from clone, since that will cause significantly more problems&lt;br /&gt;
*** 32bit already runs out of memory space, doubling the number of stacks means that each thread's initial memory usage is literally double.&lt;br /&gt;
* Allocate a couple pages to do a stack pivot before each 32bit ioctl&lt;br /&gt;
** As long as these don't ever try and allocate a large amount of data then a couple of pages per thread isn't terrible&lt;br /&gt;
** Just means every 32bit ioctl will need some number of pages allocated for the chance of a pivot.&lt;br /&gt;
** 65k per thread? Might be fine, haven't tested&lt;br /&gt;
&lt;br /&gt;
=== Some ioctls check the current operating mode of the process to change behaviour ===&lt;br /&gt;
&lt;br /&gt;
ioctl's can check the task struct to see if the task is a 32bit or 64bit task.&lt;br /&gt;
This will change behaviour since anything operating under FEX will end up being a 64bit task.&lt;br /&gt;
Current workaround is that every ioctl32 is modifying that task flag before and after the internal ioctl call.&lt;br /&gt;
* Is the ioctl is interrupted, this would stick the system in to a weird state?&lt;br /&gt;
* We probably need to pass a compat flag through somewhere?&lt;br /&gt;
** x86-64 `current_thread_info()-&amp;gt;status |= TS_COMPAT;`&lt;br /&gt;
** AArch64 `set_thread_flag(TIF_32BIT)`&lt;br /&gt;
** Setting these flags outside of the 32bit trampoline handling will cause issues with interrupting syscalls&lt;br /&gt;
&lt;br /&gt;
=== Any ioctl that allocates memory needs to be aware that if it is in a compat ioctl that it is only allocated in 32bit space ===&lt;br /&gt;
&lt;br /&gt;
* This should theoretically already be available for x32 ABI but might be partially broken&lt;br /&gt;
* FEX will work around it by stealing all of the 64bit VMA space, so nothing can allocate in the high bits&lt;br /&gt;
* Would be nicer to enforce that compat_ioctl memory allocations must be in the lower 32bits&lt;br /&gt;
** Hard to guarantee.&lt;br /&gt;
&lt;br /&gt;
**Struct packing is and will have problems between architectures**&lt;br /&gt;
* Very specifically u64 has 4byte alignment on x86 while it will have 8 byte alignment on aarch64 (and aarch32 compat?)&lt;br /&gt;
** I believe something that crosses the 64byte boundary has different alignment requirements as well?&lt;br /&gt;
* Haven't encountered any ioctls yet that cause an issue&lt;br /&gt;
** Once discovered, either work with upstream and project to identify a path to move forward making it compatible&lt;br /&gt;
** Or if it is an application that shouldn't be running on ARM anyway, put in an application profile claiming its ioctls are broken&lt;br /&gt;
** Only solution is ioctl translation layer at that point otherwise, if it is an application we care about.&lt;br /&gt;
&lt;br /&gt;
=== Allocating upper 64-bits of VA space means stack growing no longer works ===&lt;br /&gt;
&lt;br /&gt;
Host application has stolen all the memory. It can no longer grow the host application's VA space.&lt;br /&gt;
* MAP_GROWSUP and MAP_GROWSDOWN&lt;br /&gt;
&lt;br /&gt;
=== IOCTL number conflicts are non-trivial to resolve in userspace ===&lt;br /&gt;
* Just take a look at ioctl-number.rst, there are 123 instances of conflict in there&lt;br /&gt;
* Trying to resolve conflicts back to the correct device? How?&lt;br /&gt;
** Even Qemu doesn't even try to figure this out.&lt;br /&gt;
** Even Strace doesn't try to figure this out&lt;br /&gt;
** Turns out that resolving an ioctl command conflict is impossible from userspace&lt;br /&gt;
&lt;br /&gt;
=== Current implementation ===&lt;br /&gt;
See mmap/mmap2 current implementation to handle memory allocation problems.&lt;br /&gt;
&lt;br /&gt;
* Track every single ioctl the system could possibly make&lt;br /&gt;
* If an unknown ioctl is hit, try and pass it through to the kernel and hope for the best&lt;br /&gt;
* Periodically audit the kernel and hope no new ioctls break us&lt;br /&gt;
** DRM is audited every kernel version since games are a major focus.&lt;br /&gt;
&lt;br /&gt;
* '''Ioctls mostly emulated'''&lt;br /&gt;
** asound&lt;br /&gt;
** streams&lt;br /&gt;
** usbdev&lt;br /&gt;
** input&lt;br /&gt;
** sockios&lt;br /&gt;
** joystick&lt;br /&gt;
** wireless&lt;br /&gt;
** DRM&lt;br /&gt;
*** amdgpu&lt;br /&gt;
*** msm&lt;br /&gt;
*** i915&lt;br /&gt;
*** lima&lt;br /&gt;
*** panfrost&lt;br /&gt;
*** nouveau&lt;br /&gt;
*** vc4&lt;br /&gt;
*** v4d&lt;br /&gt;
*** virtio&lt;br /&gt;
&lt;br /&gt;
== sendmsg, recvmsg, sendmmsg, recvmmsg - (socketcall) 102, 370, 372, 345, 337/417 ==&lt;br /&gt;
This is easy to break.&lt;br /&gt;
It is also prone to breaking.&lt;br /&gt;
If the user application is shipping auxiliary channel data over with exact sized packets. They can be expecting to read exactly that amount of data.&lt;br /&gt;
FEX must munge the data because of pointer size differences. Because of this we need to provide buffers to the kernel interface that is significantly larger than what the application provides.&lt;br /&gt;
This can end up reading more data then the application expects. It can be expecting exact sized packets which we break.&lt;br /&gt;
This potential footgun on the application facing side turns in to an even larger footgun on the FEX side.&lt;br /&gt;
&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Try to patch up the data as well as we can and just eat the fact that guest applications could accidentally read too much data and lose it.&lt;br /&gt;
&lt;br /&gt;
== Getdents family ==&lt;br /&gt;
Behaviour changes between 32bit and 64bit and can't be directly emulated.&lt;br /&gt;
Recreate whatever hashing algorithm that the kernel uses for the 32-bit side, pass it to the guest?&lt;br /&gt;
This needs to match behaviour for an application doing getdents64 in a 64-bit processing and passing that data off to a 32-bit process.&lt;br /&gt;
&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
* getdents - Emulating with getdents and rewriting all elements&lt;br /&gt;
* getdents64 - overwriting d_off to be a incrementing number and hoping nothing uses it&lt;br /&gt;
&lt;br /&gt;
== Robust list/futex family ==&lt;br /&gt;
Zero access to the 32bit robust list without a syscall API.&lt;br /&gt;
Mixture of host and guest robust futexes result in pain.&lt;br /&gt;
Can't emulate due to the robustness of the feature.&lt;br /&gt;
Giving an API for multiple robust list tracking wouldn't be all-encompassing since we still have a 32-bit robust list that needs to be handed to the kernel.&lt;br /&gt;
&lt;br /&gt;
=== Possible fixes ===&lt;br /&gt;
* Implement a new key based robust list syscall&lt;br /&gt;
** Instead of just having a single robust list per process (technically two for x86-64)&lt;br /&gt;
** Implement a new syscall for giving the kernel multiple robust lists tied to a key&lt;br /&gt;
** Like pkey_alloc and pkey_free&lt;br /&gt;
** Ensure it has a flag for 32-bit pointer list or not&lt;br /&gt;
** This way the kernel will know if the passed in linked list should be tracked using 32-bit pointers or 64-bit pointers.&lt;br /&gt;
&lt;br /&gt;
  enum robust_list_op {&lt;br /&gt;
    OP_ALLOC,&lt;br /&gt;
    OP_FREE,&lt;br /&gt;
    OP_REGISTER,&lt;br /&gt;
    OP_GET,&lt;br /&gt;
  };&lt;br /&gt;
  enum ROBUST_LIST_TYPE {&lt;br /&gt;
    TYPE_ROBUST_32BIT,&lt;br /&gt;
    TYPE_ROBUST_64BIT,&lt;br /&gt;
  };&lt;br /&gt;
  void* robust_list_ctl(robust_list_op op, ...);&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  // Allocate a robust list object&lt;br /&gt;
  int robust_list_ctl(OP_ALLOC); // Returning a key object on success. Default NULL list head.&lt;br /&gt;
&lt;br /&gt;
  // Free a robust list object&lt;br /&gt;
  int robust_list_ctl(OP_FREE, &amp;lt;int key&amp;gt;); // Taking a key object as an argument. Error on invalid key. Removes robust list from kernel tracking.&lt;br /&gt;
&lt;br /&gt;
  // Register a robust futex list to an object.&lt;br /&gt;
  // Taking a 64-bit robust futex linked list just like set_robust_list&lt;br /&gt;
  // Overwriting any previously written list.&lt;br /&gt;
  int robust_list_ctl(OP_REGISTER, &amp;lt;int key&amp;gt;, TYPE_ROBUST_64BIT, &amp;lt;struct robust_list_head **head_ptr&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
  // Register a compat capable robust futex list to an object&lt;br /&gt;
  // Taking a 32-bit pointer packed robust futex list.&lt;br /&gt;
  // Just like 32-bit compat set_robust_list&lt;br /&gt;
  // Overwriting any previously written list.&lt;br /&gt;
  int robust_list_ctl(OP_REGISTER, &amp;lt;int key&amp;gt;, TYPE_ROBUST_32BIT, &amp;lt;compat_ptr_list(struct robust_list_head **)head_ptr&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
  // Get the current pointer that a robust_futex_object points to. Just like get_robust_list&lt;br /&gt;
  // Returns either a 32-bit or 64-bit head_ptr depending on registered type.&lt;br /&gt;
  &amp;lt;struct robust_list_head **head_ptr&amp;gt; robust_list_ctl(OP_GET, &amp;lt;int key&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
=== Current implementation ===&lt;br /&gt;
* 64-bit processes&lt;br /&gt;
** Pass the robust list through so the kernel is tracking the guest application's robust list&lt;br /&gt;
** This means FEX itself can't use any robust futexes&lt;br /&gt;
* 32-bit processes&lt;br /&gt;
** Lie to them and say it is getting tracked, won't actually work.&lt;br /&gt;
&lt;br /&gt;
== Get/Set sockopt ==&lt;br /&gt;
Some options rely on the level and type of socket referred to by the passed in file descriptor.&lt;br /&gt;
Currently SOL_SOCKET is fixed up inside of FEX but there are more options that check if they are coming from a compatibility syscall.&lt;br /&gt;
FEX will have a hard time emulating this since it can't track what all FDs are. Especially ones passed with SCM_RIGHTS.&lt;br /&gt;
&lt;br /&gt;
=== Possible fixes ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Read/Write syscalls providing different data depending on process bitness ==&lt;br /&gt;
Means gamepad input/output is completely broken for 32-bit emulated processes.&lt;br /&gt;
&lt;br /&gt;
=== Current implementation ===&lt;br /&gt;
Just be broken, or downstream patches to enable &amp;quot;compat&amp;quot; read/write&lt;br /&gt;
* https://github.com/FEX-Emu/FEX/pull/4106&lt;br /&gt;
* https://github.com/slp/linux/commit/897560fd00e1add63a9973c31fc437b006855680&lt;br /&gt;
&lt;br /&gt;
== io_uring - '''Happens on x86-64 as well''' ==&lt;br /&gt;
The queues can have `epoll_event` objects encoded in them. These are packed 12-byte structs on x86/x86-64, but 16-byte on other architectures. We can't reasonably re-encode these user-queues.&lt;br /&gt;
&lt;br /&gt;
=== Possible fixes ===&lt;br /&gt;
A flag to io_uring setup that epoll_event must be packed like x86?&lt;br /&gt;
&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Disabled&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
	<entry>
		<id>https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1481</id>
		<title>Interesting ARM64 Platforms</title>
		<link rel="alternate" type="text/html" href="https://wiki.fex-emu.com/index.php?title=Interesting_ARM64_Platforms&amp;diff=1481"/>
		<updated>2025-11-21T03:50:07Z</updated>

		<summary type="html">&lt;p&gt;Sonicadvance1: /* Steam Frame - Upcoming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brain dump of &amp;quot;actively&amp;quot; interesting ARM64 platforms, mostly from Sonicadvance1. It's hard to remember which platforms are actively interesting for FEX development and usage. Definitely some bias in here.&lt;br /&gt;
&lt;br /&gt;
== Platforms that can accept a GPU ==&lt;br /&gt;
=== &amp;quot;Consumer&amp;quot; platforms  ===&lt;br /&gt;
==== Radxa Orion O6 - '''Current recommended''' ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 54w on the PCIe bus, but supports ATX PSUs to make things easier.&lt;br /&gt;
* 12 core system - 4xA720+4xA720+4xA520&lt;br /&gt;
* Can be run on upstream kernel with some bugs&lt;br /&gt;
* Price is reasonable&lt;br /&gt;
* Supports SVE2 and a bunch of extensions, unlike Snapdragon platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* CPU Clock speeds aren't quite what are advertised&lt;br /&gt;
** Seems to be a firmware bug, might get fixed.&lt;br /&gt;
* Performance isn't as good as newest devices, but significantly better than Jetson Orin&lt;br /&gt;
* 5gbit ethernet seems to saturate at 2gbit due to soft-irq overhead. Better than 1gbit at least.&lt;br /&gt;
* USB connections over a USB 3 hub sometimes can't allocate resources?&lt;br /&gt;
** No idea what this error is about.&lt;br /&gt;
* Memory bandwidth is significantly lower than the 128-bit bus implies.&lt;br /&gt;
** Advertised &amp;gt;100GB/s, can barely crack 40GB/s in a multithreaded CPU microbench, single threaded is worse at ~16GB/s.&lt;br /&gt;
* Still the recommended platform for developing because the pros outweigh the cons&lt;br /&gt;
&lt;br /&gt;
===== GPUs tested =====&lt;br /&gt;
* Tested under ACPI configuration with upstream kernels&lt;br /&gt;
* Tested with BIOS 0.2.2-1, 9.0 just caused a hang early in kernel boot.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Radeon GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA1) Radeon RX 5700 || ✅ Works || ✅ Works&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA2) Radeon Pro W6400 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA3) Radeon Pro W7500 || ✅ Works || ❌ Doesn't work&lt;br /&gt;
|-&lt;br /&gt;
| (RDNA4) Radeon RX 9070 || ❌ Minimum Kernel is v6.13 || ❌ Doesn't work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Intel GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Xe2) Arc B580 || ❌ Needs newer kernel || ❌ Hangs when GPU tries coming online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ NVIDIA GPU and kernel version testing matrix&lt;br /&gt;
|-&lt;br /&gt;
! '''GPU''' !! Linux v6.11 !! Linux v6.14&lt;br /&gt;
|-&lt;br /&gt;
| (Ada) RTX 4000 SFF || ❌ Doesn't show up on bus || ❌ Doesn't show up on bus&lt;br /&gt;
|}&lt;br /&gt;
==== Snapdragon X2 Elite - '''Upcoming''' ====&lt;br /&gt;
* Not yet shipping&lt;br /&gt;
* CPU performance looks pretty interesting&lt;br /&gt;
* has 16 PCIe lanes&lt;br /&gt;
** 12 lanes of PCIe 5.0&lt;br /&gt;
** 4 lanes of PCIe 4.0&lt;br /&gt;
* Supports SVE2 and SME(2?)&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Unknown if we're getting a platform with a PCIe slot&lt;br /&gt;
** Additionally unknown if PCIe slots can take a GPU&lt;br /&gt;
* No platforms announced currently&lt;br /&gt;
* RNG extension might still be broken&lt;br /&gt;
* iGPU currently unsupported in Freedreno/Turnip&lt;br /&gt;
** New Adreno 8xx class&lt;br /&gt;
&lt;br /&gt;
==== Jetson Orin ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* PCIe can support a full Radeon GPU without issue&lt;br /&gt;
** Only 55W on the PCIe bus, so a bit underpowered.&lt;br /&gt;
** Needs external power for larger GPUs&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged atomics on its Cortex-A78AE cores, so performance isn't good&lt;br /&gt;
** Errata 1951502&lt;br /&gt;
* Needs a kernel recompile on upstream Linux to enable the amdgpu kernel module&lt;br /&gt;
* Setting up can be a bit of a pain, but boots upstream kernel&lt;br /&gt;
&lt;br /&gt;
==== [https://www.nvidia.com/en-us/products/workstations/dgx-spark/ NVIDIA DGX Spark] ====&lt;br /&gt;
===== Features =====&lt;br /&gt;
* 20 core CPU. 10 Cortex-X925 cores and 10 Cortex-A725&lt;br /&gt;
* Four USB-C 4 40gbit ports.&lt;br /&gt;
* $3000 beginning price&lt;br /&gt;
* $4000 for the fancy NVIDIA DGX case.&lt;br /&gt;
&lt;br /&gt;
===== Unknowns =====&lt;br /&gt;
* USB-C 40gbit ports. Unknown if Thunderbolt and eGPUs work in Linux yet.&lt;br /&gt;
** If eGPUs don't work then hard to care about until Mesa/Nouveau/NVK support lands.&lt;br /&gt;
&lt;br /&gt;
==== Snapdragon X Elite ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Can have three Thunderbolt ports&lt;br /&gt;
* SoC also has 8x PCIe lane PHY&lt;br /&gt;
** Theoretically can accept GPU on at least the 8x PCIe PHY&lt;br /&gt;
* Reasonable CPU performance, if a little underwhelming&lt;br /&gt;
* Lots of laptop devices to choose from&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Linux doesn't yet support Thunderbolt on this platform&lt;br /&gt;
** GPU on Thunderbolt might not work&lt;br /&gt;
* No platform with 8x PCIe lanes exposed&lt;br /&gt;
** Snapdragon dev kit has a PCIe slot inside of it that isn't wired up&lt;br /&gt;
** Wouldn't work without device tree changes anyway&lt;br /&gt;
** Maybe someone will eventually ship hardware with these PCIe lanes exposed&lt;br /&gt;
* '''Snapdragon Dev kit was cancelled'''&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
All of these are very expensive and not really worth buying as a consumer&lt;br /&gt;
==== NVIDIA Grace ====&lt;br /&gt;
Grace-Hopper and Grace-Grace platform has a large number of Neoverse-V2 cores. Very expensive platform, and Grace-Grace not actually available.&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Really expensive. $40k to $100k+&lt;br /&gt;
* Grace-Grace 144 core not really available&lt;br /&gt;
&lt;br /&gt;
==== AmpereOne ====&lt;br /&gt;
Only just now becoming available in October 2024.&lt;br /&gt;
No workstation platform available yet. AMPONED8-2T motherboard isn't publicly available yet.&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* A96-37X SKU would likely be great in a desktop platform, but not available&lt;br /&gt;
* Custom CPU cores, not as high performance as Grace or very latest consumer platforms&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Untested but PCIe should be fixed&lt;br /&gt;
&lt;br /&gt;
== Platforms that can '''not''' accept a GPU ==&lt;br /&gt;
=== Consumer platforms ===&lt;br /&gt;
==== All Apple Silicon devices ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Highest performing ARMv8/ARMv9 CPUs today&lt;br /&gt;
* Parallels/UTM VM available in MacOS for all devices&lt;br /&gt;
* Asahi Linux supported for M1/M2 Pro/Max/Ultra for native Linux&lt;br /&gt;
** But breaks FEX because of 16KB pages&lt;br /&gt;
** Big work in progress to get a VM running FEX with 4k pages and virtio-gpu&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Thunderbolt can't accept GPUs&lt;br /&gt;
** This is due to Dart/IOMMU problems and memory mapping problems.&lt;br /&gt;
** Asahi linux has some documentation on this failure&lt;br /&gt;
* Mac Pro PCIe slots have the same issue, so nothing solved on that platform&lt;br /&gt;
&lt;br /&gt;
=== Server platforms ===&lt;br /&gt;
==== Ampere Altra ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* Has some desktop-like systems created by System76 and Avantek.&lt;br /&gt;
** Fairly pricey compared to the smaller platforms.&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* Has bugged PCIe fabric that requires kernel workarounds to get GPUs working on it&lt;br /&gt;
** Doesn't fully solve the problem, latest Radeons still don't work&lt;br /&gt;
* Old CPU cores based on Neoverse-N1&lt;br /&gt;
* Not recommended unless you need a lot of cores&lt;br /&gt;
&lt;br /&gt;
==== Jetson Thor ====&lt;br /&gt;
===== Behaviour =====&lt;br /&gt;
* 14x Neoverse-V3AE cores&lt;br /&gt;
** 2.6Ghz&lt;br /&gt;
* 128GB LPDDR5X, 273GB/s&lt;br /&gt;
* 8TFLOP Blackwell iGPU&lt;br /&gt;
* 130w TDP&lt;br /&gt;
&lt;br /&gt;
===== Problems =====&lt;br /&gt;
* They removed the PCIe slot this generation!&lt;br /&gt;
** Only supports PCIe arrangements of 1x + 1x + 2x + 8x (or 4x) off the module board.&lt;br /&gt;
* Unknown if the M.2 slot used for NVMe/booting can be used with a PCIe riser and dGPU.&lt;br /&gt;
** [https://forums.developer.nvidia.com/t/jetson-agx-thor-developer-kit-removed-the-pcie-slot/338524/2 Claims to not support a dGPU on the M.2 slot.]&lt;br /&gt;
** Quote from kayccc: '''For dGPU attached is not supported, and suggest to use IGX, see IGX | Industrial-Grade Edge AI platform | NVIDIA'''&lt;br /&gt;
* No IGX/Clara platform announced with PCIe switch off 8x root node.&lt;br /&gt;
* CPU performance isn't as high as Neoverse-V3AE should be.&lt;br /&gt;
** Memory bus problems or something?&lt;br /&gt;
&lt;br /&gt;
== Misc Platforms ==&lt;br /&gt;
=== Raspberry Pi 4/5 ===&lt;br /&gt;
* Low-cost&lt;br /&gt;
* Low-performance&lt;br /&gt;
* Not really worth using&lt;br /&gt;
* GPU doesn't have enough features for DXVK/VKD3D&lt;br /&gt;
** Limited performance means that even when games run, likely limited to very low-end indie devices.&lt;br /&gt;
* PCIe is bugged and requires nasty kernel work arounds to have a GPU plugged in&lt;br /&gt;
** Not recommended&lt;br /&gt;
&lt;br /&gt;
=== RK3588 boards ===&lt;br /&gt;
* Old CPU cores, Cortex-A76&lt;br /&gt;
* Mali GPU which doesn't support enough features for DXVK/VKD3D&lt;br /&gt;
** Mesa drivers don't have enough features.&lt;br /&gt;
&lt;br /&gt;
=== [https://store.steampowered.com/sale/steamframe Steam Frame] - '''Upcoming''' ===&lt;br /&gt;
==== Behaviour ====&lt;br /&gt;
* Snapdragon 8 Gen 3 based platform&lt;br /&gt;
* 16GB of RAM&lt;br /&gt;
* SteamOS, Arch based Linux&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* No dGPU support&lt;br /&gt;
** Has a PCIe 4.0 1x lane, maybe someone can glue a GPU on to it?&lt;br /&gt;
* Not a traditional form factor&lt;/div&gt;</summary>
		<author><name>Sonicadvance1</name></author>
	</entry>
</feed>