[Mesa-dev] [PATCH 00/11] glsl, tgsi, radeonsi: ldexp and frexp bug fixes and features

Dieter Nützel Dieter at nuetzel-hh.de
Tue Sep 26 21:55:45 UTC 2017


Ah,

this one works. Sorry Nicolai, I've tried the patchwork (rev 1) version 
last week, but it didn't apply clean. Soo.

For the series

Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>

Should I run any special app?
Notice any speedup?

Greetings,
Dieter

Am 16.09.2017 13:27, schrieb Nicolai Hähnle:
> If you want to test, you can find the series at
> 
> https://cgit.freedesktop.org/~nh/mesa/log/?h=ldexp
> 
> On 16.09.2017 13:23, Nicolai Hähnle wrote:
>> Hi all,
>> 
>> This series was motivated by radeonsi failing some ldexp tests due to
>> not handling denorms correctly and not handling overflows (which GLSL
>> doesn't require, but GLSL ES does).
>> 
>> The first patch fixes the GLSL IR lowering of ldexp() to handle all 
>> cases
>> fully except:
>> 
>> 1. Denorms; they're annoying and therefore all flushed to zero.
>> 
>> 2. Exponent 32-bit overflow. This would be easy to fix at the cost of
>>     an additional min() instruction, but neither GLSL nor GLSL ES
>>     requires it.
>> 
>> The goal of the remainder of the series is to move radeonsi to use
>> the hardware implementation of ldexp and frexp. This entails cleaning
>> up a lot of stuff around the existing DLDEXP and DFRACEXP (implemented
>> by softpipe and r600), as well as adding a new LDEXP opcode.
>> 
>> Please review!
>> 
>> Cheers,
>> Nicolai
>> --
>>   src/compiler/glsl/lower_instructions.cpp     | 171 +++++++++++------
>>   .../auxiliary/gallivm/lp_bld_limits.h        |   1 +
>>   src/gallium/auxiliary/gallivm/lp_bld_tgsi.c  |  26 ++-
>>   src/gallium/auxiliary/gallivm/lp_bld_tgsi.h  |   1 +
>>   .../auxiliary/gallivm/lp_bld_tgsi_action.h   |   5 +
>>   .../auxiliary/gallivm/lp_bld_tgsi_soa.c      |  19 +-
>>   src/gallium/auxiliary/nir/tgsi_to_nir.c      |   7 +-
>>   src/gallium/auxiliary/tgsi/tgsi_exec.c       |  31 ++-
>>   src/gallium/auxiliary/tgsi/tgsi_exec.h       |  10 +
>>   src/gallium/auxiliary/tgsi/tgsi_info.c       |  11 +-
>>   src/gallium/auxiliary/tgsi/tgsi_info.h       |   4 +-
>>   .../auxiliary/tgsi/tgsi_info_opcodes.h       |   4 +-
>>   src/gallium/docs/source/screen.rst           |   1 +
>>   src/gallium/docs/source/tgsi.rst             |  24 ++-
>>   src/gallium/drivers/etnaviv/etnaviv_screen.c |   1 +
>>   .../drivers/freedreno/freedreno_screen.c     |   1 +
>>   src/gallium/drivers/i915/i915_screen.c       |   1 +
>>   .../drivers/nouveau/nv30/nv30_screen.c       |   2 +
>>   .../drivers/nouveau/nv50/nv50_screen.c       |   1 +
>>   .../drivers/nouveau/nvc0/nvc0_screen.c       |   1 +
>>   src/gallium/drivers/r300/r300_screen.c       |   2 +
>>   src/gallium/drivers/r600/r600_pipe.c         |   1 +
>>   src/gallium/drivers/r600/r600_shader.c       |  14 +-
>>   src/gallium/drivers/radeonsi/si_pipe.c       |   3 +-
>>   src/gallium/drivers/radeonsi/si_shader.c     |  14 +-
>>   .../drivers/radeonsi/si_shader_internal.h    |   1 +
>>   .../drivers/radeonsi/si_shader_tgsi_alu.c    |  27 +++
>>   .../drivers/radeonsi/si_shader_tgsi_setup.c  |  16 +-
>>   src/gallium/drivers/svga/svga_screen.c       |   3 +
>>   src/gallium/drivers/vc4/vc4_screen.c         |   1 +
>>   src/gallium/include/pipe/p_defines.h         |   1 +
>>   src/gallium/include/pipe/p_shader_tokens.h   |   2 +-
>>   src/mesa/state_tracker/st_glsl_to_tgsi.cpp   |  10 +-
>>   33 files changed, 290 insertions(+), 127 deletions(-)
>> 


More information about the mesa-dev mailing list