[virglrenderer-devel] [PATCH] Enable texture_multisample for GLES

Gurchetan Singh gurchetansingh at chromium.org
Wed May 16 16:38:28 UTC 2018


Actually, one minor nit:

Can you put this in the same "gles_ver >= 30" statement where we query for
GL_MAX_ARRAY_TEXTURE_LAYERS?

With that:

Reviewed-by: Gurchetan Singh <gurchetansingh at chromium.org>

On Wed, May 16, 2018 at 9:24 AM Gurchetan Singh
<gurchetansingh at chromium.org>
wrote:

> Reviewed-by: Gurchetan Singh <gurchetansingh at chromium.org>
> On Wed, May 16, 2018 at 4:24 AM Jakob Bornecrantz <wallbraker at gmail.com>
wrote:
> >
> > Tested-by: Jakob Bornecrantz <jakob at collabora.com>
> >
> > On Tue, May 15, 2018 at 2:44 PM, Tomeu Vizoso
> > <tomeu.vizoso at collabora.com> wrote:
> > > Just set the cap if we have GLES 3.0 and call the
> > > glTexStorage*DMultisample functions as appropriate.
> > >
> > > Causes a bunch of the tests in
> > > dEQP-GLES3.functional.fbo.msaa.*_samples to pass.
> > >
> > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
> > > ---
> > >  src/vrend_renderer.c | 32 ++++++++++++++++++++++----------
> > >  1 file changed, 22 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
> > > index f60cf415fbf7..da9e1af18a78 100644
> > > --- a/src/vrend_renderer.c
> > > +++ b/src/vrend_renderer.c
> > > @@ -4678,15 +4678,25 @@ int vrend_renderer_resource_create(struct
vrend_renderer_resource_create_args *a
> > >
> > >        if (args->nr_samples > 1) {
> > >           if (vrend_state.use_gles) {
> > > -            report_gles_missing_func(NULL,
"glTexImage[2,3]DMultisample");
> > > -         } else if (gr->target == GL_TEXTURE_2D_MULTISAMPLE) {
> > > -            glTexImage2DMultisample(gr->target, args->nr_samples,
> > > -                                    internalformat, args->width,
args->height,
> > > -                                    GL_TRUE);
> > > +            if (gr->target == GL_TEXTURE_2D_MULTISAMPLE) {
> > > +               glTexStorage2DMultisample(gr->target,
args->nr_samples,
> > > +                                       internalformat, args->width,
args->height,
> > > +                                       GL_TRUE);
> > > +            } else {
> > > +               glTexStorage3DMultisample(gr->target,
args->nr_samples,
> > > +                                       internalformat, args->width,
args->height, args->array_size,
> > > +                                       GL_TRUE);
> > > +            }
> > >           } else {
> > > -            glTexImage3DMultisample(gr->target, args->nr_samples,
> > > -                                    internalformat, args->width,
args->height, args->array_size,
> > > -                                    GL_TRUE);
> > > +            if (gr->target == GL_TEXTURE_2D_MULTISAMPLE) {
> > > +               glTexImage2DMultisample(gr->target, args->nr_samples,
> > > +                                       internalformat, args->width,
args->height,
> > > +                                       GL_TRUE);
> > > +            } else {
> > > +               glTexImage3DMultisample(gr->target, args->nr_samples,
> > > +                                       internalformat, args->width,
args->height, args->array_size,
> > > +                                       GL_TRUE);
> > > +            }
> > >           }
> > >
> > >        } else if (gr->target == GL_TEXTURE_CUBE_MAP) {
> > > @@ -6722,8 +6732,6 @@ void vrend_renderer_fill_caps_gles(uint32_t
set, uint32_t version,
> > >
> > >     caps->v1.bset.seamless_cube_map_per_texture = 0;
> > >
> > > -   caps->v1.bset.texture_multisample = 0;
> > > -
> > >     caps->v1.bset.mirror_clamp = 0;
> > >     caps->v1.bset.indep_blend_func = 0;
> > >     caps->v1.bset.cube_map_array = 0;
> > > @@ -6768,6 +6776,10 @@ void vrend_renderer_fill_caps_gles(uint32_t
set, uint32_t version,
> > >        }
> > >     }
> > >
> > > +   if (gles_ver >= 30) {
> > > +      caps->v1.bset.texture_multisample = 1;
> > > +   }
> > > +
> > >     if (!fill_capset2) {
> > >        return;
> > >     }
> > > --
> > > 2.17.0
> > >
> > > _______________________________________________
> > > virglrenderer-devel mailing list
> > > virglrenderer-devel at lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel
> > _______________________________________________
> > virglrenderer-devel mailing list
> > virglrenderer-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel


More information about the virglrenderer-devel mailing list