On 12/01/2014 05:04 AM, Eduardo Lima Mitev wrote: > In GLES3, multisampling is not supported for signed and unsigned integer > internal formats. See > https://www.khronos.org/opengles/sdk/docs/man3/docbook4/xhtml/glGetInternalformativ.xml. > > Fixes 19 dEQP tests under > 'dEQP-GLES3.functional.state_query.internal_format.*'. > --- > src/mesa/main/formatquery.c | 44 +++++++++++++++++++++++++++----------------- > 1 file changed, 27 insertions(+), 17 deletions(-) > > diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c > index 40eca87..629b07b 100644 > --- a/src/mesa/main/formatquery.c > +++ b/src/mesa/main/formatquery.c > @@ -115,23 +115,33 @@ _mesa_GetInternalformativ(GLenum target, GLenum > internalformat, GLenum pname, > internalformat, buffer); > break; > case GL_NUM_SAMPLE_COUNTS: { > - /* The driver can return 0, and we should pass that along to the > - * application. The ARB decided that ARB_internalformat_query should > - * behave as ARB_internalformat_query2 in this situation. > - * > - * The ARB_internalformat_query2 spec says: > - * > - * "- NUM_SAMPLE_COUNTS: The number of sample counts that would be > - * returned by querying SAMPLES is returned in <params>. > - * * If <internalformat> is not color-renderable, > - * depth-renderable, or stencil-renderable (as defined in > - * section 4.4.4), or if <target> does not support multiple > - * samples (ie other than TEXTURE_2D_MULTISAMPLE, > - * TEXTURE_2D_MULTISAMPLE_ARRAY, or RENDERBUFFER), 0 is > - * returned." > - */ > - const size_t num_samples = > - ctx->Driver.QuerySamplesForFormat(ctx, target, internalformat, > buffer); > + size_t num_samples; > + > + if (_mesa_is_gles3(ctx) && > _mesa_is_enum_format_integer(internalformat)) { > + /* In GLES3.0, multisampling is not supported for signed and > unsigned integer internal > + formats > <https://www.khronos.org/opengles/sdk/docs/man3/docbook4/xhtml/glGetInternalformativ.xml>, > + so return zero > + */
Rather than quote the man page, please quote the spec. I might also be tempted to leave this code along but change what gets stored to buffer[0]. Not a big deal either way. > + num_samples = 0; > + } > + else { } else { > + /* The driver can return 0, and we should pass that along to the > + * application. The ARB decided that ARB_internalformat_query > should > + * behave as ARB_internalformat_query2 in this situation. > + * > + * The ARB_internalformat_query2 spec says: > + * > + * "- NUM_SAMPLE_COUNTS: The number of sample counts that would > be > + * returned by querying SAMPLES is returned in <params>. > + * * If <internalformat> is not color-renderable, > + * depth-renderable, or stencil-renderable (as defined in > + * section 4.4.4), or if <target> does not support multiple > + * samples (ie other than TEXTURE_2D_MULTISAMPLE, > + * TEXTURE_2D_MULTISAMPLE_ARRAY, or RENDERBUFFER), 0 is > + * returned." > + */ > + num_samples = ctx->Driver.QuerySamplesForFormat(ctx, target, > internalformat, buffer); > + } > > /* QuerySamplesForFormat writes some stuff to buffer, so we have to > * separately over-write it with the requested value. > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev