From 993d7345b7c356d96f3d24865d83ff368bc6fc55 Mon Sep 17 00:00:00 2001 From: Eduardo Lima Mitev Date: Wed, 16 Dec 2015 17:49:29 +0100 Subject: [PATCH] mesa/formatquery: Use new driver hook QueryInternalFormat Implements SAMPLES and NUM_SAMPLE_COUNTS queries using the new generic driver call QueryInternalFormat, which is being introduced as replacement of QuerySamplesForFormat to support ARB_internalformat_query2. Reviewed-by: Dave Airlie --- src/mesa/main/formatquery.c | 42 +++++++++++++------------------------ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c index 6ffa5534d7c..21d10a8e79c 100644 --- a/src/mesa/main/formatquery.c +++ b/src/mesa/main/formatquery.c @@ -54,10 +54,16 @@ _mesa_query_internal_format_default(struct gl_context *ctx, GLenum target, (void) ctx; (void) target; (void) internalFormat; - (void) pname; - (void) params; - /* @TODO */ + switch (pname) { + case GL_SAMPLES: + case GL_NUM_SAMPLE_COUNTS: + params[0] = 1; + break; + default: + /* @TODO: handle default values for all the different pnames. */ + break; + } } void GLAPIENTRY @@ -74,7 +80,7 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, return; } - assert(ctx->Driver.QuerySamplesForFormat != NULL); + assert(ctx->Driver.QueryInternalFormat != NULL); /* The ARB_internalformat_query spec says: * @@ -145,7 +151,8 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, switch (pname) { case GL_SAMPLES: - ctx->Driver.QuerySamplesForFormat(ctx, target, internalformat, buffer); + ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname, + buffer); break; case GL_NUM_SAMPLE_COUNTS: { if ((ctx->API == API_OPENGLES2 && ctx->Version == 30) && @@ -159,29 +166,8 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, */ buffer[0] = 0; } else { - size_t num_samples; - - /* 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 . - * * If is not color-renderable, - * depth-renderable, or stencil-renderable (as defined in - * section 4.4.4), or if 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. - */ - buffer[0] = (GLint) num_samples; + ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname, + buffer); } break; } -- 2.30.2