Mesa (master): st/mesa: add some _mesa_is_winsys_fbo() assertions

Brian Paul brianp at kemper.freedesktop.org
Thu Apr 13 03:45:06 UTC 2017


Module: Mesa
Branch: master
Commit: 46f49d6fdcb9772fcc7ff3e533646b1b44c5adb9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=46f49d6fdcb9772fcc7ff3e533646b1b44c5adb9

Author: Brian Paul <brianp at vmware.com>
Date:   Mon Apr 10 21:11:55 2017 -0600

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 <marek.olsak at amd.com>

---

 src/mesa/state_tracker/st_cb_fbo.c  |  1 +
 src/mesa/state_tracker/st_manager.c | 10 ++++++++--
 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 21fc5420d5..7b9855f963 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 a91dc76d22..b9e46fd07e 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;
 




More information about the mesa-commit mailing list