[Mesa-dev] [PATCH] mesa/st: Don't modify the context draw/read buffers.

Brian Paul brianp at vmware.com
Thu Dec 8 07:37:08 PST 2011


On 12/08/2011 07:00 AM, jfonseca at vmware.com wrote:
> From: José Fonseca<jfonseca at vmware.com>
>
> It sets the wrong values (GL_XXX_LEFT instead of GL_XXX), and no other
> Mesa driver does this, given that Mesa sets the right draw/read buffers
> provided the Mesa visual has the doublebuffer flag filled correctly
> which is the case.
> ---
>   src/mesa/state_tracker/st_manager.c |   64 -----------------------------------
>   1 files changed, 0 insertions(+), 64 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
> index d5228d3..55699e7 100644
> --- a/src/mesa/state_tracker/st_manager.c
> +++ b/src/mesa/state_tracker/st_manager.c
> @@ -404,54 +404,6 @@ st_visual_to_context_mode(const struct st_visual *visual,
>   }
>
>   /**
> - * Determine the default draw or read buffer from a visual.
> - */
> -static void
> -st_visual_to_default_buffer(const struct st_visual *visual,
> -                            GLenum *buffer, GLint *index)
> -{
> -   enum st_attachment_type statt;
> -   GLenum buf;
> -   gl_buffer_index idx;
> -
> -   statt = visual->render_buffer;
> -   /* do nothing if an invalid render buffer is specified */
> -   if (statt == ST_ATTACHMENT_INVALID ||
> -       !st_visual_have_buffers(visual, 1<<  statt))
> -      return;
> -
> -   switch (statt) {
> -   case ST_ATTACHMENT_FRONT_LEFT:
> -      buf = GL_FRONT_LEFT;
> -      idx = BUFFER_FRONT_LEFT;
> -      break;
> -   case ST_ATTACHMENT_BACK_LEFT:
> -      buf = GL_BACK_LEFT;
> -      idx = BUFFER_BACK_LEFT;
> -      break;
> -   case ST_ATTACHMENT_FRONT_RIGHT:
> -      buf = GL_FRONT_RIGHT;
> -      idx = BUFFER_FRONT_RIGHT;
> -      break;
> -   case ST_ATTACHMENT_BACK_RIGHT:
> -      buf = GL_BACK_RIGHT;
> -      idx = BUFFER_BACK_RIGHT;
> -      break;
> -   default:
> -      buf = GL_NONE;
> -      idx = BUFFER_COUNT;
> -      break;
> -   }
> -
> -   if (buf != GL_NONE) {
> -      if (buffer)
> -         *buffer = buf;
> -      if (index)
> -         *index = idx;
> -   }
> -}
> -
> -/**
>    * Create a framebuffer from a manager interface.
>    */
>   static struct st_framebuffer *
> @@ -471,12 +423,6 @@ st_framebuffer_create(struct st_framebuffer_iface *stfbi)
>      st_visual_to_context_mode(stfbi->visual,&mode);
>      _mesa_initialize_window_framebuffer(&stfb->Base,&mode);
>
> -   /* modify the draw/read buffers of the fb */
> -   st_visual_to_default_buffer(stfbi->visual,&stfb->Base.ColorDrawBuffer[0],
> -&stfb->Base._ColorDrawBufferIndexes[0]);
> -   st_visual_to_default_buffer(stfbi->visual,&stfb->Base.ColorReadBuffer,
> -&stfb->Base._ColorReadBufferIndex);
> -
>      stfb->iface = stfbi;
>      stfb->iface_stamp = p_atomic_read(&stfbi->stamp) - 1;
>
> @@ -776,16 +722,6 @@ st_api_make_current(struct st_api *stapi, struct st_context_iface *stctxi,
>            if (stread != stdraw)
>               st_framebuffer_validate(stread, st);
>
> -         /* modify the draw/read buffers of the context */
> -         if (stdraw->iface) {
> -            st_visual_to_default_buffer(stdraw->iface->visual,
> -&st->ctx->Color.DrawBuffer[0], NULL);
> -         }
> -         if (stread->iface) {
> -            st_visual_to_default_buffer(stread->iface->visual,
> -&st->ctx->Pixel.ReadBuffer, NULL);
> -         }
> -
>            ret = _mesa_make_current(st->ctx,&stdraw->Base,&stread->Base);
>
>            st->draw_stamp = stdraw->stamp - 1;

Looks good to me.

Reviewed-by: Brian Paul <brianp at vmware.com>



More information about the mesa-dev mailing list