On 03/23/2016 08:09 PM, Jason Ekstrand wrote:
> Is there a 64-bit pow in GLSL? If so, this is the right implementation.
There isn't. But there also aren't double versions of sin or cos, and
9076c4e2 added those. However, it didn't add double versions of fexp2
or flog2 (both of which are not supported in GLSL).
Ugh... it also did not add double versions of frsq or fsqrt... which are
supported in GLSL.
So, there are some extra functions and some missing functions. My gut
tells me we should just do all of them so that people don't have to
think about which ones should / shouldn't be implemented.
Looking more closely... I think fabs, fnot, fsign, and fsat should have
explicit double support as well... it seems the existing implementations
of both of these will cause some small values to be incorrectly
"flushed" to zero. What are the rules in C when you compare a double
variable with a single constant?
void foo(double d)
{
/* Does d get converted to single, or does 0.0f get converted to
* double?
*/
if (d == 0.0f)
printf("zero\n");
}
> Reviewed-by: Jason Ekstrand <[email protected]
> <mailto:[email protected]>>
>
> On Mar 23, 2016 7:42 PM, "Ian Romanick" <[email protected]
> <mailto:[email protected]>> wrote:
>
> From: Ian Romanick <[email protected]
> <mailto:[email protected]>>
>
> Found (randomly) by inspection. Looking at the rest of the changes in
> this file in commit 9076c4e2, I'm certain this is what was intended.
>
> Signed-off-by: Ian Romanick <[email protected]
> <mailto:[email protected]>>
> Cc: Connor Abbott <[email protected] <mailto:[email protected]>>
> Cc: [email protected]
> <mailto:[email protected]>
> ---
> src/compiler/nir/nir_opcodes.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/compiler/nir/nir_opcodes.py
> b/src/compiler/nir/nir_opcodes.py
> index 553f924..ac59130 100644
> --- a/src/compiler/nir/nir_opcodes.py
> +++ b/src/compiler/nir/nir_opcodes.py
> @@ -520,7 +520,7 @@ for (int i = 0; i < 32; i += 8) {
> }
> """)
>
> -binop("fpow", tfloat, "", "bit_size == 64 ? powf(src0, src1) :
> pow(src0, src1)")
> +binop("fpow", tfloat, "", "bit_size == 64 ? pow(src0, src1) :
> powf(src0, src1)")
>
> binop_horiz("pack_half_2x16_split", 1, tuint32, 1, tfloat32, 1,
> tfloat32,
> "pack_half_1x16(src0.x) | (pack_half_1x16(src1.x) << 16)")
> --
> 2.5.5
>
> _______________________________________________
> mesa-dev mailing list
> [email protected] <mailto:[email protected]>
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev