diff options
author | José Fonseca <[email protected]> | 2013-11-19 18:54:53 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2013-11-20 07:12:59 +0000 |
commit | 060159820c05c4e9a9b577844387555b11092391 (patch) | |
tree | 11a641ae427c40618a87cbaccf841c17b00edc39 /src/gallium/auxiliary/util/u_blit.c | |
parent | 15d8e05e1e98a9bfd5a365d0fda222668f24261f (diff) |
u_gen_mipmap: Use untampered cubemap texture coords when generating mipmaps.
It's not necessary to scale down cubemap texture coords when generating
mipmaps: we are doing a 2x minification therefore it's guaranteed that
the texture coords will always be at least 1 texel away of the edges.
Scaling down can actually be harmful, as it may cause artefacts when
generating mipmaps with nearest filtering. Sample points will lie
exactly in the middle each 2x2 texels, so the scaling factor was causing
different texels to be take on each quadrant of the cube face. This is
apparent with a 1x1 checkerboard pattern in the base mipmap level:
instead of next mipmap level receiving a constant color throughout the
face, it will have different colors for each quadrant of the face.
The behaviour for blits is left untouched for now, but the cubemap
texture coord scaling hack should be reconsidered eventually.
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/util/u_blit.c')
-rw-r--r-- | src/gallium/auxiliary/util/u_blit.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/util/u_blit.c b/src/gallium/auxiliary/util/u_blit.c index 4ba71b92901..595287d3b81 100644 --- a/src/gallium/auxiliary/util/u_blit.c +++ b/src/gallium/auxiliary/util/u_blit.c @@ -272,7 +272,8 @@ setup_vertex_data_tex(struct blit_state *ctx, const unsigned stride = sizeof ctx->vertices[0] / sizeof ctx->vertices[0][0][0]; util_map_texcoords2d_onto_cubemap(src_face, &ctx->vertices[0][1][0], stride, - &ctx->vertices[0][1][0], stride); + &ctx->vertices[0][1][0], stride, + TRUE); } offset = get_next_slot( ctx ); |