Retroarch doesn't find Vega M GL, only iGPU

I’ve got a machine with one of the weird frankenstein Kaby Lake G 8705-G processors – it’s got both an Intel HD 630 and a Vega M GL GPU. I’ve installed the latest drivers available (including the Vega M driver from Intel). None of Retroarch’s graphics drivers recognize the Vega M GL at startup, however. Here’s the log when using Vulkan:

[INFO] RetroArch 1.7.5 (Git 826c77d523) [INFO] === Build ======================================= [INFO] Version: 1.7.5 [INFO] Git: 826c77d523 [INFO] ================================================= [INFO] Environ SET_PIXEL_FORMAT: RGB565. [INFO] Redirecting save file to “C:\Users\rflye\AppData\Roaming\RetroArch\saves.srm”. [INFO] Redirecting savestate to “C:\Users\rflye\AppData\Roaming\RetroArch\states.state”. [INFO] Version of libretro API: 1 [INFO] Compiled against API: 1 [INFO] [Audio]: Set audio input rate to: 29970.03 Hz. [INFO] [Video]: Video @ fullscreen [INFO] Vulkan dynamic library loaded. [INFO] [Vulkan]: Detecting screen resolution 1920x1080. [INFO] [Vulkan]: Using GPU: Intel® HD Graphics 630 [INFO] [Vulkan]: Queue family 0 supports 1 sub-queues. [INFO] [Vulkan]: Swapchain supports present mode: 0. [INFO] [Vulkan]: Swapchain supports present mode: 2. [INFO] [Vulkan]: Creating swapchain with present mode: 2 [INFO] [Vulkan]: Using swapchain size 1920 x 1080. [INFO] [Vulkan]: Got 3 swapchain images. [INFO] [Vulkan]: Using resolution 1920x1080 [INFO] [Vulkan]: Using RGB565 format. [INFO] [Vulkan]: Loading stock shader. [INFO] [slang]: Building pass #0 (N/A) [INFO] [slang]: Reflection [INFO] [slang]: Textures: [INFO] [slang]: Source (#0) [INFO] [slang]: [INFO] [slang]: Uniforms (Vertex: yes, Fragment: no): [INFO] [slang]: Push Constants (Vertex: no, Fragment: no): [INFO] [slang]: MVP (Offset: 0) [INFO] [slang]: [INFO] [slang]: Parameters: [INFO] [Vulkan filter chain]: Not using frame history. [INFO] [Vulkan filter chain]: Not using framebuffer feedback. [INFO] [XInput]: Found XInput v1.4. [INFO] [DINPUT]: Enumerating joypads … [INFO] [DINPUT]: Done enumerating joypads … [INFO] [Joypad]: Found joypad driver: “dinput”. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Video]: Found display server: win32 [INFO] XAudio2: Requesting 64 ms latency, using 64 ms latency. [INFO] [Menu]: Found menu display driver: “menu_display_vulkan”. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [LED]: LED driver = ‘null’ 0000000000A375C0 [INFO] [MIDI]: Initializing … [INFO] [MIDI]: Input disabled. [INFO] [MIDI]: Output disabled. [INFO] [MIDI]: Initialized “winmm” driver. [INFO] SRAM will not be saved. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_history.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_favorites.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_music_history.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_video_history.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_image_history.lpl]. [INFO] [Vulkan]: VSync => on [INFO] [slang]: Building pass #0 (N/A) [INFO] [slang]: Reflection [INFO] [slang]: Textures: [INFO] [slang]: Source (#0) [INFO] [slang]: [INFO] [slang]: Uniforms (Vertex: yes, Fragment: no): [INFO] [slang]: Push Constants (Vertex: no, Fragment: no): [INFO] [slang]: MVP (Offset: 0) [INFO] [slang]: [INFO] [slang]: Parameters: [INFO] [Vulkan filter chain]: Not using frame history. [INFO] [Vulkan filter chain]: Not using framebuffer feedback. [INFO] [Vulkan]: VSync => on [INFO] [Vulkan]: Do not need to re-create swapchain. [INFO] [slang]: Building pass #0 (N/A) [INFO] [slang]: Reflection [INFO] [slang]: Textures: [INFO] [slang]: Source (#0) [INFO] [slang]: [INFO] [slang]: Uniforms (Vertex: yes, Fragment: no): [INFO] [slang]: Push Constants (Vertex: no, Fragment: no): [INFO] [slang]: MVP (Offset: 0) [INFO] [slang]: [INFO] [slang]: Parameters: [INFO] [Vulkan filter chain]: Not using frame history. [INFO] [Vulkan filter chain]: Not using framebuffer feedback. [INFO] [Config]: Saved new config to “C:\Users\rflye\AppData\Roaming\RetroArch\retroarch.cfg”. [INFO] Unloading game… [INFO] Unloading core… [INFO] Unloading core symbols… [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames. [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.

Here’s the same for OpenGL:

[INFO] RetroArch 1.7.5 (Git 826c77d523) [INFO] === Build ======================================= [INFO] Version: 1.7.5 [INFO] Git: 826c77d523 [INFO] ================================================= [INFO] Environ SET_PIXEL_FORMAT: RGB565. [INFO] Redirecting save file to “C:\Users\rflye\AppData\Roaming\RetroArch\saves.srm”. [INFO] Redirecting savestate to “C:\Users\rflye\AppData\Roaming\RetroArch\states.state”. [INFO] Version of libretro API: 1 [INFO] Compiled against API: 1 [INFO] [Audio]: Set audio input rate to: 29970.03 Hz. [INFO] [Video]: Video @ fullscreen [INFO] [GL]: Found GL context: wgl [INFO] [GL]: Detecting screen resolution 1920x1080. [INFO] [WGL] extensions: WGL_EXT_depth_float WGL_ARB_buffer_region WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_pixel_format WGL_ARB_pbuffer WGL_EXT_extensions_string WGL_EXT_swap_control WGL_ARB_multisample WGL_ARB_pixel_format_float WGL_ARB_framebuffer_sRGB WGL_ARB_create_context WGL_ARB_create_context_profile WGL_EXT_pixel_format_packed_float WGL_EXT_create_context_es_profile WGL_EXT_create_context_es2_profile WGL_NV_DX_interop WGL_WGL_INTEL_cl_sharing WGL_NV_DX_interop2 WGL_ARB_create_context_robustness WGL_ARB_context_flush_control [INFO] [WGL]: wglSwapInterval(1) [INFO] [GL]: Vendor: Intel, Renderer: Intel® HD Graphics 630. [INFO] [GL]: Version: 4.5.0 - Build 24.20.100.6286. [INFO] [GL]: Using resolution 1920x1080 [INFO] [GL]: Default shader backend found: glsl. [INFO] [Shader driver]: Using GLSL shader backend. [INFO] [GLSL]: Checking GLSL shader support … [WARN] [GL]: Stock GLSL shaders will be used. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] Setting up menu pipeline shaders for XMB … [INFO] [GLSL]: Compiling ribbon shader… [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling simple ribbon shader… [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling snow shader… [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling modern snow shader… [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling bokeh shader… [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling snowflake shader… [INFO] [GLSL]: Found GLSL vertex shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Found GLSL fragment shader. [INFO] Shader log: WARNING: 1:2: ‘’ : #version directive missing

[INFO] [GLSL]: Linking GLSL program. [INFO] Resetting shader to defaults … [INFO] [GL]: Using 4 textures. [INFO] [GL]: Loaded 1 program(s). [INFO] [GL]: Using GL_RGB565 for texture uploads. [INFO] [XInput]: Found XInput v1.4. [INFO] [DINPUT]: Enumerating joypads … [INFO] [DINPUT]: Done enumerating joypads … [INFO] [Joypad]: Found joypad driver: “dinput”. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Video]: Found display server: win32 [INFO] XAudio2: Requesting 64 ms latency, using 64 ms latency. [INFO] [Menu]: Found menu display driver: “menu_display_gl”. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [LED]: LED driver = ‘null’ 0000000000A375C0 [INFO] [MIDI]: Initializing … [INFO] [MIDI]: Input disabled. [INFO] [MIDI]: Output disabled. [INFO] [MIDI]: Initialized “winmm” driver. [INFO] SRAM will not be saved. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_history.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_favorites.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_music_history.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_video_history.lpl]. [INFO] Loading history file: [C:\Users\rflye\AppData\Roaming\RetroArch\content_image_history.lpl]. [INFO] [GL]: VSync => on [INFO] [WGL]: wglSwapInterval(1) [INFO] [GL]: VSync => on [INFO] [WGL]: wglSwapInterval(1) [INFO] [Config]: Saved new config to “C:\Users\rflye\AppData\Roaming\RetroArch\retroarch.cfg”. [INFO] Unloading game… [INFO] Unloading core… [INFO] Unloading core symbols… [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames. [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.

I should mention that other games (for example, games on Steam) utilize the Vega M GL so I know that it’s usable. Are there any settings I need to tweak to get Retroarch to recognize it, or is this GPU unsupported?

I figured out how to force using the Vega M GL. In the “Radeon RX Vega M Settings” panel, under System > Switchable Graphics, change the “Running Applications” tab to “Installed Profiled Applications”. Click “Browse” and select the RetroArch binary – this should add an entry into the list. Click on the new entry and in the list select “High Performance” and you’re good to go! I verified that both the log shows the Vega M GL being selected and the task manager shows high utilization on that GPU (instead of the integrated Intel HD 630).