zink: round out handling for streamout buffer stride setting during draw

this adds cases for tess and geometry shaders in the xfb path for grabbing
stride off the shader

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7139>
This commit is contained in:
Mike Blumenkrantz
2020-10-14 10:40:14 -04:00
parent 9915c540b2
commit d59e4b8ce6

View File

@@ -299,7 +299,10 @@ zink_draw_vbo(struct pipe_context *pctx,
if (!shader)
continue;
if (i == MESA_SHADER_VERTEX && ctx->num_so_targets) {
if (ctx->num_so_targets &&
(i == PIPE_SHADER_GEOMETRY ||
(i == PIPE_SHADER_TESS_EVAL && !ctx->gfx_stages[PIPE_SHADER_GEOMETRY]) ||
(i == PIPE_SHADER_VERTEX && !ctx->gfx_stages[PIPE_SHADER_GEOMETRY] && !ctx->gfx_stages[PIPE_SHADER_TESS_EVAL]))) {
for (unsigned i = 0; i < ctx->num_so_targets; i++) {
struct zink_so_target *t = zink_so_target(ctx->so_targets[i]);
t->stride = shader->streamout.so_info.stride[i] * sizeof(uint32_t);