From e7a05a601eb065b666d07753fa6eca865d3bd160 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 7 Aug 2019 10:33:15 -0700 Subject: [PATCH] panfrost: Fixup stream out information per variant We could probably get away with doing this once per pipe_shader_state but let's not jump down that rabbit hole quite yet. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Boris Brezillon --- src/gallium/drivers/panfrost/pan_context.c | 7 +++++++ src/gallium/drivers/panfrost/pan_context.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index 79995fa11c7..e023144b9c8 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -2129,6 +2129,13 @@ panfrost_bind_shader_state( &outputs_written); shader_state->compiled = true; + + /* Fixup the stream out information, since what Gallium returns + * normally is mildly insane */ + + shader_state->stream_output = variants->base.stream_output; + shader_state->so_mask = + update_so_info(&shader_state->stream_output, outputs_written); } } diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h index cf9b93d68c5..ba27ced9074 100644 --- a/src/gallium/drivers/panfrost/pan_context.h +++ b/src/gallium/drivers/panfrost/pan_context.h @@ -232,6 +232,8 @@ struct panfrost_shader_state { struct mali_attr_meta varyings[PIPE_MAX_ATTRIBS]; gl_varying_slot varyings_loc[PIPE_MAX_ATTRIBS]; + struct pipe_stream_output_info stream_output; + uint64_t so_mask; unsigned sysval_count; unsigned sysval[MAX_SYSVAL_COUNT]; -- 2.30.2