Selaco
piotr💯 Jun 3, 2024 @ 11:46am
Intel ARC gpu not selected when radeon IGP present
Hello,
I am trying to play the game on Ubuntu system with Intel ARC A770 gpu and AMD Ryzen GPU. The game does not provide a GPU selector and always prefers AMD gpu over discrete intel ARC card.
When started in OpenGL mode it correctly selects discrete GPU.

I have tried to force the GPU using MESA_VK_DEVICE_SELECT layer:
$ MESA_VK_DEVICE_SELECT=list vulkaninfo WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -3 from call to vkCreateInstance in ICD /usr/lib/x86_64-linux-gnu/libvulkan_dzn.so. Skipping this driver. WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -3 from call to vkCreateInstance in ICD /usr/lib/x86_64-linux-gnu/libvulkan_virtio.so. Skipping this driver. selectable devices: GPU 0: 8086:56a0 "Intel(R) Arc(tm) A770 Graphics (DG2)" discrete GPU 0000:03:00.0 GPU 1: 1002:164e "AMD Radeon Graphics (RADV RAPHAEL_MENDOCINO)" integrated GPU 0000:11:00.0 GPU 2: 10005:0 "llvmpipe (LLVM 17.0.6, 256 bits)" CPU 0000:00:00.0

$ MESA_VK_DEVICE_SELECT=8086:56a0! ./RunSelaco_Vulkan.sh (...) V_Init: allocate screen. Using video driver x11 Initialization of Vulkan failed: No Vulkan device supports the minimum requirements of this application

Without it it allways selects AMD gpu:
$ ./RunSelaco_Vulkan.sh (...) V_Init: allocate screen. Using video driver x11 Fossilize INFO: Overriding serialization path: "/home/piotr/.local/share/Steam/steamapps/shadercache/1592280/fozpipelinesv6/steamapprun_pipeline_cache". VK Graphics Queue: 0000575D81E2CF70 VK Present Queue: 0000575D8203D510 VK Upload Queue 0: 0000575D8203D7A0 VK Upload Queue 1: 0000575D8203DA30 Vulkan device: AMD Radeon Graphics (RADV RAPHAEL_MENDOCINO) Vulkan device type: integrated gpu Vulkan version: 1.3.278 (api) 24.1.0 (driver)

Is there a way to select the GPU in this game?

All vulkan demos and sample programs correctly prefers discrete GPU and uses the Intel ARC card in this setup.
The distribution is ubuntu 24.04 using i915 driver for intel ARC card and amdgpu for ryzen iGPU.
Last edited by piotr💯; Jun 3, 2024 @ 12:20pm
< >
Showing 1-7 of 7 comments
Cockatrice  [developer] Jun 4, 2024 @ 7:29am 
There is an option in the Video section called "Notebook Switchable GPU", please try turning that to High-Performance and it *should* select the correct gpu.

Without that turned on the game will usually default to whatever the desktop environment is using.
Last edited by Cockatrice; Jun 4, 2024 @ 7:30am
piotr💯 Jun 5, 2024 @ 1:13pm 
Can not see such option anywhere in the menu neither when started in OpenGL nor in Vulkan mode.

Does the game search for any particular vulkan extension or capability that might be not available on the intel ARC card? The card reports support for vulkan 1.3, but when forced to use the card the game says in log that no device that supports minimum requirements is present.

I will try booting to windows this weekend and verify whether it behaves differently there.
Cockatrice  [developer] Jun 5, 2024 @ 9:56pm 
I forgot that option is for Windows only. There is nothing else you can do just yet with the config to coerce the device selection to use the correct GPU.

However I have been meaning to add a little bit more flexibility in how to the Vulkan device selection works and we may be able to improve this in the future. I would like to add an option to pick the device at least via config file.

After some research I believe I know why the ARC gpu is not being selected. One of the requirements for device selection is that the device support at least 2 queues. Without a second queue the threaded texture loading cannot function and the game would be very choppy.
Your device's driver appears to only support a single queue in Vulkan according to the Vulkan Device Registry:
https://vulkan.gpuinfo.org/displayreport.php?id=30694#queuefamilies
piotr💯 Jun 5, 2024 @ 11:03pm 
Ok, seems that it migth be a driver issue then. The same database for windows driver shows multiple queue families for this card and sure enough running it on windows selects this GPU.
However halfway through the loading screen it crashes.
(...) V_Init: allocate screen. I_InitInput I_StartupMouse I_StartupKeyboard I_StartupXInput I_StartupRawPS2 I_StartupDirectInputJoystick VK Graphics Queue: 000002439A5F9838 VK Present Queue: 000002439A6422F8 VK Upload Queue 0: 000002439A61B238 Vulkan device: Intel(R) Arc(TM) A770 Graphics Vulkan device type: discrete gpu Vulkan version: 1.3.280 (api) 0.405.1426 (driver) Vulkan extensions: VK_EXT_device_address_binding_report VK_EXT_full_screen_exclusive VK_KHR_swapchain VK_KHR_external_memory VK_KHR_external_memory_win32 VK_EXT_external_memory_host VK_KHR_external_semaphore VK_KHR_external_semaphore_win32 VK_KHR_external_fence VK_KHR_external_fence_win32 VK_KHR_timeline_semaphore VK_KHR_win32_keyed_mutex VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_dedicated_allocation VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_maintenance1 VK_KHR_maintenance2 VK_KHR_maintenance3 VK_KHR_maintenance4 VK_KHR_maintenance5 VK_KHR_synchronization2 VK_KHR_shader_draw_parameters VK_KHR_push_descriptor VK_KHR_descriptor_update_template VK_KHR_multiview VK_KHR_shader_float16_int8 VK_KHR_shader_float_controls VK_KHR_16bit_storage VK_KHR_8bit_storage VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_KHR_storage_buffer_storage_class VK_KHR_variable_pointers VK_KHR_relaxed_block_layout VK_EXT_sampler_filter_minmax VK_KHR_device_group VK_KHR_sampler_ycbcr_conversion VK_EXT_ycbcr_2plane_444_formats VK_EXT_4444_formats VK_EXT_post_depth_coverage VK_EXT_shader_viewport_index_layer VK_EXT_shader_stencil_export VK_EXT_conservative_rasterization VK_EXT_sample_locations VK_KHR_draw_indirect_count VK_EXT_multi_draw VK_KHR_image_format_list VK_EXT_image_view_min_lod VK_EXT_vertex_attribute_divisor VK_EXT_descriptor_buffer VK_EXT_descriptor_indexing VK_EXT_mutable_descriptor_type VK_EXT_inline_uniform_block VK_KHR_create_renderpass2 VK_KHR_dynamic_rendering VK_KHR_swapchain_mutable_format VK_KHR_depth_stencil_resolve VK_KHR_driver_properties VK_KHR_vulkan_memory_model VK_EXT_conditional_rendering VK_EXT_hdr_metadata VK_EXT_mesh_shader VK_KHR_fragment_shading_rate VK_EXT_depth_clip_enable VK_EXT_depth_clip_control VK_EXT_scalar_block_layout VK_KHR_imageless_framebuffer VK_KHR_buffer_device_address VK_EXT_buffer_device_address VK_KHR_ray_tracing_pipeline VK_KHR_acceleration_structure VK_KHR_ray_query VK_KHR_pipeline_library VK_KHR_deferred_host_operations VK_KHR_ray_tracing_maintenance1 VK_EXT_host_query_reset VK_KHR_performance_query VK_NV_device_diagnostic_checkpoints VK_KHR_separate_depth_stencil_layouts VK_KHR_shader_clock VK_KHR_spirv_1_4 VK_KHR_uniform_buffer_standard_layout VK_EXT_separate_stencil_usage VK_EXT_fragment_shader_interlock VK_EXT_index_type_uint8 VK_EXT_primitive_topology_list_restart VK_KHR_shader_subgroup_extended_types VK_EXT_line_rasterization VK_EXT_memory_budget VK_EXT_memory_priority VK_EXT_pageable_device_local_memory VK_EXT_texel_buffer_alignment VK_INTEL_performance_query VK_EXT_subgroup_size_control VK_EXT_shader_demote_to_helper_invocation VK_KHR_shader_atomic_int64 VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_cache_control VK_KHR_pipeline_executable_properties VK_EXT_graphics_pipeline_library VK_EXT_transform_feedback VK_EXT_provoking_vertex VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state2 VK_EXT_extended_dynamic_state3 VK_EXT_vertex_input_dynamic_state VK_EXT_custom_border_color VK_EXT_robustness2 VK_EXT_image_robustness VK_EXT_pipeline_robustness VK_EXT_calibrated_timestamps VK_KHR_shader_integer_dot_product VK_KHR_shader_subgroup_uniform_control_flow VK_KHR_shader_terminate_invocation VK_KHR_workgroup_memory_explicit_layout VK_EXT_shader_atomic_float VK_KHR_copy_commands2 VK_KHR_shader_non_semantic_info VK_KHR_zero_initialize_workgroup_memory VK_EXT_shader_atomic_float2 VK_EXT_global_priority VK_EXT_global_priority_query VK_KHR_global_priority VK_KHR_format_feature_flags2 VK_KHR_video_queue VK_KHR_video_decode_queue VK_KHR_video_decode_h264 VK_KHR_video_decode_h265 VK_EXT_color_write_enable VK_NV_compute_shader_derivatives VK_EXT_private_data VK_KHR_cooperative_matrix VK_EXT_image_2d_view_of_3d VK_EXT_primitives_generated_query VK_EXT_shader_module_identifier VK_EXT_attachment_feedback_loop_layout VK_KHR_map_memory2 VK_EXT_host_image_copy Max. texture size: 16384 Max. uniform buffer range: 134217724 Min. uniform buffer offset alignment: 64 Graphics Queue Family: #0 Present Queue Family: #2 Upload Queue Family: #1 Upload Queue Supports Graphics: No Resolution: 3440 x 1440 Vsync changed to: 0 Vsync changed to: 0 Vsync changed to: 0 ST_Init: Init startup screen. Checking cmd-line parameters... S_InitData: Load sound definitions. G_ParseMapInfo: Load map definitions. Texman.Init: Init texture manager. Added 97 textures for file 0

Works on both systems in OpenGL mode. Would this mean it is a driver error?
Cockatrice  [developer] Jun 6, 2024 @ 1:50pm 
I don't want to blame the issue entirely on the driver, but if it works in OpenGL and the Linux driver only has a single queue I'm going to assume perhaps the Vulkan driver is a little immature.

Unfortunately I don't have access to any Intel hardware to see if this even has a chance of working in Windows (it definitely won't work in Linux with only a single queue) so I don't know what to suggest at this point other than just running in OpenGL
Last edited by Cockatrice; Jun 6, 2024 @ 1:50pm
piotr💯 Jun 6, 2024 @ 2:06pm 
Ok I will enjoy the game on OpenGL for now.
One last thing i have tested is the new intel Xe driver that is still "experimental" in kernel 6.8 and Mesa 24.1. It reports more queue families and the game detected it and selected properly but after initial loading the screen turned black.
I will check future releases of the drivers and update the thread if something will change.
Cockatrice  [developer] Jun 6, 2024 @ 2:08pm 
Originally posted by piotr💯:
Ok I will enjoy the game on OpenGL for now.
One last thing i have tested is the new intel Xe driver that is still "experimental" in kernel 6.8 and Mesa 24.1. It reports more queue families and the game detected it and selected properly but after initial loading the screen turned black.
I will check future releases of the drivers and update the thread if something will change.

Thanks, I would appreciate to hear from you if you ever do manage to get it working so we have something to recommend to others should they have the same problem
< >
Showing 1-7 of 7 comments
Per page: 1530 50