On Thu, 2017-11-09 at 03:58 +0100, srol...@vmware.com wrote:
> From: Roland Scheidegger <srol...@vmware.com>
> 
> r600 used the clamped version for rcp, whereas both evergreen and cayman
> used the ieee version. I don't know why that discrepancy exists (it does so
> since day 1) but there does not seem to be a valid reason for this, so make
> it consistent. This seems now safer than before the previous commit (using
> the mystery dx10 clamp).
> Note that rsq still uses clamped version (as before even though the table
> may have suggested otherwise for evergreen) for r600/eg, but not for cayman.

just layman's opinion here. Does TGSI not mandate specific behaviour
wrt nans and infinities for this OP?

> I just don't feel lucky enough to change this (it should also be noted r600
> supports sqrt natively, which is always ieee, therefore might not really see
> rsqrt with glsl often presumably).

why would that be? isn't RECIPSQRT_IEEE(x) still optimization over
RECIP_IEEE(SQRT(x))?

Jan

> Compile tested only...
> ---
>  src/gallium/drivers/r600/r600_shader.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/src/gallium/drivers/r600/r600_shader.c 
> b/src/gallium/drivers/r600/r600_shader.c
> index 6a755bb3fd..628c33787e 100644
> --- a/src/gallium/drivers/r600/r600_shader.c
> +++ b/src/gallium/drivers/r600/r600_shader.c
> @@ -8830,11 +8830,7 @@ static const struct r600_shader_tgsi_instruction 
> r600_shader_tgsi_instruction[]
>       [TGSI_OPCODE_MOV]       = { ALU_OP1_MOV, tgsi_op2},
>       [TGSI_OPCODE_LIT]       = { ALU_OP0_NOP, tgsi_lit},
>  
> -     /* XXX:
> -      * For state trackers other than OpenGL, we'll want to use
> -      * _RECIP_IEEE instead.
> -      */
> -     [TGSI_OPCODE_RCP]       = { ALU_OP1_RECIP_CLAMPED, 
> tgsi_trans_srcx_replicate},
> +     [TGSI_OPCODE_RCP]       = { ALU_OP1_RECIP_IEEE, 
> tgsi_trans_srcx_replicate},
>  
>       [TGSI_OPCODE_RSQ]       = { ALU_OP0_NOP, tgsi_rsq},
>       [TGSI_OPCODE_EXP]       = { ALU_OP0_NOP, tgsi_exp},
> @@ -9034,7 +9030,7 @@ static const struct r600_shader_tgsi_instruction 
> eg_shader_tgsi_instruction[] =
>       [TGSI_OPCODE_MOV]       = { ALU_OP1_MOV, tgsi_op2},
>       [TGSI_OPCODE_LIT]       = { ALU_OP0_NOP, tgsi_lit},
>       [TGSI_OPCODE_RCP]       = { ALU_OP1_RECIP_IEEE, 
> tgsi_trans_srcx_replicate},
> -     [TGSI_OPCODE_RSQ]       = { ALU_OP1_RECIPSQRT_IEEE, tgsi_rsq},
> +     [TGSI_OPCODE_RSQ]       = { ALU_OP0_NOP, tgsi_rsq},
>       [TGSI_OPCODE_EXP]       = { ALU_OP0_NOP, tgsi_exp},
>       [TGSI_OPCODE_LOG]       = { ALU_OP0_NOP, tgsi_log},
>       [TGSI_OPCODE_MUL]       = { ALU_OP2_MUL_IEEE, tgsi_op2},

Attachment: signature.asc
Description: This is a digitally signed message part

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

Reply via email to