summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2016-07-19 20:07:47 -0700
committerFrancisco Jerez <currojerez@riseup.net>2016-08-24 13:28:30 -0700
commitb49d8f20f43ec429e6c17e7d92c7c2d3f926ee5e (patch)
tree081c37ca7042fdf9b130f7f7ac6556fc1dfaff99
parentd7cd7b9c49ab01b954702783493fe22cd2bb38f1 (diff)
glsl: Add support for representing framebuffer fetch in the GLSL IR.
The GLSL IR representation of framebuffer fetch amounts to a single bit in the ir_variable object applicable to fragment shader outputs. The flag indicates that the variable will be implicitly initialized to the previous contents of the render buffer at the same fragment coordinates and sample index. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--src/compiler/glsl/ir.cpp1
-rw-r--r--src/compiler/glsl/ir.h8
2 files changed, 9 insertions, 0 deletions
diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp
index 2aa4affac9d..4dadfd27e23 100644
--- a/src/compiler/glsl/ir.cpp
+++ b/src/compiler/glsl/ir.cpp
@@ -1686,6 +1686,7 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name,
this->data.image_volatile = false;
this->data.image_restrict = false;
this->data.from_ssbo_unsized_array = false;
+ this->data.fb_fetch_output = false;
if (type != NULL) {
if (type->base_type == GLSL_TYPE_SAMPLER)
diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h
index 68e774c03d1..5e1e9bf34c7 100644
--- a/src/compiler/glsl/ir.h
+++ b/src/compiler/glsl/ir.h
@@ -831,6 +831,14 @@ public:
unsigned from_ssbo_unsized_array:1; /**< unsized array buffer variable. */
unsigned implicit_sized_array:1;
+
+ /**
+ * 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;
+
/**
* Emit a warning if this variable is accessed.
*/