dzn: Simplify the triangle_fan_rewrite_index shader

We don't need the first_vertex argument when turning non-indexed
triangle-fan draws into indexed triangle-list ones, the firstVertex
argument can simply be passed as a vertexOffset.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15912>
This commit is contained in:
Boris Brezillon
2022-04-06 17:30:33 +02:00
committed by Marge Bot
parent 1cefda7cb4
commit 02d8436bbd
2 changed files with 7 additions and 12 deletions
+6 -8
View File
@@ -163,8 +163,8 @@ dzn_nir_indirect_draw_shader(enum dzn_indirect_draw_type type)
exec_vals[2] = nir_imul_imm(&b, triangle_count, 3);
exec_vals[3] = nir_channel(&b, draw_info1, 1);
exec_vals[4] = nir_imm_int(&b, 0);
exec_vals[5] = indexed ? nir_channel(&b, draw_info1, 3) : nir_imm_int(&b, 0);
exec_vals[6] = indexed ? draw_info2 : nir_channel(&b, draw_info1, 3);
exec_vals[5] = first_vertex;
exec_vals[6] = base_instance;
nir_ssa_def *triangle_fan_exec_buf_desc =
dzn_nir_create_bo_desc(&b, nir_var_mem_ssbo, 0, 3,
@@ -183,7 +183,7 @@ dzn_nir_indirect_draw_shader(enum dzn_indirect_draw_type type)
nir_ssa_def *triangle_fan_exec_vals[] = {
triangle_fan_index_buf_addr_lo,
triangle_fan_index_buf_addr_hi,
nir_channel(&b, draw_info1, 2),
indexed ? nir_channel(&b, draw_info1, 2) : nir_imm_int(&b, 0),
triangle_count,
nir_imm_int(&b, 1),
nir_imm_int(&b, 1),
@@ -311,13 +311,11 @@ dzn_nir_triangle_fan_rewrite_index_shader(uint8_t old_index_size)
nir_vec3(&b, nir_channel(&b, old_index12, 0),
nir_channel(&b, old_index12, 1), old_index0);
} else {
nir_ssa_def *first_vertex = nir_channel(&b, params, 0);
new_indices =
nir_vec3(&b,
nir_iadd(&b, nir_iadd_imm(&b, triangle, 1), first_vertex),
nir_iadd(&b, nir_iadd_imm(&b, triangle, 2), first_vertex),
first_vertex);
nir_iadd_imm(&b, triangle, 1),
nir_iadd_imm(&b, triangle, 2),
nir_imm_int(&b, 0));
}
nir_ssa_def *new_index_offset =
+1 -4
View File
@@ -79,10 +79,7 @@ struct dzn_indirect_triangle_fan_draw_exec_params {
};
struct dzn_triangle_fan_rewrite_index_params {
union {
uint32_t first_index;
uint32_t first_vertex;
};
uint32_t first_index;
};
struct dzn_indirect_triangle_fan_rewrite_index_exec_params {