mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 10:30:08 +01:00
ac/nir: add support for discard_if intrinsic (v2)
We are going to start lowering to this in NIR code, so prepare radv for it. v2: handle conversion to kilp properly (nha) Cc: "13.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
b3a29f2e9e
commit
dd77faeca2
1 changed files with 21 additions and 0 deletions
|
|
@ -2610,6 +2610,24 @@ static void emit_barrier(struct nir_to_llvm_context *ctx)
|
|||
ctx->voidt, NULL, 0, 0);
|
||||
}
|
||||
|
||||
static void emit_discard_if(struct nir_to_llvm_context *ctx,
|
||||
nir_intrinsic_instr *instr)
|
||||
{
|
||||
LLVMValueRef cond;
|
||||
ctx->shader_info->fs.can_discard = true;
|
||||
|
||||
cond = LLVMBuildICmp(ctx->builder, LLVMIntNE,
|
||||
get_src(ctx, instr->src[0]),
|
||||
ctx->i32zero, "");
|
||||
|
||||
cond = LLVMBuildSelect(ctx->builder, cond,
|
||||
LLVMConstReal(ctx->f32, -1.0f),
|
||||
ctx->f32zero, "");
|
||||
emit_llvm_intrinsic(ctx, "llvm.AMDGPU.kill",
|
||||
LLVMVoidTypeInContext(ctx->context),
|
||||
&cond, 1, 0);
|
||||
}
|
||||
|
||||
static LLVMValueRef
|
||||
visit_load_local_invocation_index(struct nir_to_llvm_context *ctx)
|
||||
{
|
||||
|
|
@ -2922,6 +2940,9 @@ static void visit_intrinsic(struct nir_to_llvm_context *ctx,
|
|||
LLVMVoidTypeInContext(ctx->context),
|
||||
NULL, 0, 0);
|
||||
break;
|
||||
case nir_intrinsic_discard_if:
|
||||
emit_discard_if(ctx, instr);
|
||||
break;
|
||||
case nir_intrinsic_memory_barrier:
|
||||
emit_waitcnt(ctx);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue