From 0914e0d02f26137bbb234122f7cdd880d8baa989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 11 Dec 2023 02:50:01 -0500 Subject: [PATCH] nir: rename load_cull_small_primitives -> triangles, add load_cull_small_lines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit for radeonsi Reviewed-by: Timur Kristóf Part-of: --- src/amd/common/ac_nir_cull.c | 4 ++-- src/amd/vulkan/nir/radv_nir_lower_abi.c | 2 +- src/compiler/nir/nir_divergence_analysis.c | 3 ++- src/compiler/nir/nir_intrinsics.py | 6 ++++-- src/compiler/nir/nir_opt_preamble.c | 3 ++- src/gallium/drivers/radeonsi/si_nir_lower_abi.c | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/amd/common/ac_nir_cull.c b/src/amd/common/ac_nir_cull.c index fc2b6a54fc8..0ef2f662ca4 100644 --- a/src/amd/common/ac_nir_cull.c +++ b/src/amd/common/ac_nir_cull.c @@ -91,7 +91,7 @@ cull_small_primitive_triangle(nir_builder *b, nir_def *bbox_min[2], nir_def *bbo { nir_def *prim_is_small = NULL; - nir_if *if_cull_small_prims = nir_push_if(b, nir_load_cull_small_primitives_enabled_amd(b)); + nir_if *if_cull_small_prims = nir_push_if(b, nir_load_cull_small_triangles_enabled_amd(b)); { nir_def *vp = nir_load_viewport_xy_scale_and_offset(b); nir_def *small_prim_precision = nir_load_cull_small_prim_precision_amd(b); @@ -217,7 +217,7 @@ cull_small_primitive_line(nir_builder *b, nir_def *pos[3][4], nir_def *prim_is_small = NULL; /* Small primitive filter - eliminate lines that are too small to affect a sample. */ - nir_if *if_cull_small_prims = nir_push_if(b, nir_load_cull_small_primitives_enabled_amd(b)); + nir_if *if_cull_small_prims = nir_push_if(b, nir_load_cull_small_triangles_enabled_amd(b)); { /* This only works with lines without perpendicular end caps (lines with perpendicular * end caps are rasterized as quads and thus can't be culled as small prims in 99% of diff --git a/src/amd/vulkan/nir/radv_nir_lower_abi.c b/src/amd/vulkan/nir/radv_nir_lower_abi.c index b40d867650a..550115587ba 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_abi.c +++ b/src/amd/vulkan/nir/radv_nir_lower_abi.c @@ -222,7 +222,7 @@ lower_abi_instr(nir_builder *b, nir_intrinsic_instr *intrin, void *state) case nir_intrinsic_load_cull_ccw_amd: replacement = nggc_bool_setting(b, radv_nggc_face_is_ccw, s); break; - case nir_intrinsic_load_cull_small_primitives_enabled_amd: + case nir_intrinsic_load_cull_small_triangles_enabled_amd: replacement = nggc_bool_setting(b, radv_nggc_small_primitives, s); break; case nir_intrinsic_load_cull_small_prim_precision_amd: { diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 7c1b94ea81e..8f162582826 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -288,7 +288,8 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state) case nir_intrinsic_load_cull_front_face_enabled_amd: case nir_intrinsic_load_cull_back_face_enabled_amd: case nir_intrinsic_load_cull_ccw_amd: - case nir_intrinsic_load_cull_small_primitives_enabled_amd: + case nir_intrinsic_load_cull_small_triangles_enabled_amd: + case nir_intrinsic_load_cull_small_lines_enabled_amd: case nir_intrinsic_load_cull_any_enabled_amd: case nir_intrinsic_load_cull_small_prim_precision_amd: case nir_intrinsic_load_user_data_amd: diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index 31af10c320b..dcb7677eb09 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -1644,8 +1644,10 @@ intrinsic("load_cull_front_face_enabled_amd", dest_comp=1, bit_sizes=[1], flags= intrinsic("load_cull_back_face_enabled_amd", dest_comp=1, bit_sizes=[1], flags=[CAN_ELIMINATE]) # True if face culling should use CCW (false if CW). intrinsic("load_cull_ccw_amd", dest_comp=1, bit_sizes=[1], flags=[CAN_ELIMINATE]) -# Whether the shader should cull small primitives that are not visible in a pixel. -intrinsic("load_cull_small_primitives_enabled_amd", dest_comp=1, bit_sizes=[1], flags=[CAN_ELIMINATE]) +# Whether the shader should cull small triangles that are not visible in a pixel. +intrinsic("load_cull_small_triangles_enabled_amd", dest_comp=1, bit_sizes=[1], flags=[CAN_ELIMINATE]) +# Whether the shader should cull small lines that are not visible in a pixel. +intrinsic("load_cull_small_lines_enabled_amd", dest_comp=1, bit_sizes=[1], flags=[CAN_ELIMINATE]) # Whether any culling setting is enabled in the shader. intrinsic("load_cull_any_enabled_amd", dest_comp=1, bit_sizes=[1], flags=[CAN_ELIMINATE]) # Small primitive culling precision diff --git a/src/compiler/nir/nir_opt_preamble.c b/src/compiler/nir/nir_opt_preamble.c index 155dea37094..717753ed6cc 100644 --- a/src/compiler/nir/nir_opt_preamble.c +++ b/src/compiler/nir/nir_opt_preamble.c @@ -182,7 +182,8 @@ can_move_intrinsic(nir_intrinsic_instr *instr, opt_preamble_ctx *ctx) case nir_intrinsic_load_cull_front_face_enabled_amd: case nir_intrinsic_load_cull_back_face_enabled_amd: case nir_intrinsic_load_cull_ccw_amd: - case nir_intrinsic_load_cull_small_primitives_enabled_amd: + case nir_intrinsic_load_cull_small_triangles_enabled_amd: + case nir_intrinsic_load_cull_small_lines_enabled_amd: case nir_intrinsic_load_cull_any_enabled_amd: case nir_intrinsic_load_cull_small_prim_precision_amd: case nir_intrinsic_load_vbo_base_agx: diff --git a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c index a7a6ae71671..ce369a00c8d 100644 --- a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c +++ b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c @@ -417,7 +417,7 @@ static bool lower_intrinsic(nir_builder *b, nir_instr *instr, struct lower_abi_s replacement = nir_ishl_imm(b, small_prim_precision, 23); break; } - case nir_intrinsic_load_cull_small_primitives_enabled_amd: { + case nir_intrinsic_load_cull_small_triangles_enabled_amd: { unsigned mask = SI_NGG_CULL_LINES | SI_NGG_CULL_SMALL_LINES_DIAMOND_EXIT; replacement = nir_imm_bool(b, (key->ge.opt.ngg_culling & mask) != SI_NGG_CULL_LINES); break;