mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 08:58:02 +02:00
panfrost: Assign primitive_size.pointer only if writes_point_size() returns true
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>
This commit is contained in:
parent
24db276d11
commit
a0402f7960
3 changed files with 5 additions and 2 deletions
|
|
@ -353,7 +353,7 @@ panfrost_default_shader_backend(struct panfrost_context *ctx)
|
|||
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]);
|
||||
|
|
|
|||
|
|
@ -278,6 +278,9 @@ panfrost_create_context(struct pipe_screen *screen, void *priv, unsigned flags);
|
|||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -299,7 +299,7 @@ panfrost_emit_varying_descriptor(
|
|||
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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue