Module: Mesa Branch: master Commit: 024e814dee20a58f1d11129ffb2b4497beeacca7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=024e814dee20a58f1d11129ffb2b4497beeacca7
Author: Eric Anholt <e...@anholt.net> Date: Tue Mar 20 11:09:02 2018 -0700 broadcom/vc5: Handle sparsely populated SO target array. Fixes GTF-GLES3.gtf.GL3Tests.transform_feedback.transform_feedback_state_variables --- src/gallium/drivers/vc5/vc5_emit.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/vc5/vc5_emit.c b/src/gallium/drivers/vc5/vc5_emit.c index ae47fda81f..e5a9e0e03a 100644 --- a/src/gallium/drivers/vc5/vc5_emit.c +++ b/src/gallium/drivers/vc5/vc5_emit.c @@ -597,10 +597,13 @@ v3dX(emit_state)(struct pipe_context *pctx) for (int i = 0; i < so->num_targets; i++) { const struct pipe_stream_output_target *target = so->targets[i]; - struct vc5_resource *rsc = - vc5_resource(target->buffer); + struct vc5_resource *rsc = target ? + vc5_resource(target->buffer) : NULL; #if V3D_VERSION >= 40 + if (!target) + continue; + cl_emit(&job->bcl, TRANSFORM_FEEDBACK_BUFFER, output) { output.buffer_address = cl_address(rsc->bo, @@ -611,13 +614,17 @@ v3dX(emit_state)(struct pipe_context *pctx) } #else /* V3D_VERSION < 40 */ cl_emit(&job->bcl, TRANSFORM_FEEDBACK_OUTPUT_ADDRESS, output) { - output.address = - cl_address(rsc->bo, - target->buffer_offset); + if (target) { + output.address = + cl_address(rsc->bo, + target->buffer_offset); + } }; #endif /* V3D_VERSION < 40 */ - vc5_job_add_write_resource(vc5->job, - target->buffer); + if (target) { + vc5_job_add_write_resource(vc5->job, + target->buffer); + } /* XXX: buffer_size? */ } } else { _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit