mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
st/nir: Disable varying packing when doing transform feedback.
The varying packing would result in st_nir_assign_var_locations() picking new driver_locations, despite the pipe_stream_output already being set up for the old driver location. This left the gallium driver with no way to work back to what varying was referenced by pipe_stream_output. Fixes these tests on V3D: dEQP-GLES3.functional.transform_feedback.random.separate.points.3 dEQP-GLES3.functional.transform_feedback.random.separate.points.7 dEQP-GLES3.functional.transform_feedback.random.separate.points.9 dEQP-GLES3.functional.transform_feedback.random.separate.triangles.3 dEQP-GLES3.functional.transform_feedback.random.separate.triangles.8 Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
ab7aa0f10c
commit
dbd52585fa
1 changed files with 9 additions and 1 deletions
|
|
@ -745,7 +745,15 @@ st_link_nir(struct gl_context *ctx,
|
|||
shader->Program->info = nir->info;
|
||||
|
||||
if (prev != -1) {
|
||||
nir_compact_varyings(shader_program->_LinkedShaders[prev]->Program->nir,
|
||||
struct gl_program *prev_shader =
|
||||
shader_program->_LinkedShaders[prev]->Program;
|
||||
|
||||
/* We can't use nir_compact_varyings with transform feedback, since
|
||||
* the pipe_stream_output->output_register field is based on the
|
||||
* pre-compacted driver_locations.
|
||||
*/
|
||||
if (!prev_shader->sh.LinkedTransformFeedback)
|
||||
nir_compact_varyings(shader_program->_LinkedShaders[prev]->Program->nir,
|
||||
nir, ctx->API != API_OPENGL_COMPAT);
|
||||
}
|
||||
prev = i;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue