softpipe: handle 32-bit bitfield inserts

Fixes piglits if ARB_gpu_shader5 is enabled

Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Dave Airlie
2019-03-21 14:15:43 +10:00
parent 7b7cb1bc35
commit 8dc8b1361a
+7 -3
View File
@@ -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);
}
}
}