diff options
Diffstat (limited to 'cogl/cogl-framebuffer.c')
-rw-r--r-- | cogl/cogl-framebuffer.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c index 90aaecdc..4cb397ae 100644 --- a/cogl/cogl-framebuffer.c +++ b/cogl/cogl-framebuffer.c @@ -854,6 +854,14 @@ _cogl_framebuffer_compare_depth_write_state (CoglFramebuffer *a, COGL_FRAMEBUFFER_STATE_DEPTH_WRITE : 0; } +static unsigned long +_cogl_framebuffer_compare_stereo_mode (CoglFramebuffer *a, + CoglFramebuffer *b) +{ + return a->stereo_mode != b->stereo_mode ? + COGL_FRAMEBUFFER_STATE_STEREO_MODE : 0; +} + unsigned long _cogl_framebuffer_compare (CoglFramebuffer *a, CoglFramebuffer *b, @@ -906,6 +914,10 @@ _cogl_framebuffer_compare (CoglFramebuffer *a, differences |= _cogl_framebuffer_compare_depth_write_state (a, b); break; + case COGL_FRAMEBUFFER_STATE_INDEX_STEREO_MODE: + differences |= + _cogl_framebuffer_compare_stereo_mode (a, b); + break; default: g_warn_if_reached (); } @@ -993,6 +1005,12 @@ _cogl_framebuffer_get_stencil_bits (CoglFramebuffer *framebuffer) return bits.stencil; } +gboolean +cogl_framebuffer_get_is_stereo (CoglFramebuffer *framebuffer) +{ + return framebuffer->config.stereo_enabled; +} + CoglColorMask cogl_framebuffer_get_color_mask (CoglFramebuffer *framebuffer) { @@ -1016,6 +1034,29 @@ cogl_framebuffer_set_color_mask (CoglFramebuffer *framebuffer, COGL_FRAMEBUFFER_STATE_COLOR_MASK; } +CoglStereoMode +cogl_framebuffer_get_stereo_mode (CoglFramebuffer *framebuffer) +{ + return framebuffer->stereo_mode; +} + +void +cogl_framebuffer_set_stereo_mode (CoglFramebuffer *framebuffer, + CoglStereoMode stereo_mode) +{ + if (framebuffer->stereo_mode == stereo_mode) + return; + + /* Stereo mode changes don't go through the journal */ + _cogl_framebuffer_flush_journal (framebuffer); + + framebuffer->stereo_mode = stereo_mode; + + if (framebuffer->context->current_draw_buffer == framebuffer) + framebuffer->context->current_draw_buffer_changes |= + COGL_FRAMEBUFFER_STATE_STEREO_MODE; +} + CoglBool cogl_framebuffer_get_depth_write_enabled (CoglFramebuffer *framebuffer) { |