pan/mdg: Implement load_global_invocation_id
authorIcecream95 <ixn@disroot.org>
Tue, 22 Dec 2020 12:54:01 +0000 (01:54 +1300)
committerMarge Bot <eric+marge@anholt.net>
Fri, 1 Jan 2021 02:58:49 +0000 (02:58 +0000)
NIR generates global_invocation_id, but Clover lowers it to
global_invocation_id_zero_base. It isn't lowered for OpenGL,
so we need to support both intrinsics.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8264>

src/panfrost/midgard/midgard_compile.c

index accb5bc..c0be6a7 100644 (file)
@@ -1310,6 +1310,9 @@ compute_builtin_arg(nir_op op)
                 return 0x14;
         case nir_intrinsic_load_local_invocation_id:
                 return 0x10;
+        case nir_intrinsic_load_global_invocation_id:
+        case nir_intrinsic_load_global_invocation_id_zero_base:
+                return 0x18;
         default:
                 unreachable("Invalid compute paramater loaded");
         }
@@ -1797,6 +1800,8 @@ emit_intrinsic(compiler_context *ctx, nir_intrinsic_instr *instr)
 
         case nir_intrinsic_load_work_group_id:
         case nir_intrinsic_load_local_invocation_id:
+        case nir_intrinsic_load_global_invocation_id:
+        case nir_intrinsic_load_global_invocation_id_zero_base:
                 emit_compute_builtin(ctx, instr);
                 break;