[Mesa-dev] [PATCH 1/4] glsl: Calculate bitset of secondary outputs written in ir_set_program_inouts.
Francisco Jerez
currojerez at riseup.net
Tue Aug 30 22:17:35 UTC 2016
---
src/compiler/glsl/ir_set_program_inouts.cpp | 9 +++++++--
src/mesa/main/mtypes.h | 1 +
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/compiler/glsl/ir_set_program_inouts.cpp b/src/compiler/glsl/ir_set_program_inouts.cpp
index fcfbcd4..06d9973 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;
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 4013ca7..09b84f1 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1919,6 +1919,7 @@ struct gl_program
GLbitfield64 InputsRead; /**< Bitmask of which input regs are read */
GLbitfield64 DoubleInputsRead; /**< Bitmask of which input regs are read and are doubles */
GLbitfield64 OutputsWritten; /**< Bitmask of which output regs are written */
+ GLbitfield64 SecondaryOutputsWritten; /**< Subset of OutputsWritten outputs written with non-zero index. */
GLbitfield64 OutputsRead; /**< Bitmask of which output regs are read */
GLbitfield PatchInputsRead; /**< VAR[0..31] usage for patch inputs (user-defined only) */
GLbitfield PatchOutputsWritten; /**< VAR[0..31] usage for patch outputs (user-defined only) */
--
2.9.0
More information about the mesa-dev
mailing list