st/nine: Declare lighting consts for ff shaders
authorAxel Davy <davyaxel0@gmail.com>
Mon, 2 Apr 2018 16:25:35 +0000 (18:25 +0200)
committerAxel Davy <davyaxel0@gmail.com>
Fri, 6 Apr 2018 21:34:31 +0000 (23:34 +0200)
The lighting constants were not declared previously,
but were accessed with indirect addressing, which is
illegal.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=105442
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
CC: "17.3 18.0" <mesa-stable@lists.freedesktop.org>
src/gallium/state_trackers/nine/nine_ff.c

index d7b697caeed57534ebcea40450460e61bf9bc3fb..fabc1d3b882774dfda082cc044b9b0fafd61178d 100644 (file)
@@ -810,6 +810,10 @@ nine_ff_build_vs(struct NineDevice9 *device, struct vs_build_ctx *vs)
 
         const unsigned loop_label = l++;
 
+        /* Declare all light constants to allow indirect adressing */
+        for (i = 32; i < 96; i++)
+            ureg_DECL_constant(ureg, i);
+
         ureg_MOV(ureg, rCtr, ureg_imm1f(ureg, 32.0f)); /* &lightconst(0) */
         ureg_MOV(ureg, rD, ureg_imm1f(ureg, 0.0f));
         ureg_MOV(ureg, rA, ureg_imm1f(ureg, 0.0f));