[Mesa-dev] [RFC] st/mesa: Add both front and back buffers for double-buffer visuals

Brian Paul brianp at vmware.com
Tue Jan 17 17:31:42 UTC 2017


On 01/17/2017 06:44 AM, Boyan Ding wrote:
> st will only add back buffer attachment to window framebuffer when
> visual is in double-buffer mode. However, some applications may
> render to front buffer even if they have chosen a double-buffer visual.
> In this case, no color buffer will be attached when rendering. i965
> handles this case correctly, in which it adds both front and back buffer
> attachments. Do the same thing in st.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99116
> Signed-off-by: Boyan Ding <boyan.j.ding at gmail.com>
> ---
>   src/mesa/state_tracker/st_manager.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
> index c3d8286b5a..aa53edfecb 100644
> --- a/src/mesa/state_tracker/st_manager.c
> +++ b/src/mesa/state_tracker/st_manager.c
> @@ -417,7 +417,6 @@ st_framebuffer_create(struct st_context *st,
>   {
>      struct st_framebuffer *stfb;
>      struct gl_config mode;
> -   gl_buffer_index idx;
>
>      if (!stfbi)
>         return NULL;
> @@ -466,11 +465,12 @@ st_framebuffer_create(struct st_context *st,
>      stfb->iface_stamp = p_atomic_read(&stfbi->stamp) - 1;
>
>      /* add the color buffer */
> -   idx = stfb->Base._ColorDrawBufferIndexes[0];
> -   if (!st_framebuffer_add_renderbuffer(stfb, idx)) {
> +   if (!st_framebuffer_add_renderbuffer(stfb, BUFFER_FRONT_LEFT)) {
>         free(stfb);
>         return NULL;
>      }
> +   if (mode.doubleBufferMode)
> +      st_framebuffer_add_renderbuffer(stfb, BUFFER_BACK_LEFT);
>
>      st_framebuffer_add_renderbuffer(stfb, BUFFER_DEPTH);
>      st_framebuffer_add_renderbuffer(stfb, BUFFER_ACCUM);
>


I believe we have code in the state tracker to allocate the front buffer 
on demand when the app actually tries to draw to it.  Can you look into 
that?

-Brian



More information about the mesa-dev mailing list