Mesa (main): dzn: Simplify the triangle_fan_rewrite_index shader
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Apr 22 07:38:03 UTC 2022
Module: Mesa
Branch: main
Commit: 02d8436bbdbe99d1b81cc270274010bdbf863596
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=02d8436bbdbe99d1b81cc270274010bdbf863596
Author: Boris Brezillon <boris.brezillon at collabora.com>
Date: Wed Apr 6 17:30:33 2022 +0200
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 at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15912>
---
src/microsoft/vulkan/dzn_nir.c | 14 ++++++--------
src/microsoft/vulkan/dzn_nir.h | 5 +----
2 files changed, 7 insertions(+), 12 deletions(-)
diff --git a/src/microsoft/vulkan/dzn_nir.c b/src/microsoft/vulkan/dzn_nir.c
index da626bcdc35..f8f5ce056eb 100644
--- a/src/microsoft/vulkan/dzn_nir.c
+++ b/src/microsoft/vulkan/dzn_nir.c
@@ -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 =
diff --git a/src/microsoft/vulkan/dzn_nir.h b/src/microsoft/vulkan/dzn_nir.h
index 5eaec3ecc7c..4b3fef49ff7 100644
--- a/src/microsoft/vulkan/dzn_nir.h
+++ b/src/microsoft/vulkan/dzn_nir.h
@@ -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 {
More information about the mesa-commit
mailing list