[Mesa-dev] [PATCH v2 0/9] Add precise/invariant semantics to TGSI

Karol Herbst karolherbst at gmail.com
Mon Jun 12 18:19:49 UTC 2017


Running Tomb Raider on Nouveau I found some flicker caused by ignoring precise
modifiers on variables inside Nouveau.

This series add precise/invariant handling to TGSI, which can be then used by
drivers to disable certain unsafe optimisations which may otherwise alter
calculations, which depend on having the same result across shaders.

This series fixes this bug in Tomb Raider and one CTS test for 4.4 and 4.5

Karol Herbst (9):
  tgsi: add precise flag to tgsi_instruction
  tgsi/dump: print _PRECISE modifier on Instrutions
  st/glsl_to_tgsi: handle precise modifier
  tgsi: populate precise
  tgsi/text: parse _PRECISE modifier
  nv50/ir: add precise field to Instruction
  nv50/ir/tgsi: handle precise for most ALU instructions
  nv50/ir: disable mul+add to mad for precise instructions
  nv50/ir/tgsi: split mad to mul+add

 src/gallium/auxiliary/tgsi/tgsi_build.c            |  4 +++
 src/gallium/auxiliary/tgsi/tgsi_dump.c             |  4 +++
 src/gallium/auxiliary/tgsi/tgsi_text.c             | 17 ++++++++--
 src/gallium/auxiliary/tgsi/tgsi_ureg.c             |  8 ++++-
 src/gallium/auxiliary/tgsi/tgsi_ureg.h             | 14 ++++++++-
 src/gallium/auxiliary/util/u_simple_shaders.c      |  2 +-
 src/gallium/drivers/nouveau/codegen/nv50_ir.h      |  1 +
 .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp  | 16 ++++++++++
 .../drivers/nouveau/codegen/nv50_ir_peephole.cpp   |  6 +++-
 src/gallium/include/pipe/p_shader_tokens.h         |  3 +-
 src/gallium/state_trackers/nine/nine_shader.c      |  6 ++--
 src/mesa/state_tracker/st_atifs_to_tgsi.c          | 36 +++++++++++-----------
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp         | 19 ++++++++++--
 src/mesa/state_tracker/st_mesa_to_tgsi.c           |  6 ++--
 14 files changed, 107 insertions(+), 35 deletions(-)

-- 
2.13.1



More information about the mesa-dev mailing list