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>
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);