Re: [Mesa-dev] [PATCH 2/5] st/nine: Remove all usage of ureg_SUB in nine_ff

2017-01-06 Thread Marek Olšák
On Fri, Jan 6, 2017 at 12:43 PM, Jose Fonseca  wrote:
> I think this is a good idea.
>
> We still use them but I'm happy to see them go
>
> It would be much easier for you and for us if you just implemented a
> ureg_ABS() / ureg_SUB inline helper that would call ureg_MOV/ureg_ADD
> internally:  fewer chances of a typo somewhere, and less work necessary all
> around.

Yeah probably. A lot of the users don't use ureg, so the chances of a
typo are still pretty high.

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 2/5] st/nine: Remove all usage of ureg_SUB in nine_ff

2017-01-06 Thread Jose Fonseca

I think this is a good idea.

We still use them but I'm happy to see them go

It would be much easier for you and for us if you just implemented a 
ureg_ABS() / ureg_SUB inline helper that would call ureg_MOV/ureg_ADD 
internally:  fewer chances of a typo somewhere, and less work necessary 
all around.


Jose


On 01/01/17 00:04, Marek Olšák wrote:

From: Axel Davy 

This is required to remove gallium SUB.

Signed-off-by: Axel Davy 
---
 src/gallium/state_trackers/nine/nine_ff.c | 40 +++
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/src/gallium/state_trackers/nine/nine_ff.c 
b/src/gallium/state_trackers/nine/nine_ff.c
index a0a33cd..7cbe3f7 100644
--- a/src/gallium/state_trackers/nine/nine_ff.c
+++ b/src/gallium/state_trackers/nine/nine_ff.c
@@ -442,23 +442,23 @@ nine_ff_build_vs(struct NineDevice9 *device, struct 
vs_build_ctx *vs)
 ureg_MOV(ureg, oPos, vs->aVtx);
 } else {
 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
 /* vs->aVtx contains the coordinates buffer wise.
 * later in the pipeline, clipping, viewport and division
 * by w (rhw = 1/w) are going to be applied, so do the reverse
 * of these transformations (except clipping) to have the good
 * position at the end.*/
 ureg_MOV(ureg, tmp, vs->aVtx);
 /* X from [X_min, X_min + width] to [-1, 1], same for Y. Z to [0, 
1] */
-ureg_SUB(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), _CONST(101));
+ureg_ADD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), ureg_negate(_CONST(101)));
 ureg_MUL(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), _CONST(100));
-ureg_SUB(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XY), 
ureg_src(tmp), ureg_imm1f(ureg, 1.0f));
+ureg_ADD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XY), 
ureg_src(tmp), ureg_imm1f(ureg, -1.0f));
 /* Y needs to be reversed */
 ureg_MOV(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_Y), 
ureg_negate(ureg_src(tmp)));
 /* inverse rhw */
 ureg_RCP(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_W), _W(tmp));
 /* multiply X, Y, Z by w */
 ureg_MUL(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), _W(tmp));
 ureg_MOV(ureg, oPos, ureg_src(tmp));
 ureg_release_temporary(ureg, tmp);
 }
 } else if (key->vertexblend) {
@@ -504,21 +504,21 @@ nine_ff_build_vs(struct NineDevice9 *device, struct 
vs_build_ctx *vs)
 ureg_MAD(ureg, tmp2, _(vs->aNrm), cWM[1], ureg_src(tmp2));
 ureg_MAD(ureg, tmp2, _(vs->aNrm), cWM[2], ureg_src(tmp2));
 }

 if (i < (key->vertexblend - 1)) {
 /* accumulate weighted position value */
 ureg_MAD(ureg, aVtx_dst, ureg_src(tmp), ureg_scalar(vs->aWgt, 
i), ureg_src(aVtx_dst));
 if (has_aNrm)
 ureg_MAD(ureg, aNrm_dst, ureg_src(tmp2), 
ureg_scalar(vs->aWgt, i), ureg_src(aNrm_dst));
 /* subtract weighted position value for last value */
-ureg_SUB(ureg, sum_blendweights, ureg_src(sum_blendweights), 
ureg_scalar(vs->aWgt, i));
+ureg_ADD(ureg, sum_blendweights, ureg_src(sum_blendweights), 
ureg_negate(ureg_scalar(vs->aWgt, i)));
 }
 }

 /* the last weighted position is always 1 - sum_of_previous_weights */
 ureg_MAD(ureg, aVtx_dst, ureg_src(tmp), 
ureg_scalar(ureg_src(sum_blendweights), key->vertexblend - 1), 
ureg_src(aVtx_dst));
 if (has_aNrm)
 ureg_MAD(ureg, aNrm_dst, ureg_src(tmp2), 
ureg_scalar(ureg_src(sum_blendweights), key->vertexblend - 1), 
ureg_src(aNrm_dst));

 /* multiply by VIEW_PROJ */
 ureg_MUL(ureg, tmp, _X(aVtx_dst), _CONST(8));
@@ -654,36 +654,36 @@ nine_ff_build_vs(struct NineDevice9 *device, struct 
vs_build_ctx *vs)
 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_W), 
ureg_imm1f(ureg, 1.0f));
 dim_input = 4;
 break;
 case NINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR:
 tmp.WriteMask = TGSI_WRITEMASK_XYZ;
 aVtx_normed = ureg_DECL_temporary(ureg);
 ureg_normalize3(ureg, aVtx_normed, vs->aVtx);
 ureg_DP3(ureg, tmp_x, ureg_src(aVtx_normed), vs->aNrm);
 ureg_MUL(ureg, tmp, vs->aNrm, _X(tmp));
 ureg_ADD(ureg, tmp, ureg_src(tmp), ureg_src(tmp));
-ureg_SUB(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XYZ), 
ureg_src(aVtx_normed), ureg_src(tmp));
+ureg_ADD(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XYZ), 
ureg_src(aVtx_normed), ureg_negate(ureg_src(tmp)));
 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_W), 
ureg_imm1f(ureg, 1.0f));
 

[Mesa-dev] [PATCH 2/5] st/nine: Remove all usage of ureg_SUB in nine_ff

2016-12-31 Thread Marek Olšák
From: Axel Davy 

This is required to remove gallium SUB.

Signed-off-by: Axel Davy 
---
 src/gallium/state_trackers/nine/nine_ff.c | 40 +++
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/src/gallium/state_trackers/nine/nine_ff.c 
b/src/gallium/state_trackers/nine/nine_ff.c
index a0a33cd..7cbe3f7 100644
--- a/src/gallium/state_trackers/nine/nine_ff.c
+++ b/src/gallium/state_trackers/nine/nine_ff.c
@@ -442,23 +442,23 @@ nine_ff_build_vs(struct NineDevice9 *device, struct 
vs_build_ctx *vs)
 ureg_MOV(ureg, oPos, vs->aVtx);
 } else {
 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
 /* vs->aVtx contains the coordinates buffer wise.
 * later in the pipeline, clipping, viewport and division
 * by w (rhw = 1/w) are going to be applied, so do the reverse
 * of these transformations (except clipping) to have the good
 * position at the end.*/
 ureg_MOV(ureg, tmp, vs->aVtx);
 /* X from [X_min, X_min + width] to [-1, 1], same for Y. Z to [0, 
1] */
-ureg_SUB(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), _CONST(101));
+ureg_ADD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), ureg_negate(_CONST(101)));
 ureg_MUL(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), _CONST(100));
-ureg_SUB(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XY), 
ureg_src(tmp), ureg_imm1f(ureg, 1.0f));
+ureg_ADD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XY), 
ureg_src(tmp), ureg_imm1f(ureg, -1.0f));
 /* Y needs to be reversed */
 ureg_MOV(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_Y), 
ureg_negate(ureg_src(tmp)));
 /* inverse rhw */
 ureg_RCP(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_W), _W(tmp));
 /* multiply X, Y, Z by w */
 ureg_MUL(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), 
ureg_src(tmp), _W(tmp));
 ureg_MOV(ureg, oPos, ureg_src(tmp));
 ureg_release_temporary(ureg, tmp);
 }
 } else if (key->vertexblend) {
@@ -504,21 +504,21 @@ nine_ff_build_vs(struct NineDevice9 *device, struct 
vs_build_ctx *vs)
 ureg_MAD(ureg, tmp2, _(vs->aNrm), cWM[1], ureg_src(tmp2));
 ureg_MAD(ureg, tmp2, _(vs->aNrm), cWM[2], ureg_src(tmp2));
 }
 
 if (i < (key->vertexblend - 1)) {
 /* accumulate weighted position value */
 ureg_MAD(ureg, aVtx_dst, ureg_src(tmp), ureg_scalar(vs->aWgt, 
i), ureg_src(aVtx_dst));
 if (has_aNrm)
 ureg_MAD(ureg, aNrm_dst, ureg_src(tmp2), 
ureg_scalar(vs->aWgt, i), ureg_src(aNrm_dst));
 /* subtract weighted position value for last value */
-ureg_SUB(ureg, sum_blendweights, ureg_src(sum_blendweights), 
ureg_scalar(vs->aWgt, i));
+ureg_ADD(ureg, sum_blendweights, ureg_src(sum_blendweights), 
ureg_negate(ureg_scalar(vs->aWgt, i)));
 }
 }
 
 /* the last weighted position is always 1 - sum_of_previous_weights */
 ureg_MAD(ureg, aVtx_dst, ureg_src(tmp), 
ureg_scalar(ureg_src(sum_blendweights), key->vertexblend - 1), 
ureg_src(aVtx_dst));
 if (has_aNrm)
 ureg_MAD(ureg, aNrm_dst, ureg_src(tmp2), 
ureg_scalar(ureg_src(sum_blendweights), key->vertexblend - 1), 
ureg_src(aNrm_dst));
 
 /* multiply by VIEW_PROJ */
 ureg_MUL(ureg, tmp, _X(aVtx_dst), _CONST(8));
@@ -654,36 +654,36 @@ nine_ff_build_vs(struct NineDevice9 *device, struct 
vs_build_ctx *vs)
 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_W), 
ureg_imm1f(ureg, 1.0f));
 dim_input = 4;
 break;
 case NINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR:
 tmp.WriteMask = TGSI_WRITEMASK_XYZ;
 aVtx_normed = ureg_DECL_temporary(ureg);
 ureg_normalize3(ureg, aVtx_normed, vs->aVtx);
 ureg_DP3(ureg, tmp_x, ureg_src(aVtx_normed), vs->aNrm);
 ureg_MUL(ureg, tmp, vs->aNrm, _X(tmp));
 ureg_ADD(ureg, tmp, ureg_src(tmp), ureg_src(tmp));
-ureg_SUB(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XYZ), 
ureg_src(aVtx_normed), ureg_src(tmp));
+ureg_ADD(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XYZ), 
ureg_src(aVtx_normed), ureg_negate(ureg_src(tmp)));
 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_W), 
ureg_imm1f(ureg, 1.0f));
 ureg_release_temporary(ureg, aVtx_normed);
 dim_input = 4;
 tmp.WriteMask = TGSI_WRITEMASK_XYZW;
 break;
 case NINED3DTSS_TCI_SPHEREMAP:
 /* Implement the formula of GL_SPHERE_MAP */
 tmp.WriteMask = TGSI_WRITEMASK_XYZ;
 aVtx_normed = ureg_DECL_temporary(ureg);
 tmp2 =