From: Alyssa Rosenzweig Date: Wed, 7 Aug 2019 17:33:15 +0000 (-0700) Subject: panfrost: Fixup stream out information per variant X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e7a05a601eb065b666d07753fa6eca865d3bd160;p=mesa.git 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 --- 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];