From 7f9427a7636a23cad65a6bf3528420e911ad695d Mon Sep 17 00:00:00 2001 From: SandstromPL Date: Fri, 16 Oct 2026 08:40:11 +0530 Subject: [PATCH] fix(test): sample the anisotropic min/max rows without a mip filter The two anisotropic rows of agc_driver_image_sample_reduction sampled a two-level texture at explicit LOD 0.25 and 0.75 through a point mip filter, and expected only the nearest level in the min or max. Vulkan leaves the anisotropic filtering scheme to the implementation, and only recommends that it consider mipmapMode, minLod and maxLod. On an RTX 4090 (NVIDIA 616.92) the min row returns 5, a level-1 texel, where level 0's bilinear minimum is 17, so the test fails on main there. The rows now use no mip filter, which the decoder turns into a host sampler with minLod and maxLod 0, so they read level 0 only, as the RDNA2 measurements without derivatives did (gfx1030 with no mip filter over a single-level texture, gfx1035 with image_sample_lz). They still throw if the min or max reduction with anisotropy is refused again. Co-Authored-By: Claude Opus 5.5 --- .../libSceAgcDriver/tests/execution/ImageSampleReduction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/libs/prx/libSceAgcDriver/tests/execution/ImageSampleReduction.cpp b/core/libs/prx/libSceAgcDriver/tests/execution/ImageSampleReduction.cpp index a6536f8c9a5..e2f8d2dc66a 100644 --- a/core/libs/prx/libSceAgcDriver/tests/execution/ImageSampleReduction.cpp +++ b/core/libs/prx/libSceAgcDriver/tests/execution/ImageSampleReduction.cpp @@ -304,8 +304,8 @@ int main() { Run(*device, {ReductionMax, FilterPoint, MipPoint}, "max, point, point mip"); Run(*device, {ReductionMin, FilterBilinear, MipNone}, "min, bilinear, no mip"); Run(*device, {ReductionMax, FilterPoint, MipNone}, "max, point, no mip"); - Run(*device, {ReductionMin, FilterAnisoBilinear, MipPoint, Aniso2x}, "min, 2x anisotropic bilinear, point mip"); - Run(*device, {ReductionMax, FilterAnisoBilinear, MipPoint, Aniso2x}, "max, 2x anisotropic bilinear, point mip"); + Run(*device, {ReductionMin, FilterAnisoBilinear, MipNone, Aniso2x}, "min, 2x anisotropic bilinear, no mip"); + Run(*device, {ReductionMax, FilterAnisoBilinear, MipNone, Aniso2x}, "max, 2x anisotropic bilinear, no mip"); Gather(*device, {ReductionMin, FilterBilinear, MipPoint}, "gather4_lz, min"); Gather(*device, {ReductionMax, FilterBilinear, MipPoint}, "gather4_lz, max"); RunWithColors(*device, loaded, LoadedCode, false, "min 32_FLOAT, image_load 8_8_8_8");