VariableInfo &var_info = variables[&var];
/* Mark variables as output if they're used by the next stage or the
- graphics API. */
+ graphics API. Also mark storage buffers as output in compute stage. */
bool builtin = (!var.name.compare(0, 3, "gl_") || (var.block_declaration && !var.block_declaration->block_name.compare(0, 3, "gl_")));
- var_info.output = (var.interface=="out" && (stage->type==Stage::FRAGMENT || var.linked_declaration || builtin));
+ var_info.output = ((var.interface=="out" && (stage->type==Stage::FRAGMENT || var.linked_declaration || builtin)) ||
+ (var.interface=="buffer" && stage->type==Stage::COMPUTE));
// Linked outputs are automatically referenced.
if(var_info.output && var.linked_declaration)