nvc0/ir: kepler can't do indirect shader input/output loads directly
authorIlia Mirkin <imirkin@alum.mit.edu>
Fri, 24 Jul 2015 03:03:53 +0000 (23:03 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Fri, 24 Jul 2015 03:47:11 +0000 (23:47 -0400)
commit9d60793a03e40e1d139b78fce0144cad57438741
treee87428f2abbb0db01e83e41d665f56398eb79774
parent22c9339abf00c2ecf40e0d8fd740faafba3ec37b
nvc0/ir: kepler can't do indirect shader input/output loads directly

There's a special AL2P instruction (called AFETCH in nv50 ir) which
computes a "physical" value to be used with indirect addressing with ALD.

Fixes

  tcs-input-array-*-index-rd
  tcs-output-array-*-index-wr

varying-indexing tessellation tests on Kepler.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir.h
src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp
src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
src/gallium/drivers/nouveau/codegen/nv50_ir_print.cpp
src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp
src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp