st/nir: use NIR for asm programs
authorTimothy Arceri <tarceri@itsqueeze.com>
Wed, 9 May 2018 04:06:43 +0000 (14:06 +1000)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 19 Feb 2019 23:56:26 +0000 (15:56 -0800)
commit3d7611e9a6c63a5ec03d3f9a7f90fbf286ec72a3
tree27fce6d1a596df62f71f386b1a8f6894f0d47cf2
parent3b4929ec6e6456fb093483e2dc9ce008622373d6
st/nir: use NIR for asm programs

This uses prog_to_nir to translate ARB assembly programs to NIR.

Co-authored by Tim Arceri, Dave Airlie, and Ken Graunke:

 - [Tim Arceri]: original patch
 - [Dave Airlie]: fix crashes with parameter names
 - [Ken Graunke]:
   - Rebase on SCALAR_ISA cap, lower wpos_ytransform too.
   - Rebase on streamout fixes.
   - Lower system values for fragcoord support.
   - Don't try to use prog_to_nir for ATI_fragment_shader programs.
   - Create TGSI for fixed-function or ARB vertex shaders even if the
     driver prefers NIR, so we can create draw module shaders for
     feedback/select emulation, which rely on TGSI.

Tested on:
- iris (Intel Skylake/Kabylake): Piglit & GL CTS - Ken Graunke
- radeonsi (AMD Vega 64): Piglit - Ken Graunke
- vc4/v3d - Piglit - Eric Anholt
- freedreno - dEQP - Kristian Høgsberg

Fixes lit_degenerate_case on vc4 and v3d, and vp-address-01,
vp-arl-constant-array-huge-offset-neg, and vp-arl-neg-array on v3d.
No Piglit regressions on radeonsi; no dEQP regressions on freedreno.

Acked-by: Eric Anholt <eric@anholt.net>
Tested-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/mesa/program/prog_to_nir.c
src/mesa/state_tracker/st_program.c