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];