[Mesa-dev] [PATCH 2/3] tgsi: fix-up KILP comments
Brian Paul
brianp at vmware.com
Thu Jul 11 16:26:09 PDT 2013
KILP is really unconditional fragment kill.
We've had KIL and KILP transposed forever. I'll fix that next.
---
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 43724e7..43182ee 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 e0000af..035b105 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 3f48b51..8c6fec9 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 64e0a8a..9e0a648 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);
}
}
--
1.7.10.4
More information about the mesa-dev
mailing list