Mesa (master): intel/decoder: Decode SFIXED values.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Aug 23 20:06:57 UTC 2018


Module: Mesa
Branch: master
Commit: 578e45ab7bc58e153c4e7e1e2a024e7dfd7159f2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=578e45ab7bc58e153c4e7e1e2a024e7dfd7159f2

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Aug 23 01:06:53 2018 -0700

intel/decoder: Decode SFIXED values.

This lets us example SAMPLER_STATE's LOD Bias field, among other things.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

---

 src/intel/common/gen_decoder.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
index c14c23aad1..39da3cadbf 100644
--- a/src/intel/common/gen_decoder.c
+++ b/src/intel/common/gen_decoder.c
@@ -944,10 +944,14 @@ iter_decode_field(struct gen_field_iterator *iter)
       snprintf(iter->value, sizeof(iter->value), "%f",
                (float) v.qw / (1 << iter->field->type.f));
       break;
-   case GEN_TYPE_SFIXED:
-      /* FIXME: Sign extend extracted field. */
-      snprintf(iter->value, sizeof(iter->value), "%s", "foo");
+   case GEN_TYPE_SFIXED: {
+      /* Sign extend before converting */
+      int bits = iter->field->type.i + iter->field->type.f + 1;
+      int64_t v_sign_extend = ((int64_t)(v.qw << (64 - bits))) >> (64 - bits);
+      snprintf(iter->value, sizeof(iter->value), "%f",
+               (float) v_sign_extend / (1 << iter->field->type.f));
       break;
+   }
    case GEN_TYPE_MBO:
        break;
    case GEN_TYPE_ENUM: {




More information about the mesa-commit mailing list