[Mesa-dev] [PATCH] mesa/main: TexImage2DMultisample needs to pass OpenGL3.3 conformance test.

Predut, Marius marius.predut at intel.com
Fri Nov 27 00:47:07 PST 2015


> -----Original Message-----
> From: Timothy Arceri [mailto:t_arceri at yahoo.com.au]
> Sent: Thursday, November 26, 2015 11:32 PM
> To: Predut, Marius; Palli, Tapani; mesa-dev at lists.freedesktop.org
> Subject: Re: [Mesa-dev] [PATCH] mesa/main: TexImage2DMultisample needs to pass
> OpenGL3.3 conformance test.
> 
> On Thu, 2015-11-26 at 11:00 +0000, Predut, Marius wrote:
> > > -----Original Message-----
> > > From: mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] On
> > > Behalf Of Timothy Arceri
> > > Sent: Wednesday, November 25, 2015 6:02 PM
> > > To: Palli, Tapani; Predut, Marius; mesa-dev at lists.freedesktop.org
> > > Subject: Re: [Mesa-dev] [PATCH] mesa/main: TexImage2DMultisample
> > > needs to pass
> > > OpenGL3.3 conformance test.
> > >
> > > On Wed, 2015-11-25 at 17:13 +0200, Tapani Pälli wrote:
> > > > On 11/25/2015 04:00 PM, Predut, Marius wrote:
> > > > > > -----Original Message-----
> > > > > > From: mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org
> > > > > > ] On
> > > > > > Behalf Of Timothy Arceri
> > > > > > Sent: Wednesday, November 25, 2015 1:12 PM
> > > > > > To: Palli, Tapani; Predut, Marius;
> > > > > > mesa-dev at lists.freedesktop.org
> > > > > > Subject: Re: [Mesa-dev] [PATCH] mesa/main:
> > > > > > TexImage2DMultisample
> > > > > > needs to pass
> > > > > > OpenGL3.3 conformance test.
> > > > > >
> > > > > > On Wed, 2015-11-25 at 12:47 +0200, Tapani Pälli wrote:
> > > > > > > Hi;
> > > > > > >
> > > > > > > On 11/25/2015 01:15 PM, Marius Predut wrote:
> > > > > > > > Open GL 3.3 reference document says:
> > > > > > > > samples must be in the range zero to GL_MAX_TEXTURE_SIZE
> > > > > > > > - 1.
> > > > > > > > Open GL.4 clearly states:
> > > > > > > > An INVALID_VALUE error is generated if samples is zero.
> > > > > > See my comment in bugzilla [1] I believe this is just a bug in
> > > > > > the reference pages, we implement things in Mesa going by what
> > > > > > the spec says and the spec says nothing about samples being 0
> > > > > > in the
> > > > > > 3.2 spec in fact it doen't even say anything in the 4.0 spec
> > > > > > which you have changed the check to.
> > > > > >
> > > > > > Also the 4.5 reference pages also conflict with the spec so
> > > > > > this is even more reason I think this change is wrong.
> > > > > >
> > > > > > [1] https://bugs.freedesktop.org/show_bug.cgi?id=91670
> > > > > >
> > > > > I don't think it is a bug in specs because in this case also the
> > > > > CTS and the piglit test is wrong:
> > > > >
> > > > > With this patch 2 things are fixed:
> > > > > 1.Khronos CTS conformance tests for OpenGL 3.3 2. The piglit
> > > > > test
> > > > > https://bugs.freedesktop.org/show_bug.cgi?id=93100 (Or
> > > > > https://bugs.freedesktop.org/show_bug.cgi?id=91670)
> > > > >
> > > > > The patch is based on this spec:
> > > > > https://www.opengl.org/sdk/docs/man3/xhtml/glTexImage3DMultisam
> > > > > ple.
> > > > > xml
> > > > >
> > > > > We can't believe or "suppose" something here, the specs need to
> > > > > be as an axioma.
> > > > > Can someone confirm that this reference includes the wrong
> > > > > specs?
> > > >
> > > > That's not a specification but a manual page. Timothy is pointing
> > > > to OpenGL specifications (available at www.opengl.org/registry).
> > > > It is true that for example 3.3 Core does not mention this error
> > > > case which means using 0 was allowed there. IMO either we should
> > > > allow to use 0 (and bump it to 1?) when running on 3.x context
> > > > since it's not forbidden or maybe just locally patch this whenever
> > > > running 3.x conformance.
> > >
> > > Hi Marius,
> > >
> > > Please provide the test CTS test that you are trying to fix so that
> > > we can take a look at what the CTS is trying to test.
> > >
> > > While the OpenGL 3.2 -> 4.2 specs seem to allow zero due simple to
> > > not mentioning it seems odd to me that the CTS would specificly test
> > > for this. As far as I understand it a value of 0 would result in
> > > undefined behaviour, so it doesn't seem right to allow this for
> > > these versions of OpenGL. IMO we should be going with the later
> > > specs that fix this oversight for all versions of GL.
> > >
> > > One thing I can see the CTS doing in various tests is querying the
> > > GL implementation for values, its possible we are passing a value of
> > > 0 back to the tests somewhere and its trying to used this with the
> > > multisample functions. The only way to know whats going on is if you
> > > tell us which test you are trying to fix.
> > >
> > > Tim
> >
> >
> > Hi Tim
> >
> > On my case, in file otc_gen_graphics-khronos
> > -glconform/framework/opengl/gluStateReset.cpp
> > I have something like :
> >
> >             if (type >= CONTEXTTYPE_GL32_CORE)
> >             {
> >                 // Reset 2D multisample texture.
> >                 gl.bindTexture
> >  (GL_TEXTURE_2D_MULTISAMPLE, 0);
> >                 gl.texImage2DMultisample
> >  (GL_TEXTURE_2D_MULTISAMPLE, 0, GL_RGBA8, 0, 0, GL_TRUE);
> >                 // Reset 2D multisample array texture.
> >                 gl.bindTexture
> >  (GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0);
> >                 gl.texImage3DMultisample
> >  (GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0, GL_RGBA8, 0, 0, 0, GL_TRUE);
> >             }
> 
> Hi Marius,
> 
> It may be time for an update of your git repo mine is up to date and this file
> has the following for me.
> 
>                 // Reset 2D multisample texture.
>                 gl.bindTexture              (GL_TEXTURE_2D_MULTISAMPLE,
> 0);
>                 gl.texImage2DMultisample    (GL_TEXTURE_2D_MULTISAMPLE,
> 1, GL_RGBA8, 0, 0, GL_TRUE);
> 
>                 // Reset 2D multisample array texture.
>                 gl.bindTexture
>  (GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0);
>                 gl.texImage3DMultisample
>  (GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 1, GL_RGBA8, 0, 0, 0, GL_TRUE);
> 
> 
> Looks like its been fixed.
> 
> > I run the piglit tests, and with 0 for sample I don’t see regressions.
> 
> Looks like we need a text to make sure 0 isn't valid :)

OK, in this case, can you clarify this with Kronos and may be 
they will decide to fix wrong reference https://www.opengl.org/sdk/docs/man3/xhtml/glTexImage3DMultisample.xml
Or if this is correct then needs to rollback the CTS.

thanks
marius
> 
> > (also this suppose rollback the piglit gl-3.2-layered-rendering
> > -framebuffertexture test case) (also I think the CTS needs update like
> > (type >= CONTEXTTYPE_GL32_CORE && type < CONTEXTTYPE_GL40_CORE)) The
> > command I used is : ./cts-runner --type=gl33 --logdir=.
> >
> >
> > This patch involve TexImage2DMultisample, TexImage3DMultisample,
> > TexStorage2DMultisample, TexStorage3DMultisample
> >
> > >
> > > >
> > > > (It seems OpenGL 4.2 is the first spec to state the INVALID_VALUE
> > > > error case for 0.)
> > > > > > > OpenGL ES 3.1 spec also says "An INVALID_VALUE error is
> > > > > > > generated if samples is zero.". You'll need to change you
> > > > > > > check below to include also ES 3.1.
> > > > > > >
> > > > > > > > Fixing the piglit test case gl-3.2-layered-rendering
> > > > > > > > -framebuffertexture.
> > > > > > > >
> > > > > > > > Bugzilla:
> > > > > > > > https://bugs.freedesktop.org/show_bug.cgi?id=93100
> > > > > > > >
> > > > > > > > Signed-off-by: Marius Predut <marius.predut at intel.com>
> > > > > > > > ---
> > > > > > > >    src/mesa/main/teximage.c | 2 +-
> > > > > > > >    1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > > > >
> > > > > > > > diff --git a/src/mesa/main/teximage.c
> > > > > > > > b/src/mesa/main/teximage.c index d9453e3..69634ff 100644
> > > > > > > > --- a/src/mesa/main/teximage.c
> > > > > > > > +++ b/src/mesa/main/teximage.c
> > > > > > > > @@ -5211,7 +5211,7 @@ texture_image_multisample(struct
> > > > > > > > gl_context *ctx, GLuint dims,
> > > > > > > >          return;
> > > > > > > >       }
> > > > > > > >
> > > > > > > > -   if (samples < 1) {
> > > > > > > > +   if (samples < 1 && ctx->API == API_OPENGL_CORE && ctx
> > > > > > > > ->Version
> > > > > > > > > = 40) {
> > > > > > > >          _mesa_error(ctx, GL_INVALID_VALUE, "%s(samples <
> > > > > > > > 1)", func);
> > > > > > > >          return;
> > > > > > > >       }
> > > > > > > _______________________________________________
> > > > > > > mesa-dev mailing list
> > > > > > > mesa-dev at lists.freedesktop.org
> > > > > > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > > > > > _______________________________________________
> > > > > > mesa-dev mailing list
> > > > > > mesa-dev at lists.freedesktop.org
> > > > > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > > >
> > > _______________________________________________
> > > mesa-dev mailing list
> > > mesa-dev at lists.freedesktop.org
> > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list