Mesa (master): softpipe: handle 32-bit bitfield inserts

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Mar 21 23:32:36 UTC 2019


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Mar 21 14:15:43 2019 +1000

softpipe: handle 32-bit bitfield inserts

Fixes piglits if ARB_gpu_shader5 is enabled

Reviewed-by: Brian Paul <brianp at vmware.com>

---

 src/gallium/auxiliary/tgsi/tgsi_exec.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index f66df18c7f5..5f55de0390c 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -4967,10 +4967,14 @@ micro_bfi(union tgsi_exec_channel *dst,
 {
    int i;
    for (i = 0; i < 4; i++) {
-      int width = src3->u[i] & 0x1f;
+      int width = src3->u[i];
       int offset = src2->u[i] & 0x1f;
-      int bitmask = ((1 << width) - 1) << offset;
-      dst->u[i] = ((src1->u[i] << offset) & bitmask) | (src0->u[i] & ~bitmask);
+      if (width == 32) {
+         dst->u[i] = src1->u[i];
+      } else {
+         int bitmask = ((1 << width) - 1) << offset;
+         dst->u[i] = ((src1->u[i] << offset) & bitmask) | (src0->u[i] & ~bitmask);
+      }
    }
 }
 




More information about the mesa-commit mailing list