ac/nir: do not clamp shadow reference on GFX10
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 18 Jul 2019 13:51:27 +0000 (15:51 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 22 Jul 2019 07:02:22 +0000 (09:02 +0200)
RadeonSI only uses Z32_FLOAT_CLAMP for upgraded depth textures
on GFX10 and RADV doesn't promotes Z16 or Z24.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/common/ac_nir_to_llvm.c

index f69e02f6d0a48971c44aaaa718d06d2209be67cc..ec79e5f1ce79ee37499b6e41cdd3d784dcf2fd91 100644 (file)
@@ -3805,12 +3805,16 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)
 
        /* TC-compatible HTILE on radeonsi promotes Z16 and Z24 to Z32_FLOAT,
         * so the depth comparison value isn't clamped for Z16 and
-        * Z24 anymore. Do it manually here.
+        * Z24 anymore. Do it manually here for GFX8-9; GFX10 has an explicitly
+        * clamped 32-bit float format.
         *
         * It's unnecessary if the original texture format was
         * Z32_FLOAT, but we don't know that here.
         */
-       if (args.compare && ctx->ac.chip_class >= GFX8 && ctx->abi->clamp_shadow_reference)
+       if (args.compare &&
+           ctx->ac.chip_class >= GFX8 &&
+           ctx->ac.chip_class <= GFX9 &&
+           ctx->abi->clamp_shadow_reference)
                args.compare = ac_build_clamp(&ctx->ac, ac_to_float(&ctx->ac, args.compare));
 
        /* pack derivatives */