Module: Mesa
Branch: master
Commit: f818d9ae3c89f858e93ea0ea3293103b97599e8f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f818d9ae3c89f858e93ea0ea3293103b97599e8f

Author: Marek Olšák <[email protected]>
Date:   Mon Jul 29 22:04:16 2019 -0400

radeonsi/nir: handle key.mono.u.ps.interpolate_at_sample_force_center

Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]>

---

 src/amd/common/ac_nir_to_llvm.c              | 3 +++
 src/amd/common/ac_shader_abi.h               | 1 +
 src/gallium/drivers/radeonsi/si_shader_nir.c | 5 ++++-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 5e25e838f8f..879d32f50d6 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -3080,6 +3080,9 @@ static LLVMValueRef barycentric_at_sample(struct 
ac_nir_context *ctx,
                                          unsigned mode,
                                          LLVMValueRef sample_id)
 {
+       if (ctx->abi->interp_at_sample_force_center)
+               return barycentric_center(ctx, mode);
+
        LLVMValueRef halfval = LLVMConstReal(ctx->ac.f32, 0.5f);
 
        /* fetch sample ID */
diff --git a/src/amd/common/ac_shader_abi.h b/src/amd/common/ac_shader_abi.h
index d6db398ee7b..3033ae0cac2 100644
--- a/src/amd/common/ac_shader_abi.h
+++ b/src/amd/common/ac_shader_abi.h
@@ -203,6 +203,7 @@ struct ac_shader_abi {
        /* Whether to clamp the shadow reference value to [0,1]on GFX8. 
Radeonsi currently
         * uses it due to promoting D16 to D32, but radv needs it off. */
        bool clamp_shadow_reference;
+       bool interp_at_sample_force_center;
 
        /* Whether to workaround GFX9 ignoring the stride for the buffer size 
if IDXEN=0
        * and LLVM optimizes an indexed load with constant index to IDXEN=0. */
diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c 
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 56d35e533e5..5ca4e178b86 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -1243,7 +1243,10 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, 
struct nir_shader *nir)
                                 ac_to_integer(&ctx->ac,
                                               ac_build_gather_values(&ctx->ac, 
values, 4));
                 }
-        }
+
+               ctx->abi.interp_at_sample_force_center =
+                       
ctx->shader->key.mono.u.ps.interpolate_at_sample_force_center;
+       }
 
        ctx->abi.inputs = &ctx->inputs[0];
        ctx->abi.load_sampler_desc = si_nir_load_sampler_desc;

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to