summaryrefslogtreecommitdiffstats
path: root/src/compiler/glsl
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-08-23 11:15:57 -0700
committerFrancisco Jerez <[email protected]>2016-08-30 16:54:18 -0700
commitcb4b38af41952c2e5ee77253592f0d0833aefd28 (patch)
tree80b859fac61a32159cbcaae1809d7404001d65af /src/compiler/glsl
parentc011d7d900b36c4b49832b3100a4ea759ba89ccb (diff)
glsl: Calculate bitset of secondary outputs written in ir_set_program_inouts.
Reviewed-by: Ilia Mirkin <[email protected]>
Diffstat (limited to 'src/compiler/glsl')
-rw-r--r--src/compiler/glsl/ir_set_program_inouts.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/compiler/glsl/ir_set_program_inouts.cpp b/src/compiler/glsl/ir_set_program_inouts.cpp
index fcfbcd48c93..06d997352a6 100644
--- a/src/compiler/glsl/ir_set_program_inouts.cpp
+++ b/src/compiler/glsl/ir_set_program_inouts.cpp
@@ -135,10 +135,14 @@ mark(struct gl_program *prog, ir_variable *var, int offset, int len,
prog->SystemValuesRead |= bitfield;
} else {
assert(var->data.mode == ir_var_shader_out);
- if (is_patch_generic)
+ if (is_patch_generic) {
prog->PatchOutputsWritten |= bitfield;
- else if (!var->data.read_only)
+ } else if (!var->data.read_only) {
prog->OutputsWritten |= bitfield;
+ if (var->data.index > 0)
+ prog->SecondaryOutputsWritten |= bitfield;
+ }
+
if (var->data.fb_fetch_output)
prog->OutputsRead |= bitfield;
}
@@ -446,6 +450,7 @@ do_set_program_inouts(exec_list *instructions, struct gl_program *prog,
prog->InputsRead = 0;
prog->OutputsWritten = 0;
+ prog->SecondaryOutputsWritten = 0;
prog->OutputsRead = 0;
prog->PatchInputsRead = 0;
prog->PatchOutputsWritten = 0;