st/mesa: add some _mesa_is_winsys_fbo() assertions
authorBrian Paul <brianp@vmware.com>
Tue, 11 Apr 2017 03:11:55 +0000 (21:11 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 13 Apr 2017 03:13:23 +0000 (21:13 -0600)
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 <marek.olsak@amd.com>
src/mesa/state_tracker/st_cb_fbo.c
src/mesa/state_tracker/st_manager.c

index 21fc5420d581f244e36bde223317fc2ddbc79649..7b9855f9631bef8a7858f86d84e37ad8c8ea76cc 100644 (file)
@@ -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);
index a91dc76d2264ad0e4edeb6f0574a1f981c1034a2..b9e46fd07e65109d565398da1704ec574cfa72b6 100644 (file)
@@ -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;