diff options
author | Marek Olšák <[email protected]> | 2017-06-12 01:04:34 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-06-22 01:51:02 +0200 |
commit | 3ee1c9b1263adcf68ca7c376d29c94a0fc31b2b0 (patch) | |
tree | cecd9dd9c0876cfdf60b92990927c36a46e2d529 /src/mesa/state_tracker | |
parent | f0ecd36ef8e10c087738c92cf62bad3815366963 (diff) |
st/mesa: simplify get_texture_format_swizzle
- Don't check GL_NONE (that was only for buffers).
- Don't use util_format_is_depth_or_stencil.
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r-- | src/mesa/state_tracker/st_sampler_view.c | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/src/mesa/state_tracker/st_sampler_view.c b/src/mesa/state_tracker/st_sampler_view.c index f0cf9cb929a..e8a46a72244 100644 --- a/src/mesa/state_tracker/st_sampler_view.c +++ b/src/mesa/state_tracker/st_sampler_view.c @@ -281,31 +281,28 @@ get_texture_format_swizzle(const struct st_context *st, const struct st_texture_object *stObj, unsigned glsl_version) { - GLenum baseFormat = _mesa_texture_base_format(&stObj->base); + GLenum baseFormat = _mesa_base_tex_image(&stObj->base)->_BaseFormat; unsigned tex_swizzle; - - if (baseFormat != GL_NONE) { - GLenum depth_mode = stObj->base.DepthMode; - /* In ES 3.0, DEPTH_TEXTURE_MODE is expected to be GL_RED for textures - * with depth component data specified with a sized internal format. - */ - if (_mesa_is_gles3(st->ctx) && - util_format_is_depth_or_stencil(stObj->pt->format)) { - const struct gl_texture_image *firstImage = - _mesa_base_tex_image(&stObj->base); - if (firstImage->InternalFormat != GL_DEPTH_COMPONENT && - firstImage->InternalFormat != GL_DEPTH_STENCIL && - firstImage->InternalFormat != GL_STENCIL_INDEX) - depth_mode = GL_RED; - } - tex_swizzle = compute_texture_format_swizzle(baseFormat, - depth_mode, - stObj->pt->format, - glsl_version); - } - else { - tex_swizzle = SWIZZLE_XYZW; + GLenum depth_mode = stObj->base.DepthMode; + + /* In ES 3.0, DEPTH_TEXTURE_MODE is expected to be GL_RED for textures + * with depth component data specified with a sized internal format. + */ + if (_mesa_is_gles3(st->ctx) && + (baseFormat == GL_DEPTH_COMPONENT || + baseFormat == GL_DEPTH_STENCIL || + baseFormat == GL_STENCIL_INDEX)) { + const struct gl_texture_image *firstImage = + _mesa_base_tex_image(&stObj->base); + if (firstImage->InternalFormat != GL_DEPTH_COMPONENT && + firstImage->InternalFormat != GL_DEPTH_STENCIL && + firstImage->InternalFormat != GL_STENCIL_INDEX) + depth_mode = GL_RED; } + tex_swizzle = compute_texture_format_swizzle(baseFormat, + depth_mode, + stObj->pt->format, + glsl_version); /* Combine the texture format swizzle with user's swizzle */ return swizzle_swizzle(stObj->base._Swizzle, tex_swizzle); |