summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGert Wollny <[email protected]>2019-04-04 11:34:26 +0200
committerGert Wollny <[email protected]>2019-04-05 09:07:45 +0200
commit0dff1533f25951adda3c36be6d9efa944741befb (patch)
treebdebacd9ccb28056ecca383bd8cc885e6b724fea /src
parent361f3d19f1fe09852900369ea7c4e9d8d5df4be3 (diff)
softpipe: Use mag texture filter also for clamped lod == 0
Follow the spec when selecting the magnification filter (OpenGL 4.5, section 8.14): If λ(x, y) is less than or equal to the constant c (see section 8.15) the texture is said to be magnified; While we're here also silence a potential warning about implicit float to double conversion. v2: Update commit message to contain a reference to the spec as pointed out by Eric. Fixes a number of dEQP GLES2 and GLES3 test out of: dEQP-GLES2.functional.texture.filtering.* dEQP-GLES2.functional.texture.vertex.2d.filtering.* dEQP-GLES3.functional.texture.vertex.*.filtering.* dEQP-GLES3.functional.texture.filtering.* dEQP-GLES3.functional.texture.shadow.2d.* Signed-off-by: Gert Wollny <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/softpipe/sp_tex_sample.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c
index 26d38296073..1b40e3545bd 100644
--- a/src/gallium/drivers/softpipe/sp_tex_sample.c
+++ b/src/gallium/drivers/softpipe/sp_tex_sample.c
@@ -1956,7 +1956,7 @@ mip_filter_linear(const struct sp_sampler_view *sp_sview,
args.p = p[j];
args.face_id = filt_args->faces[j];
- if (lod[j] < 0.0) {
+ if (lod[j] <= 0.0) {
args.level = psview->u.tex.first_level;
mag_filter(sp_sview, sp_samp, &args, &rgba[0][j]);
}
@@ -2040,7 +2040,7 @@ mip_filter_nearest(const struct sp_sampler_view *sp_sview,
args.p = p[j];
args.face_id = filt_args->faces[j];
- if (lod[j] < 0.0) {
+ if (lod[j] <= 0.0) {
args.level = psview->u.tex.first_level;
mag_filter(sp_sview, sp_samp, &args, &rgba[0][j]);
} else {
@@ -2100,7 +2100,7 @@ mip_filter_none(const struct sp_sampler_view *sp_sview,
args.t = t[j];
args.p = p[j];
args.face_id = filt_args->faces[j];
- if (lod[j] < 0.0) {
+ if (lod[j] <= 0.0f) {
mag_filter(sp_sview, sp_samp, &args, &rgba[0][j]);
}
else {