Module: Mesa
Branch: master
Commit: a73bdf4853494aab39413b960ef6e240e4800eb8
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a73bdf4853494aab39413b960ef6e240e4800eb8

Author: Marek Olšák <[email protected]>
Date:   Wed Oct 21 13:00:41 2020 -0400

radeonsi: remove VS input loads when culling with rasterizer discard

Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7542>

---

 src/gallium/drivers/radeonsi/gfx10_shader_ngg.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c 
b/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c
index 1cad17195dd..64be935e3f9 100644
--- a/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c
+++ b/src/gallium/drivers/radeonsi/gfx10_shader_ngg.c
@@ -763,6 +763,17 @@ void gfx10_emit_ngg_culling_epilogue(struct ac_shader_abi 
*abi, unsigned max_out
 
       switch (info->output_semantic[i]) {
       case VARYING_SLOT_POS:
+         /* If we are going to cull everything (rasterizer_discard), discard
+          * the position. This is useful for analyzing maximum theoretical
+          * performance without VS input loads.
+          */
+         if (shader->key.opt.ngg_culling & SI_NGG_CULL_FRONT_FACE &&
+             shader->key.opt.ngg_culling & SI_NGG_CULL_BACK_FACE) {
+            for (unsigned j = 0; j < 4; j++)
+               LLVMBuildStore(builder, LLVMGetUndef(ctx->ac.f32), addrs[4 * i 
+ j]);
+            break;
+         }
+
          pos_index = i;
          for (unsigned j = 0; j < 4; j++) {
             position[j] = LLVMBuildLoad(ctx->ac.builder, addrs[4 * i + j], "");

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to