[Mesa-dev] [PATCH v2] gallium: Correctly handle no config context creation

Marek Olšák maraeo at gmail.com
Mon Sep 10 19:30:53 UTC 2018


Pushed, thanks for the patch!

Marek

On Sat, Sep 8, 2018 at 11:57 PM, Elie Tournier <tournier.elie at gmail.com> wrote:
> If you don't mind, can you please push this patch for me?
> I don't have git access.
>
> Thanks a lot,
> Elie
> On Fri, 7 Sep 2018 at 22:49, Marek Olšák <maraeo at gmail.com> wrote:
>>
>> Reviewed-by: Marek Olšák <marek.olsak at amd.com>
>>
>> Marek
>>
>> On Thu, Sep 6, 2018 at 5:46 AM, Elie Tournier <tournier.elie at gmail.com> wrote:
>> > This patch fixes the following Piglit test:
>> > spec at egl_mesa_configless_context@basic
>> > It also fixes few test in a virgl guest.
>> >
>> > v2: Evaluate the value of no_config (Ilia)
>> >
>> > Suggested-by: Emil Velikov <emil.velikov at collabora.com>
>> > Signed-off-by: Elie Tournier <elie.tournier at collabora.com>
>> > ---
>> >  src/gallium/include/state_tracker/st_api.h  | 2 ++
>> >  src/gallium/state_trackers/dri/dri_screen.c | 4 +++-
>> >  src/mesa/state_tracker/st_manager.c         | 9 ++++++++-
>> >  3 files changed, 13 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
>> > index 61152e3546..2b63b8a3d2 100644
>> > --- a/src/gallium/include/state_tracker/st_api.h
>> > +++ b/src/gallium/include/state_tracker/st_api.h
>> > @@ -190,6 +190,8 @@ struct st_egl_image
>> >   */
>> >  struct st_visual
>> >  {
>> > +   bool no_config;
>> > +
>> >     /**
>> >      * Available buffers.  Bitfield of ST_ATTACHMENT_*_MASK bits.
>> >      */
>> > diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c
>> > index 027e85024f..308e23685e 100644
>> > --- a/src/gallium/state_trackers/dri/dri_screen.c
>> > +++ b/src/gallium/state_trackers/dri/dri_screen.c
>> > @@ -308,8 +308,10 @@ dri_fill_st_visual(struct st_visual *stvis,
>> >  {
>> >     memset(stvis, 0, sizeof(*stvis));
>> >
>> > -   if (!mode)
>> > +   if (!mode) {
>> > +      stvis->no_config = true;
>> >        return;
>> > +   }
>> >
>> >     /* Deduce the color format. */
>> >     switch (mode->redMask) {
>> > diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
>> > index 69286b5791..9ed316b0f7 100644
>> > --- a/src/mesa/state_tracker/st_manager.c
>> > +++ b/src/mesa/state_tracker/st_manager.c
>> > @@ -834,6 +834,7 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
>> >     struct st_context *shared_ctx = (struct st_context *) shared_stctxi;
>> >     struct st_context *st;
>> >     struct pipe_context *pipe;
>> > +   struct gl_config* mode_ptr;
>> >     struct gl_config mode;
>> >     gl_api api;
>> >     bool no_error = false;
>> > @@ -893,7 +894,13 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
>> >     }
>> >
>> >     st_visual_to_context_mode(&attribs->visual, &mode);
>> > -   st = st_create_context(api, pipe, &mode, shared_ctx,
>> > +
>> > +   if (attribs->visual.no_config)
>> > +      mode_ptr = NULL;
>> > +   else
>> > +      mode_ptr = &mode;
>> > +
>> > +   st = st_create_context(api, pipe, mode_ptr, shared_ctx,
>> >                            &attribs->options, no_error);
>> >     if (!st) {
>> >        *error = ST_CONTEXT_ERROR_NO_MEMORY;
>> > --
>> > 2.18.0
>> >
>> > _______________________________________________
>> > 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