[Mesa-dev] [PATCH 1/2] softpipe: fix 32-bit bitfield extract
Brian Paul
brianp at vmware.com
Thu Mar 21 14:36:12 UTC 2019
All four patches look good to me
Reviewed-by: Brian Paul <brianp at vmware.com>
On 03/20/2019 10:16 PM, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> These didn't deal with the width == 32 case that TGSI is defined with.
>
> Fixes piglit tests if ARB_gpu_shader5 is enabled.
> ---
> src/gallium/auxiliary/tgsi/tgsi_exec.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
> index e1181aa1932..c93e4e26e40 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
> @@ -4944,8 +4944,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)
> @@ -4966,8 +4971,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)
>
More information about the mesa-dev
mailing list