From: Antia Puentes <apuen...@igalia.com> From the ARB_internalformat_query2 specification:
"- TEXTURE_SHADOW: The support for using the resource with shadow samplers is written to <params>. - TEXTURE_GATHER: The support for using the resource with texture gather operations is written to <params>. - TEXTURE_GATHER_SHADOW: The support for using resource with texture gather operations with shadow samplers is written to <params>." For all of them, "Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE. If the resource or operation is not supported, NONE is returned." --- src/mesa/main/formatquery.c | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c index 0c993a8..8b65931 100644 --- a/src/mesa/main/formatquery.c +++ b/src/mesa/main/formatquery.c @@ -614,6 +614,9 @@ _mesa_query_internal_format_default(struct gl_context *ctx, GLenum target, case GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: case GL_CLEAR_BUFFER: case GL_TEXTURE_VIEW: + case GL_TEXTURE_SHADOW: + case GL_TEXTURE_GATHER: + case GL_TEXTURE_GATHER_SHADOW: params[0] = GL_FULL_SUPPORT; break; @@ -1168,16 +1171,42 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, buffer); break; + case GL_TEXTURE_GATHER: + case GL_TEXTURE_GATHER_SHADOW: + if (!_mesa_has_ARB_texture_gather(ctx)) + goto end; + + /* fallthrough */ case GL_TEXTURE_SHADOW: - /* @TODO */ - break; + /* Only depth or depth-stencil image formats make sense in shadow + samplers */ + if (pname != GL_TEXTURE_GATHER && + !_mesa_is_depth_format(internalformat) && + !_mesa_is_depthstencil_format(internalformat)) + goto end; - case GL_TEXTURE_GATHER: - /* @TODO */ - break; + /* Validate the target for shadow and gather operations */ + switch (target) { + case GL_TEXTURE_2D: + case GL_TEXTURE_2D_ARRAY: + case GL_TEXTURE_CUBE_MAP: + case GL_TEXTURE_CUBE_MAP_ARRAY: + case GL_TEXTURE_RECTANGLE: + break; - case GL_TEXTURE_GATHER_SHADOW: - /* @TODO */ + case GL_TEXTURE_1D: + case GL_TEXTURE_1D_ARRAY: + /* 1D and 1DArray textures are not admitted in gather operations */ + if (pname != GL_TEXTURE_SHADOW) + goto end; + break; + + default: + goto end; + } + + ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname, + buffer); break; case GL_SHADER_IMAGE_LOAD: -- 2.5.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev