[Mesa-dev] [PATCH 00/11] glsl, tgsi, radeonsi: ldexp and frexp bug fixes and features
Nicolai Hähnle
nhaehnle at gmail.com
Tue Sep 26 14:36:46 UTC 2017
Ping.
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(-)
>
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list