From: Antia Puentes Date: Sat, 19 Dec 2015 18:24:28 +0000 (+0100) Subject: mesa/formatquery: Added queries related to texture sampling in shaders X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fae2b10ff9ec568df328785183e483d4fcbf0f83;p=mesa.git mesa/formatquery: Added queries related to texture sampling in shaders From the ARB_internalformat_query2 specification: "- VERTEX_TEXTURE: The support for using the resource as a source for texture sampling in a vertex shader is written to . - TESS_CONTROL_TEXTURE: The support for using the resource as a source for texture sampling in a tessellation control shader is written to . - TESS_EVALUATION_TEXTURE: The support for using the resource as a source for texture sampling in a tessellation evaluation shader is written to . - GEOMETRY_TEXTURE: The support for using the resource as a source for texture sampling in a geometry shader is written to . - FRAGMENT_TEXTURE: The support for using the resource as a source for texture sampling in a fragment shader is written to . - COMPUTE_TEXTURE: The support for using the resource as a source for texture sampling in a compute shader is written to ." 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." Reviewed-by: Dave Airlie --- diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c index 444995b6414..b5a072ca42d 100644 --- a/src/mesa/main/formatquery.c +++ b/src/mesa/main/formatquery.c @@ -601,6 +601,12 @@ _mesa_query_internal_format_default(struct gl_context *ctx, GLenum target, case GL_SRGB_READ: case GL_SRGB_WRITE: case GL_SRGB_DECODE_ARB: + case GL_VERTEX_TEXTURE: + case GL_TESS_CONTROL_TEXTURE: + case GL_TESS_EVALUATION_TEXTURE: + case GL_GEOMETRY_TEXTURE: + case GL_FRAGMENT_TEXTURE: + case GL_COMPUTE_TEXTURE: params[0] = GL_FULL_SUPPORT; break; @@ -1148,27 +1154,27 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, break; case GL_VERTEX_TEXTURE: - /* @TODO */ - break; - case GL_TESS_CONTROL_TEXTURE: - /* @TODO */ - break; - case GL_TESS_EVALUATION_TEXTURE: - /* @TODO */ - break; - case GL_GEOMETRY_TEXTURE: - /* @TODO */ - break; - case GL_FRAGMENT_TEXTURE: - /* @TODO */ - break; - case GL_COMPUTE_TEXTURE: - /* @TODO */ + if (target == GL_RENDERBUFFER) + goto end; + + if ((pname == GL_TESS_CONTROL_TEXTURE || + pname == GL_TESS_EVALUATION_TEXTURE) && + !_mesa_has_tessellation(ctx)) + goto end; + + if (pname == GL_GEOMETRY_TEXTURE && !_mesa_has_geometry_shaders(ctx)) + goto end; + + if (pname == GL_COMPUTE_TEXTURE && !_mesa_has_compute_shaders(ctx)) + goto end; + + ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname, + buffer); break; case GL_TEXTURE_SHADOW: