Commit d174cbcc authored by Gert Wollny's avatar Gert Wollny Committed by Gert Wollny

r600: Only set context streamout strides info from the shader that has outputs

With 5d517a streamout info is only attached to the shader for which the
transform feedback is actually recorded, but the driver set the context info
with each state submitted, thereby always using the info data that was
attached to the vertex shader.

Pass the streamout stride info to the context only from the shader that
actually has outputs. (Thanks to Marek Olšák for pointing me in the right

Fixes regresion with: dEQP-GLES31.functional.tessellation.invariance.*
Fixes: 5d517a59
  st/mesa: Don't record garbage streamout information in the non-SSO case.
Signed-off-by: 's avatarGert Wollny <>
Reviewed-by: 's avatarDave Airlie <>
parent 18a8e11a
......@@ -1020,7 +1020,9 @@ static void r600_bind_vs_state(struct pipe_context *ctx, void *state)
rctx->vs_shader = (struct r600_pipe_shader_selector *)state;
r600_update_vs_writes_viewport_index(&rctx->b, r600_get_vs_info(rctx));
rctx->b.streamout.stride_in_dw = rctx->vs_shader->so.stride;
if (rctx->vs_shader->so.num_outputs)
rctx->b.streamout.stride_in_dw = rctx->vs_shader->so.stride;
static void r600_bind_gs_state(struct pipe_context *ctx, void *state)
......@@ -1035,7 +1037,9 @@ static void r600_bind_gs_state(struct pipe_context *ctx, void *state)
if (!state)
rctx->b.streamout.stride_in_dw = rctx->gs_shader->so.stride;
if (rctx->gs_shader->so.num_outputs)
rctx->b.streamout.stride_in_dw = rctx->gs_shader->so.stride;
static void r600_bind_tcs_state(struct pipe_context *ctx, void *state)
......@@ -1057,7 +1061,9 @@ static void r600_bind_tes_state(struct pipe_context *ctx, void *state)
if (!state)
rctx->b.streamout.stride_in_dw = rctx->tes_shader->so.stride;
if (rctx->tes_shader->so.num_outputs)
rctx->b.streamout.stride_in_dw = rctx->tes_shader->so.stride;
void r600_delete_shader_selector(struct pipe_context *ctx,
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment