Checking vs->writes_point_size is not enough, as we might have a vertex
shader writing point size, but a primitive that's not MALI_POINT. That
currently works because emit_varying_descriptor() is called before the
primitive_size.constant field is update, but let's make the logic more
robust, just in case things are re-ordered at some point.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4083>
memcpy(&ctx->fragment_shader_core, &shader, sizeof(shader));
}
-static bool
+bool
panfrost_writes_point_size(struct panfrost_context *ctx)
{
assert(ctx->shader[PIPE_SHADER_VERTEX]);
void
panfrost_invalidate_frame(struct panfrost_context *ctx);
+bool
+panfrost_writes_point_size(struct panfrost_context *ctx);
+
void
panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data);
sizeof(float) * 4, vertex_count);
- if (vs->writes_point_size)
+ if (panfrost_writes_point_size(ctx))
ctx->payloads[PIPE_SHADER_FRAGMENT].primitive_size.pointer =
panfrost_emit_varyings(ctx, &varyings[gl_PointSize],
2, vertex_count);