summaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/glsl/glsl_to_nir.cpp2
-rw-r--r--src/compiler/nir/nir.h9
2 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp
index d3cc5b44d64..3ac21966563 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -154,6 +154,7 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
shader->info.inputs_read = sh->Program->InputsRead;
shader->info.double_inputs_read = sh->Program->DoubleInputsRead;
shader->info.outputs_written = sh->Program->OutputsWritten;
+ shader->info.outputs_read = sh->Program->OutputsRead;
shader->info.patch_inputs_read = sh->Program->PatchInputsRead;
shader->info.patch_outputs_written = sh->Program->PatchOutputsWritten;
shader->info.system_values_read = sh->Program->SystemValuesRead;
@@ -406,6 +407,7 @@ nir_visitor::visit(ir_variable *ir)
var->data.image.restrict_flag = ir->data.image_restrict;
var->data.image.format = ir->data.image_format;
var->data.max_array_access = ir->data.max_array_access;
+ var->data.fb_fetch_output = ir->data.fb_fetch_output;
var->num_state_slots = ir->get_num_state_slots();
if (var->num_state_slots > 0) {
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 5e527d8add1..1407b2d9f0e 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -227,6 +227,13 @@ typedef struct nir_variable {
unsigned location_frac:2;
/**
+ * Whether this is a fragment shader output implicitly initialized with
+ * the previous contents of the specified render target at the
+ * framebuffer location corresponding to this shader invocation.
+ */
+ unsigned fb_fetch_output:1;
+
+ /**
* \brief Layout qualifier for gl_FragDepth.
*
* This is not equal to \c ir_depth_layout_none if and only if this
@@ -1776,6 +1783,8 @@ typedef struct nir_shader_info {
uint64_t double_inputs_read;
/* Which outputs are actually written */
uint64_t outputs_written;
+ /* Which outputs are actually read */
+ uint64_t outputs_read;
/* Which system values are actually read */
uint64_t system_values_read;