softpipe: fix 32-bit bitfield extract
These didn't deal with the width == 32 case that TGSI is defined with. Fixes piglit tests if ARB_gpu_shader5 is enabled. Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -4912,8 +4912,13 @@ micro_ibfe(union tgsi_exec_channel *dst,
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 4; i++) {
|
||||
int width = src2->i[i] & 0x1f;
|
||||
int width = src2->i[i];
|
||||
int offset = src1->i[i] & 0x1f;
|
||||
if (width == 32 && offset == 0) {
|
||||
dst->i[i] = src0->i[i];
|
||||
continue;
|
||||
}
|
||||
width &= 0x1f;
|
||||
if (width == 0)
|
||||
dst->i[i] = 0;
|
||||
else if (width + offset < 32)
|
||||
@@ -4934,8 +4939,13 @@ micro_ubfe(union tgsi_exec_channel *dst,
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 4; i++) {
|
||||
int width = src2->u[i] & 0x1f;
|
||||
int width = src2->u[i];
|
||||
int offset = src1->u[i] & 0x1f;
|
||||
if (width == 32 && offset == 0) {
|
||||
dst->u[i] = src0->u[i];
|
||||
continue;
|
||||
}
|
||||
width &= 0x1f;
|
||||
if (width == 0)
|
||||
dst->u[i] = 0;
|
||||
else if (width + offset < 32)
|
||||
|
||||
Reference in New Issue
Block a user