diff options
author | Brian <[email protected]> | 2007-08-13 18:16:11 -0600 |
---|---|---|
committer | Brian <[email protected]> | 2007-08-13 18:20:04 -0600 |
commit | 4698483f849ba8dfde20a5d649f1ea099291f241 (patch) | |
tree | 1074039d22618502b72b077182ce55aa2ba089f8 /src/mesa/state_tracker/st_context.h | |
parent | cd308dfa794a1be5d933a4b89539d53929537f88 (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.h | 27 |
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 8d82d53133f..13843d9b7fe 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 |