diff options
author | Dave Airlie <[email protected]> | 2017-01-31 05:30:26 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-02-24 10:31:35 +1000 |
commit | bdcbe7c76bba3171f4f4c30b29e21f58c9a62856 (patch) | |
tree | d7058a591b3f4a4dbf1c8cb917ad374e78f3424a /src/amd | |
parent | 58c97a0791bf71b31546b13c2b491a636555749c (diff) |
radv: add sample mask input support
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd')
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index ca1416dfbf8..0cc58103404 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -99,6 +99,7 @@ struct nir_to_llvm_context { LLVMValueRef linear_sample, linear_center, linear_centroid; LLVMValueRef front_face; LLVMValueRef ancillary; + LLVMValueRef sample_coverage; LLVMValueRef frag_pos[4]; LLVMBasicBlockRef continue_block; @@ -532,7 +533,7 @@ static void create_function(struct nir_to_llvm_context *ctx) arg_types[arg_idx++] = ctx->f32; /* pos w float */ arg_types[arg_idx++] = ctx->i32; /* front face */ arg_types[arg_idx++] = ctx->i32; /* ancillary */ - arg_types[arg_idx++] = ctx->f32; /* sample coverage */ + arg_types[arg_idx++] = ctx->i32; /* sample coverage */ arg_types[arg_idx++] = ctx->i32; /* fixed pt */ break; default: @@ -659,6 +660,7 @@ static void create_function(struct nir_to_llvm_context *ctx) ctx->frag_pos[3] = LLVMGetParam(ctx->main_function, arg_idx++); ctx->front_face = LLVMGetParam(ctx->main_function, arg_idx++); ctx->ancillary = LLVMGetParam(ctx->main_function, arg_idx++); + ctx->sample_coverage = LLVMGetParam(ctx->main_function, arg_idx++); break; default: unreachable("Shader stage not implemented"); @@ -3115,6 +3117,9 @@ static void visit_intrinsic(struct nir_to_llvm_context *ctx, ctx->shader_info->fs.force_persample = true; result = load_sample_pos(ctx); break; + case nir_intrinsic_load_sample_mask_in: + result = ctx->sample_coverage; + break; case nir_intrinsic_load_front_face: result = ctx->front_face; break; |