Draft: radv: add experimental support for AMD BC-250
Adds experimental support for AMD BC-250 mining board.
Kernel recognizes its GPU as Cyan Skillfish.
It seems to be basically RDNA1/GFX10 but with added support for image_bvh_intersect_ray
ray tracing instructions. LLVM seems to be calling this variant gfx1013
.
After this set of patches applied, this chip is properly detected and is usable on modern kernels. Tested on kernel 6.12.9.
Many games are reported to work. Quake2 RTX using the ray tracing pipeline works (not very fast, but 3-4x faster than RADV_PERFTEST=emulate_rt
). Custom compute load that uses ray query a lot also works reliably.
Known issues:
- Compute-only queue doesn't work properly, leading to massive Vulkan CTS tests failures and visual glitches in games. This MR disables it for now, until the root cause is known.
- Some games are still reported to have visual issues.
- Vulkan CTS (
dEQP Core android-platform-15.0.0_r3-682-g6a8bf558483bc59dfea45966d0cb5a27c7404268
) has a few failures (see below)
Not tested:
- OpenGL. Although simple apps work, people have previously reported that some heavier OpenGL games have had issues.
Notes:
- Depends on !33109 (merged) being merged first.
- See previous discussion here: #11982
Vulkan CTS failures
- There are a few "bogus" failures because dEQP doesn't know about newer Vulkan version and some extensions:
- dEQP-VK.info.device_properties: deviceProperties - API Minor Version 4 is not valid for this version of dEQP
- dEQP-VK.info.device_extensions:
- Unknown extension VK_KHR_compute_shader_derivatives
- Unknown extension VK_KHR_depth_clamp_zero_one
- Unknown extension VK_KHR_maintenance7
- Unknown extension VK_KHR_maintenance8
- Unknown extension VK_KHR_pipeline_binary
- Unknown extension VK_KHR_shader_relaxed_extended_instruction
- dEQP-VK.api.version_check.version: This version of CTS does not support Vulkan device version 1.4.305
- dEQP-VK.api.driver_properties.conformance_version: Wrong driver conformance version (older than used API version) at vktApiDriverPropertiesTests.cpp:107
- Real failures are:
- dEQP-VK.api.device_init.create_instance_device_intentional_alloc_fail.basic: Fail (createInstance returned VK_ERROR_INCOMPATIBLE_DRIVER)
- dEQP-VK.pipeline.pipeline_library.misc.frag_lib_varying_samples_8: Fail ([MultiSample] Invalid invocation count found in atomic buffer: expected value in range [1, 8] but found 0 at vktPipelineMiscTests.cpp:1686)
- dEQP-VK.pipeline.fast_linked_library.misc.frag_lib_varying_samples_8: Fail ([MultiSample] Invalid invocation count found in atomic buffer: expected value in range [1, 8] but found 0 at vktPipelineMiscTests.cpp:1686)
- dEQP-VK.dynamic_state.monolithic.discard.depth: Fail (Image verification failed)
- dEQP-VK.dynamic_state.pipeline_library.discard.depth: Fail (Image verification failed)
- dEQP-VK.dynamic_state.fast_linked_library.discard.depth: Fail (Image verification failed)
- dEQP-VK.dynamic_state.shader_object_unlinked_spirv.discard.depth: Fail (Image verification failed)
- dEQP-VK.dynamic_state.shader_object_unlinked_binary.discard.depth: Fail (Image verification failed)
- dEQP-VK.dynamic_state.shader_object_linked_spirv.discard.depth: Fail (Image verification failed)
- dEQP-VK.dynamic_state.shader_object_linked_binary.discard.depth: Fail (Image verification failed)