pan/mdg: Wire in PAN_SYSVAL_VERTEX_INSTANCE_OFFSETS
authorAlyssa Rosenzweig <alyssa@collabora.com>
Fri, 4 Jun 2021 22:57:28 +0000 (18:57 -0400)
committerMarge Bot <eric+marge@anholt.net>
Thu, 10 Jun 2021 18:06:10 +0000 (18:06 +0000)
If we're going to advertise the CAP, better not crash..

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11123>

src/gallium/drivers/panfrost/pan_cmdstream.c
src/panfrost/midgard/midgard_compile.c

index d401bf7..c2385ec 100644 (file)
@@ -1281,6 +1281,9 @@ panfrost_emit_const_buf(struct panfrost_batch *batch,
                                 case 2:
                                         batch->ctx->base_instance_sysval_ptr = ptr;
                                         break;
+                                case 3:
+                                        /* Spurious (Midgard doesn't pack) */
+                                        break;
                                 default:
                                         unreachable("Invalid vertex/instance offset component\n");
                                 }
index 19ea671..37954c2 100644 (file)
@@ -2012,11 +2012,20 @@ emit_intrinsic(compiler_context *ctx, nir_intrinsic_instr *instr)
                 emit_global(ctx, &instr->instr, false, reg, &instr->src[1], seg);
                 break;
 
+        case nir_intrinsic_load_first_vertex:
         case nir_intrinsic_load_ssbo_address:
         case nir_intrinsic_load_work_dim:
                 emit_sysval_read(ctx, &instr->instr, 1, 0);
                 break;
 
+        case nir_intrinsic_load_base_vertex:
+                emit_sysval_read(ctx, &instr->instr, 1, 4);
+                break;
+
+        case nir_intrinsic_load_base_instance:
+                emit_sysval_read(ctx, &instr->instr, 1, 8);
+                break;
+
         case nir_intrinsic_load_sample_positions_pan:
                 emit_sysval_read(ctx, &instr->instr, 2, 0);
                 break;