aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-08-07 10:33:15 -0700
committerAlyssa Rosenzweig <[email protected]>2019-08-13 09:43:32 -0700
commite7a05a601eb065b666d07753fa6eca865d3bd160 (patch)
tree094dad132491ae127bb163a2ece1497184a23da4 /src/gallium/drivers
parent5b0a1a4e49b49cb61d9369d3aaacfe1d124571c8 (diff)
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 <[email protected]> Reviewed-by: Boris Brezillon <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/panfrost/pan_context.c7
-rw-r--r--src/gallium/drivers/panfrost/pan_context.h2
2 files changed, 9 insertions, 0 deletions
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];