OUT_RING(ring, info->primitive_restart ? /* PC_RESTART_INDEX */
info->restart_index : 0xffffffff);
- /* points + psize -> spritelist: */
- if (ctx->rasterizer->point_size_per_vertex &&
- fd5_emit_get_vp(emit)->writes_psize &&
- (info->mode == PIPE_PRIM_POINTS))
- primtype = DI_PT_POINTLIST_PSIZE;
-
fd5_emit_render_cntl(ctx, false);
fd5_draw_emit(ctx->batch, ring, primtype,
emit->key.binning_pass ? IGNORE_VISIBILITY : USE_VISIBILITY,
uint32_t pos_regid, psize_regid, color_regid[8];
uint32_t face_regid, coord_regid, zwcoord_regid;
uint32_t vcoord_regid, vertex_regid, instance_regid;
+ uint8_t psize_loc = ~0;
int i, j;
setup_stages(emit, s);
if (pos_regid != regid(63,0))
ir3_link_add(&l, pos_regid, 0xf, l.max_loc);
- if (psize_regid != regid(63,0))
+ if (psize_regid != regid(63,0)) {
+ psize_loc = l.max_loc;
ir3_link_add(&l, psize_regid, 0x1, l.max_loc);
+ }
if ((s[VS].v->shader->stream_output.num_outputs > 0) &&
!emit->key.binning_pass) {
OUT_PKT4(ring, REG_A5XX_VPC_PACK, 1);
OUT_RING(ring, A5XX_VPC_PACK_NUMNONPOSVAR(s[FS].v->total_in) |
- (s[VS].v->writes_psize ? 0x0c00 : 0xff00)); // XXX
+ A5XX_VPC_PACK_PSIZELOC(psize_loc));
OUT_PKT4(ring, REG_A5XX_VPC_VARYING_INTERP_MODE(0), 8);
for (i = 0; i < 8; i++)