gallivm: fix conversion for pure integer formats
authorRoland Scheidegger <sroland@vmware.com>
Mon, 17 Dec 2012 21:06:40 +0000 (22:06 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Tue, 18 Dec 2012 00:57:35 +0000 (01:57 +0100)
Since the idea is to just expand or shrink the bit width but not otherwise do
conversion we also need to adjust the sign bit according to src, otherwise
the conversion code will incorrectly clamp the values. (Since this only works
for casting to ordinary floats the norm and fixed bits should always be fine.)

This fixes the remaining piglit attribs GL3 failures.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_format_aos_array.c

index 1eb94466280f99e20849e4c61e30ba17fc539df8..9642b9ecfed74e0ab7354fb612f97f038c068b7a 100644 (file)
@@ -150,6 +150,7 @@ lp_build_fetch_rgba_aos_array(struct gallivm_state *gallivm,
    if (pure_integer) {
       assert(dst_type.floating);
       tmp_type.floating = 0;
+      tmp_type.sign = src_type.sign;
    }
 
    /* Convert to correct format */