mali_ptr *buffers,
unsigned *buffer_count,
mali_ptr *position,
- mali_ptr *psiz)
+ mali_ptr *psiz,
+ bool point_coord_replace)
{
/* Load the shaders */
struct panfrost_context *ctx = batch->ctx;
uint16_t point_coord_mask = ctx->rasterizer->base.sprite_coord_enable;
/* TODO: point sprites need lowering on Bifrost */
- if (pan_is_bifrost(dev))
+ if (!point_coord_replace || pan_is_bifrost(dev))
point_coord_mask = 0;
unsigned present = pan_varying_present(dev, vs, fs, point_coord_mask);
/* Emit all sort of descriptors. */
mali_ptr varyings = 0, vs_vary = 0, fs_vary = 0, pos = 0, psiz = 0;
+ bool point_coord_replace = (info->mode == PIPE_PRIM_POINTS);
+
panfrost_emit_varying_descriptor(batch,
ctx->padded_count *
ctx->instance_count,
&vs_vary, &fs_vary, &varyings,
- NULL, &pos, &psiz);
+ NULL, &pos, &psiz,
+ point_coord_replace);
mali_ptr attribs, attrib_bufs;
attribs = panfrost_emit_vertex_data(batch, &attrib_bufs);
ctx->instance_count = ctx->vertex_count = ctx->padded_count = 0;
ctx->offset_start = 0;
+ bool point_coord_replace = (info->mode == PIPE_PRIM_POINTS);
+
panfrost_emit_varying_descriptor(batch, 0,
&vs_vary, &fs_vary, &varyings,
- &varying_buf_count, &pos, &psiz);
+ &varying_buf_count, &pos, &psiz,
+ point_coord_replace);
mali_ptr attribs, attrib_bufs;
attribs = panfrost_emit_vertex_data(batch, &attrib_bufs);