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 <die...@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(-)

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to