[Mesa-dev] [PATCH] radeonsi: enable 32-bit denormals on VI+

Roland Scheidegger sroland at vmware.com
Wed Jan 11 18:00:02 UTC 2017


I don't think there's any glsl, es or otherwise, specification which
would require denorms (since obviously lots of hw can't do it, d3d10
forbids them), with any precision qualifier. Hence these look like bugs
of the test suite to me?
(Irrespective if it's a good idea or not to enable denormals, which I
don't realy know.)

Roland


Am 11.01.2017 um 18:29 schrieb Samuel Pitoiset:
> Only VI can do 32-bit denormals at full rate while previous
> generations can do it only for 64-bit and 16-bit.
> 
> This fixes some dEQP tests with the highp type qualifier.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99343
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/gallium/drivers/radeonsi/si_shader.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
> index 5dfbd6603a..e9cb11883f 100644
> --- a/src/gallium/drivers/radeonsi/si_shader.c
> +++ b/src/gallium/drivers/radeonsi/si_shader.c
> @@ -6361,8 +6361,10 @@ int si_compile_llvm(struct si_screen *sscreen,
>  
>  	si_shader_binary_read_config(binary, conf, 0);
>  
> -	/* Enable 64-bit and 16-bit denormals, because there is no performance
> -	 * cost.
> +	/* Enable denormals when there is no performance cost.
> +	 *
> +	 * Only VI can do 32-bit denormals at full rate while previous
> +	 * generations can do it only for 64-bit and 16-bit.
>  	 *
>  	 * If denormals are enabled, all floating-point output modifiers are
>  	 * ignored.
> @@ -6373,7 +6375,10 @@ int si_compile_llvm(struct si_screen *sscreen,
>  	 *   have to stop using those.
>  	 * - SI & CI would be very slow.
>  	 */
> -	conf->float_mode |= V_00B028_FP_64_DENORMS;
> +	if (sscreen->b.chip_class >= VI)
> +		conf->float_mode |= V_00B028_FP_ALL_DENORMS;
> +	else
> +		conf->float_mode |= V_00B028_FP_64_DENORMS;
>  
>  	FREE(binary->config);
>  	FREE(binary->global_symbol_offsets);
> 



More information about the mesa-dev mailing list