summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/formatquery.c
diff options
context:
space:
mode:
authorAntia Puentes <apuentes@igalia.com>2015-12-19 19:24:28 +0100
committerEduardo Lima Mitev <elima@igalia.com>2016-03-03 15:14:07 +0100
commitfae2b10ff9ec568df328785183e483d4fcbf0f83 (patch)
treeb9d6c8f64fd2033624beaa9c7ad31de52746ad64 /src/mesa/main/formatquery.c
parentaeb759c7d631eb10a69245ba8d7b6a2179a268f5 (diff)
downloadexternal_mesa3d-fae2b10ff9ec568df328785183e483d4fcbf0f83.zip
external_mesa3d-fae2b10ff9ec568df328785183e483d4fcbf0f83.tar.gz
external_mesa3d-fae2b10ff9ec568df328785183e483d4fcbf0f83.tar.bz2
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 <params>. - TESS_CONTROL_TEXTURE: The support for using the resource as a source for texture sampling in a tessellation control shader is written to <params>. - TESS_EVALUATION_TEXTURE: The support for using the resource as a source for texture sampling in a tessellation evaluation shader is written to <params>. - GEOMETRY_TEXTURE: The support for using the resource as a source for texture sampling in a geometry shader is written to <params>. - FRAGMENT_TEXTURE: The support for using the resource as a source for texture sampling in a fragment shader is written to <params>. - COMPUTE_TEXTURE: The support for using the resource as a source for texture sampling in a compute shader 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." Reviewed-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/mesa/main/formatquery.c')
-rw-r--r--src/mesa/main/formatquery.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c
index 444995b..b5a072c 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: