On 02/19/2015 03:53 PM, Dave Airlie wrote:
Module: Mesa
Branch: master
Commit: fa43e0443e206740e219d45abefee65bdb2c3ecb
URL:
https://urldefense.proofpoint.com/v2/url?u=http-3A__cgit.freedesktop.org_mesa_mesa_commit_-3Fid-3Dfa43e0443e206740e219d45abefee65bdb2c3ecb&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=wliriAj2Oy285HDmqyh5ciHQpkhmeNqaYMAXn6TDVgo&s=QfqfqTGO4IS5Ib7ukIrfSIR3EGdcXECY38l_K3GlYlo&e=
Author: Dave Airlie <airl...@redhat.com>
Date: Wed Aug 27 09:56:14 2014 +1000
tgsi: add support for flt64 constants
These act like flt32 except they take up two slots, and you
can only add 2 x flt64 constants in one slot.
The main reason they are different is we don't want to match half a flt64
constants against a flt32 constant in the matching code, we need to make
sure we treat both parts of the flt64 as an single structure.
Cleaned up printing/parsing by Ilia Mirkin <imir...@alum.mit.edu>
Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu>
Signed-off-by: Dave Airlie <airl...@redhat.com>
---
src/gallium/auxiliary/tgsi/tgsi_dump.c | 8 +++
src/gallium/auxiliary/tgsi/tgsi_parse.c | 1 +
src/gallium/auxiliary/tgsi/tgsi_strings.c | 5 +-
src/gallium/auxiliary/tgsi/tgsi_strings.h | 2 +-
src/gallium/auxiliary/tgsi/tgsi_text.c | 22 ++++++++
src/gallium/auxiliary/tgsi/tgsi_ureg.c | 75 ++++++++++++++++++++++++++--
src/gallium/auxiliary/tgsi/tgsi_ureg.h | 5 ++
src/gallium/include/pipe/p_shader_tokens.h | 1 +
8 files changed, 113 insertions(+), 6 deletions(-)
[...]
diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c
b/src/gallium/auxiliary/tgsi/tgsi_text.c
index f965b01..5069d13 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
@@ -232,6 +232,24 @@ static boolean parse_float( const char **pcur, float *val )
return TRUE;
}
+static boolean parse_double( const char **pcur, uint32_t *val0, uint32_t *val1)
+{
+ const char *cur = *pcur;
+ union {
+ double dval;
+ uint32_t uval[2];
+ } v;
+
+ v.dval = strtod(cur, pcur);
+ if (*pcur == cur)
+ return FALSE;
+
+ *val0 = v.uval[0];
+ *val1 = v.uval[1];
+
+ return TRUE;
+}
Hi Dave, I'm seeing a new compiler warning in that code:
tgsi/tgsi_text.c: In function 'parse_double':
tgsi/tgsi_text.c:243:4: warning: passing argument 2 of 'strtod' from
incompatible pointer type [enabled by default]
v.dval = strtod(cur, pcur);
^
In file included from ../../../src/gallium/include/pipe/p_compiler.h:36:0,
from ./os/os_misc.h:38,
from ./util/u_debug.h:42,
from tgsi/tgsi_text.c:28:
/usr/include/stdlib.h:164:15: note: expected 'char ** restrict' but
argument is of type 'const char **'
extern double strtod (const char *__restrict __nptr,
^
Can you clean that up?
gcc 4.8.2
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev