From: Dave Airlie <airl...@redhat.com> This is ported from amdvlk, and fixes: dEQP-VK.pipeline.multisample_shader_builtin.sample_mask.bit_*
Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/amd/common/ac_nir_to_llvm.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 214fb14..876c7ce 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -4046,6 +4046,16 @@ static LLVMValueRef load_sample_pos(struct ac_nir_context *ctx) return ac_build_gather_values(&ctx->ac, values, 2); } +static LLVMValueRef load_sample_mask_in(struct ac_nir_context *ctx) +{ + LLVMValueRef result, sample_id; + sample_id = unpack_param(&ctx->ac, ctx->abi->ancillary, 8, 4); + + sample_id = LLVMBuildShl(ctx->ac.builder, ctx->ac.i32_1, sample_id, ""); + result = LLVMBuildAnd(ctx->ac.builder, sample_id, ctx->abi->sample_coverage, ""); + return result; +} + static LLVMValueRef visit_interp(struct nir_to_llvm_context *ctx, const nir_intrinsic_instr *instr) { @@ -4350,7 +4360,7 @@ static void visit_intrinsic(struct ac_nir_context *ctx, result = load_sample_pos(ctx); break; case nir_intrinsic_load_sample_mask_in: - result = ctx->abi->sample_coverage; + result = load_sample_mask_in(ctx); break; case nir_intrinsic_load_frag_coord: { LLVMValueRef values[4] = { -- 2.9.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev