broadcom/genxml: Support unpacking fixed-point fractional values.
[mesa.git] / src / broadcom / cle / v3d_packet_helpers.h
index d01ff6ef0ad5c4f90bf97915f804b358defd1153..c86cad85266f503dbebadf00ccbf2de761e65099 100644 (file)
@@ -176,6 +176,22 @@ __gen_unpack_sint(const uint8_t *restrict cl, uint32_t start, uint32_t end)
    return (val << (64 - size)) >> (64 - size);
 }
 
+static inline float
+__gen_unpack_sfixed(const uint8_t *restrict cl, uint32_t start, uint32_t end,
+                    uint32_t fractional_size)
+{
+        int32_t bits = __gen_unpack_sint(cl, start, end);
+        return (float)bits / (1 << fractional_size);
+}
+
+static inline float
+__gen_unpack_ufixed(const uint8_t *restrict cl, uint32_t start, uint32_t end,
+                    uint32_t fractional_size)
+{
+        int32_t bits = __gen_unpack_uint(cl, start, end);
+        return (float)bits / (1 << fractional_size);
+}
+
 static inline float
 __gen_unpack_float(const uint8_t *restrict cl, uint32_t start, uint32_t end)
 {