summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/dri/i965/brw_link.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp
index a1082a7a05a..c0fda0d4799 100644
--- a/src/mesa/drivers/dri/i965/brw_link.cpp
+++ b/src/mesa/drivers/dri/i965/brw_link.cpp
@@ -181,7 +181,8 @@ unify_interfaces(struct shader_info **infos)
}
static void
-update_xfb_info(struct gl_transform_feedback_info *xfb_info)
+update_xfb_info(struct gl_transform_feedback_info *xfb_info,
+ struct shader_info *info)
{
if (!xfb_info)
return;
@@ -210,6 +211,8 @@ update_xfb_info(struct gl_transform_feedback_info *xfb_info)
output->ComponentOffset = 3;
break;
}
+
+ info->outputs_written |= 1ull << output->OutputRegister;
}
}
@@ -236,8 +239,6 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
prog->ShadowSamplers = shader->shadow_samplers;
_mesa_update_shader_textures_used(shProg, prog);
- update_xfb_info(prog->sh.LinkedTransformFeedback);
-
bool debug_enabled =
(INTEL_DEBUG & intel_debug_flag_for_shader_stage(shader->Stage));
@@ -252,6 +253,8 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
compiler->scalar_stage[stage]);
infos[stage] = &prog->nir->info;
+ update_xfb_info(prog->sh.LinkedTransformFeedback, infos[stage]);
+
/* Make a pass over the IR to add state references for any built-in
* uniforms that are used. This has to be done now (during linking).
* Code generation doesn't happen until the first time this shader is