summaryrefslogtreecommitdiffstats
path: root/mesa-7.0.2-t_vp_build-use-less-temps.patch
diff options
context:
space:
mode:
Diffstat (limited to 'mesa-7.0.2-t_vp_build-use-less-temps.patch')
-rw-r--r--mesa-7.0.2-t_vp_build-use-less-temps.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/mesa-7.0.2-t_vp_build-use-less-temps.patch b/mesa-7.0.2-t_vp_build-use-less-temps.patch
new file mode 100644
index 0000000..1909471
--- /dev/null
+++ b/mesa-7.0.2-t_vp_build-use-less-temps.patch
@@ -0,0 +1,81 @@
+--- Mesa-7.0.2/src/mesa/tnl/t_vp_build.c 2007-10-23 18:52:25.000000000 +0200
++++ Mesa-7.0.2.new/src/mesa/tnl/t_vp_build.c 2007-12-28 20:36:50.000000000 +0100
+@@ -890,7 +890,6 @@
+ {
+ struct ureg shininess = get_material(p, 0, STATE_SHININESS);
+ emit_op1(p, OPCODE_MOV, dots, WRITEMASK_W, swizzle1(shininess,X));
+- release_temp(p, shininess);
+
+ _col0 = make_temp(p, get_scenecolor(p, 0));
+ if (separate)
+@@ -904,7 +903,6 @@
+ struct ureg shininess = get_material(p, 1, STATE_SHININESS);
+ emit_op1(p, OPCODE_MOV, dots, WRITEMASK_Z,
+ negate(swizzle1(shininess,X)));
+- release_temp(p, shininess);
+
+ _bfc0 = make_temp(p, get_scenecolor(p, 1));
+ if (separate)
+@@ -972,7 +970,6 @@
+ struct ureg tmpPpli = get_temp(p);
+
+ VPpli = get_temp(p);
+- half = get_temp(p);
+
+ /* In homogeneous object coordinates
+ */
+@@ -983,6 +980,9 @@
+ */
+ emit_op2(p, OPCODE_SUB, VPpli, 0, tmpPpli, V);
+
++ /* we're done with tmpPpli now */
++ release_temp(p, tmpPpli);
++
+ /* Normalize VPpli. The dist value also used in
+ * attenuation below.
+ */
+@@ -997,10 +997,14 @@
+ p->state->unit[i].light_attenuated) {
+ att = calculate_light_attenuation(p, i, VPpli, dist);
+ }
++
++ /* We're done with dist now */
++ release_temp(p, dist);
+
+
+ /* Calculate viewer direction, or use infinite viewer:
+ */
++ half = get_temp(p);
+ if (p->state->light_local_viewer) {
+ struct ureg eye_hat = get_eye_position_normalized(p);
+ emit_op2(p, OPCODE_SUB, half, 0, VPpli, eye_hat);
+@@ -1011,9 +1015,6 @@
+ }
+
+ emit_normalize_vec3(p, half, half);
+-
+- release_temp(p, dist);
+- release_temp(p, tmpPpli);
+ }
+
+ /* Calculate dot products:
+@@ -1021,6 +1022,10 @@
+ emit_op2(p, OPCODE_DP3, dots, WRITEMASK_X, normal, VPpli);
+ emit_op2(p, OPCODE_DP3, dots, WRITEMASK_Y, normal, half);
+
++ /* we're done with VPpli and half now, so free them as to not drive up
++ our temp usage unnecessary */
++ release_temp(p, VPpli);
++ release_temp(p, half);
+
+ /* Front face lighting:
+ */
+@@ -1109,8 +1114,6 @@
+ release_temp(p, specular);
+ }
+
+- release_temp(p, half);
+- release_temp(p, VPpli);
+ release_temp(p, att);
+ }
+ }