summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_context.h
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2007-08-13 18:16:11 -0600
committerBrian <brian.paul@tungstengraphics.com>2007-08-13 18:20:04 -0600
commit4698483f849ba8dfde20a5d649f1ea099291f241 (patch)
tree1074039d22618502b72b077182ce55aa2ba089f8 /src/mesa/state_tracker/st_context.h
parentcd308dfa794a1be5d933a4b89539d53929537f88 (diff)
Added st_fb_orientation() function to determine the up/down orientation of the framebuffer.
Diffstat (limited to 'src/mesa/state_tracker/st_context.h')
-rw-r--r--src/mesa/state_tracker/st_context.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
index 8d82d53133..13843d9b7f 100644
--- a/src/mesa/state_tracker/st_context.h
+++ b/src/mesa/state_tracker/st_context.h
@@ -118,5 +118,32 @@ extern void st_init_driver_functions(struct dd_function_table *functions);
+#define Y_0_TOP 1
+#define Y_0_BOTTOM 2
+
+static INLINE GLuint
+st_fb_orientation(const struct gl_framebuffer *fb)
+{
+ if (fb && fb->Name == 0) {
+ /* Drawing into a window (on-screen buffer).
+ *
+ * Negate Y scale to flip image vertically.
+ * The NDC Y coords prior to viewport transformation are in the range
+ * [y=-1=bottom, y=1=top]
+ * Hardware window coords are in the range [y=0=top, y=H-1=bottom] where
+ * H is the window height.
+ * Use the viewport transformation to invert Y.
+ */
+ return Y_0_TOP;
+ }
+ else {
+ /* Drawing into user-created FBO (very likely a texture).
+ *
+ * For textures, T=0=Bottom, so by extension Y=0=Bottom for rendering.
+ */
+ return Y_0_BOTTOM;
+ }
+}
+
#endif