[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