summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2017-04-10 21:11:55 -0600
committerBrian Paul <[email protected]>2017-04-12 21:13:23 -0600
commit46f49d6fdcb9772fcc7ff3e533646b1b44c5adb9 (patch)
tree4649b27c670866eb72840d1a8a48ced84e5fd1e6
parentc36d224921da0846b808a317d5b71a78b31bfd3d (diff)
st/mesa: add some _mesa_is_winsys_fbo() assertions
A few functions related to FBOs/renderbuffers should only be used with window-system buffers, not user-created FBOs. Assert for that. Add additional comments. No piglit regressions. Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/mesa/state_tracker/st_cb_fbo.c1
-rw-r--r--src/mesa/state_tracker/st_manager.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
index 21fc5420d58..7b9855f9631 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -739,6 +739,7 @@ st_ReadBuffer(struct gl_context *ctx, GLenum buffer)
if ((fb->_ColorReadBufferIndex == BUFFER_FRONT_LEFT ||
fb->_ColorReadBufferIndex == BUFFER_FRONT_RIGHT) &&
fb->Attachment[fb->_ColorReadBufferIndex].Type == GL_NONE) {
+ assert(_mesa_is_winsys_fbo(fb));
/* add the buffer */
st_manager_add_color_renderbuffer(st, fb, fb->_ColorReadBufferIndex);
_mesa_update_state(ctx);
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index a91dc76d226..b9e46fd07e6 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -270,7 +270,8 @@ st_framebuffer_update_attachments(struct st_framebuffer *stfb)
}
/**
- * Add a renderbuffer to the framebuffer.
+ * Add a renderbuffer to the framebuffer. The framebuffer is one that
+ * corresponds to a window and is not a user-created FBO.
*/
static boolean
st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb,
@@ -283,6 +284,8 @@ st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb,
if (!stfb->iface)
return FALSE;
+ assert(_mesa_is_winsys_fbo(&stfb->Base));
+
/* do not distinguish depth/stencil buffers */
if (idx == BUFFER_STENCIL)
idx = BUFFER_DEPTH;
@@ -869,7 +872,8 @@ st_manager_validate_framebuffers(struct st_context *st)
}
/**
- * Add a color renderbuffer on demand.
+ * Add a color renderbuffer on demand. The FBO must correspond to a window,
+ * not a user-created FBO.
*/
boolean
st_manager_add_color_renderbuffer(struct st_context *st,
@@ -882,6 +886,8 @@ st_manager_add_color_renderbuffer(struct st_context *st,
if (!stfb)
return FALSE;
+ assert(_mesa_is_winsys_fbo(fb));
+
if (stfb->Base.Attachment[idx].Renderbuffer)
return TRUE;