[Mesa-dev] [PATCH 2/2] st/mesa: add some _mesa_is_winsys_fbo() assertions

Marek Olšák maraeo at gmail.com
Wed Apr 12 16:01:20 UTC 2017


For the series:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Apr 11, 2017 at 10:05 PM, Brian Paul <brianp at vmware.com> wrote:
> 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.
> ---
>  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 21fc542..7b9855f 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 a91dc76..b9e46fd 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;
>
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list