radeonsi: set MIP_POINT_PRECLAMP to 0
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Sun, 17 Sep 2017 16:03:04 +0000 (18:03 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 20 Sep 2017 13:43:13 +0000 (15:43 +0200)
commit704ddbcdf693079d417d831abe073caad008ab01
tree66bd63d66d33947114254ede4f06a5e3d1f54836
parent87f7c7bd6566dbd95214df9b058bca5e6573374e
radeonsi: set MIP_POINT_PRECLAMP to 0

This fixes a bug with nearest ("point") mip selection when the fractional
part of max_lod is in (0.5,1). In this case, the spec mandates that
we still select the mip level ceil(max_lod) in the clamping case. However,
MIP_POINT_PRECLAMP will clamp before the mip selection, which is wrong.

Supposedly this setting was originally copied from the closed Vulkan
driver, but as far as I can tell, closed Vulkan was actually changed back
recently :)

Fixes dEQP-GLES3.functional.texture.mipmap.2d.max_lod.{nearest,linear}_nearest

Fixes: f7420ef5b464 ("radeonsi: enable some sampler fields to match the closed driver")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/radeonsi/si_state.c