From f501baabdb5cd356faad0e419c64b2ac312c5756 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 11 Jul 2013 16:00:45 -0600 Subject: [PATCH] tgsi: fix-up KILP comments KILP is really unconditional fragment kill. We've had KIL and KILP transposed forever. I'll fix that next. Reviewed-by: Jose Fonseca --- src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 3 +-- src/gallium/auxiliary/tgsi/tgsi_exec.c | 5 ++--- src/gallium/docs/source/tgsi.rst | 10 +++++----- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 1 + 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 43724e77a13..43182eef350 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -2096,8 +2096,7 @@ emit_kil( /** - * Predicated fragment kill. - * XXX Actually, we do an unconditional kill (as in tgsi_exec.c). + * Unconditional fragment kill. * The only predication is the execution mask which will apply if * we're inside a loop or conditional. */ diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index e0000aff822..035b1059b83 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -1614,8 +1614,7 @@ exec_kil(struct tgsi_exec_machine *mach, } /** - * Execute NVIDIA-style KIL which is predicated by a condition code. - * Kill fragment if the condition code is TRUE. + * Unconditional fragment kill/discard. */ static void exec_kilp(struct tgsi_exec_machine *mach, @@ -1623,7 +1622,7 @@ exec_kilp(struct tgsi_exec_machine *mach, { uint kilmask; /* bit 0 = pixel 0, bit 1 = pixel 1, etc */ - /* "unconditional" kil */ + /* kill fragment for all fragments currently executing */ kilmask = mach->ExecMask; mach->Temps[TEMP_KILMASK_I].xyzw[TEMP_KILMASK_C].u[0] |= kilmask; } diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index 3f48b511ee6..8c6fec9851c 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -471,11 +471,6 @@ This instruction replicates its result. dst.w = partialy(src.w) -.. opcode:: KILP - Predicated Discard - - Not really predicated, just unconditional discard - - .. opcode:: PK2H - Pack Two 16-bit Floats TBD @@ -755,6 +750,11 @@ This instruction replicates its result. endif +.. opcode:: KILP - Discard + + Unconditional discard. Allowed in fragment shaders only. + + .. opcode:: SCS - Sine Cosine .. math:: diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 64e0a8a46eb..9e0a648bcf1 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -2978,6 +2978,7 @@ glsl_to_tgsi_visitor::visit(ir_discard *ir) this->result.negate = ~this->result.negate; emit(ir, TGSI_OPCODE_KIL, undef_dst, this->result); } else { + /* unconditional kil */ emit(ir, TGSI_OPCODE_KILP); } } -- 2.30.2