diff options
author | Antia Puentes <[email protected]> | 2015-12-19 19:24:28 +0100 |
---|---|---|
committer | Eduardo Lima Mitev <[email protected]> | 2016-03-03 15:14:07 +0100 |
commit | fae2b10ff9ec568df328785183e483d4fcbf0f83 (patch) | |
tree | b9d6c8f64fd2033624beaa9c7ad31de52746ad64 /src/mesa/main/formatquery.c | |
parent | aeb759c7d631eb10a69245ba8d7b6a2179a268f5 (diff) |
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 <[email protected]>
Diffstat (limited to 'src/mesa/main/formatquery.c')
-rw-r--r-- | src/mesa/main/formatquery.c | 38 |
1 files changed, 22 insertions, 16 deletions
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: |