[Mesa-dev] [RFC 09/63] mesa/formatquery: Use new driver hook QueryInternalFormat
Eduardo Lima Mitev
elima at igalia.com
Tue Jan 19 08:41:49 PST 2016
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.
---
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 b55abcd..79f7549 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 (_mesa_is_gles3(ctx) && _mesa_is_enum_format_integer(internalformat)) {
@@ -156,29 +163,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 <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.
- */
- buffer[0] = (GLint) num_samples;
+ ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname,
+ buffer);
}
break;
}
--
2.5.3
More information about the mesa-dev
mailing list