radv: disable shaderBufferFloat64AtomicMinMax on GFX11
buffer_atomic_{fmin,fmax}_x2 aren't supported on this GPU apparently. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19268>
This commit is contained in:

committed by
Marge Bot

parent
7298bc1810
commit
cf7ada973a
@@ -1684,15 +1684,16 @@ radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: {
|
||||
VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *features =
|
||||
(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *)ext;
|
||||
bool has_shader_buffer_float_minmax = radv_has_shader_buffer_float_minmax(pdevice);
|
||||
bool has_shader_image_float_minmax =
|
||||
pdevice->rad_info.gfx_level != GFX8 && pdevice->rad_info.gfx_level != GFX9 &&
|
||||
pdevice->rad_info.gfx_level != GFX11;
|
||||
features->shaderBufferFloat16Atomics = false;
|
||||
features->shaderBufferFloat16AtomicAdd = false;
|
||||
features->shaderBufferFloat16AtomicMinMax = false;
|
||||
features->shaderBufferFloat32AtomicMinMax = has_shader_buffer_float_minmax;
|
||||
features->shaderBufferFloat64AtomicMinMax = has_shader_buffer_float_minmax;
|
||||
features->shaderBufferFloat32AtomicMinMax =
|
||||
radv_has_shader_buffer_float_minmax(pdevice, 32);
|
||||
features->shaderBufferFloat64AtomicMinMax =
|
||||
radv_has_shader_buffer_float_minmax(pdevice, 64);
|
||||
features->shaderSharedFloat16Atomics = false;
|
||||
features->shaderSharedFloat16AtomicAdd = false;
|
||||
features->shaderSharedFloat16AtomicMinMax = false;
|
||||
|
@@ -3137,10 +3137,11 @@ radv_use_llvm_for_stage(struct radv_device *device, UNUSED gl_shader_stage stage
|
||||
}
|
||||
|
||||
static inline bool
|
||||
radv_has_shader_buffer_float_minmax(const struct radv_physical_device *pdevice)
|
||||
radv_has_shader_buffer_float_minmax(const struct radv_physical_device *pdevice, unsigned bitsize)
|
||||
{
|
||||
return (pdevice->rad_info.gfx_level <= GFX7 && !pdevice->use_llvm) ||
|
||||
pdevice->rad_info.gfx_level >= GFX10;
|
||||
pdevice->rad_info.gfx_level == GFX10 || pdevice->rad_info.gfx_level == GFX10_3 ||
|
||||
(pdevice->rad_info.gfx_level == GFX11 && bitsize == 32);
|
||||
}
|
||||
|
||||
/* radv_perfcounter.c */
|
||||
|
Reference in New Issue
Block a user