summaryrefslogtreecommitdiff
path: root/cogl/cogl-framebuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'cogl/cogl-framebuffer.c')
-rw-r--r--cogl/cogl-framebuffer.c41
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)
{