[Mesa-dev] [PATCH] radeonsi: enable 32-bit denormals on VI+
Jason Ekstrand
jason at jlekstrand.net
Wed Jan 11 21:12:39 UTC 2017
On Wed, Jan 11, 2017 at 12:08 PM, Samuel Pitoiset <samuel.pitoiset at gmail.com
> wrote:
>
>
> On 01/11/2017 07:00 PM, Roland Scheidegger wrote:
>
>> 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.)
>>
>
> That test works on NVIDIA hw (both with blob and nouveau) and IIRC it also
> works on Intel hw. I don't think it's buggy there.
>
Intel HW has full denorm support. Just because the test works for us
doesn't mean it's valid.
>
>
>> 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);
>>>
>>>
>> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170111/c220affa/attachment.html>
More information about the mesa-dev
mailing list