Mesa (master): v3dv: use intrinsic builders
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jan 6 14:51:28 UTC 2021
Module: Mesa
Branch: master
Commit: 172e79d00916d6c7fa8c1d45db38a20b9c797914
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=172e79d00916d6c7fa8c1d45db38a20b9c797914
Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date: Fri Jan 1 20:52:20 2021 +0100
v3dv: use intrinsic builders
Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8295>
---
src/broadcom/vulkan/v3dv_meta_clear.c | 38 ++++-----------
src/broadcom/vulkan/v3dv_meta_copy.c | 92 ++++++++++-------------------------
2 files changed, 36 insertions(+), 94 deletions(-)
diff --git a/src/broadcom/vulkan/v3dv_meta_clear.c b/src/broadcom/vulkan/v3dv_meta_clear.c
index f0678b55940..af77dc85ccd 100644
--- a/src/broadcom/vulkan/v3dv_meta_clear.c
+++ b/src/broadcom/vulkan/v3dv_meta_clear.c
@@ -129,12 +129,7 @@ v3dv_meta_clear_finish(struct v3dv_device *device)
static nir_ssa_def *
gen_rect_vertices(nir_builder *b)
{
- nir_intrinsic_instr *vertex_id =
- nir_intrinsic_instr_create(b->shader,
- nir_intrinsic_load_vertex_id);
- nir_ssa_dest_init(&vertex_id->instr, &vertex_id->dest, 1, 32, "vertexid");
- nir_builder_instr_insert(b, &vertex_id->instr);
-
+ nir_ssa_def *vertex_id = nir_load_vertex_id(b);
/* vertex 0: -1.0, -1.0
* vertex 1: -1.0, 1.0
@@ -148,8 +143,8 @@ gen_rect_vertices(nir_builder *b)
*/
nir_ssa_def *one = nir_imm_int(b, 1);
- nir_ssa_def *c0cmp = nir_ilt(b, &vertex_id->dest.ssa, nir_imm_int(b, 2));
- nir_ssa_def *c1cmp = nir_ieq(b, nir_iand(b, &vertex_id->dest.ssa, one), one);
+ nir_ssa_def *c0cmp = nir_ilt(b, vertex_id, nir_imm_int(b, 2));
+ nir_ssa_def *c1cmp = nir_ieq(b, nir_iand(b, vertex_id, one), one);
nir_ssa_def *comp[4];
comp[0] = nir_bcsel(b, c0cmp,
@@ -197,16 +192,8 @@ get_color_clear_rect_fs(uint32_t rt_idx, VkFormat format)
nir_variable_create(b.shader, nir_var_shader_out, fs_out_type, "out_color");
fs_out_color->data.location = FRAG_RESULT_DATA0 + rt_idx;
- nir_intrinsic_instr *color_load =
- nir_intrinsic_instr_create(b.shader, nir_intrinsic_load_push_constant);
- nir_intrinsic_set_base(color_load, 0);
- nir_intrinsic_set_range(color_load, 16);
- color_load->src[0] = nir_src_for_ssa(nir_imm_int(&b, 0));
- color_load->num_components = 4;
- nir_ssa_dest_init(&color_load->instr, &color_load->dest, 4, 32, "clear color");
- nir_builder_instr_insert(&b, &color_load->instr);
-
- nir_store_var(&b, fs_out_color, &color_load->dest.ssa, 0xf);
+ nir_ssa_def *color_load = nir_load_push_constant(&b, 4, 32, nir_imm_int(&b, 0), .base = 0, .range = 16);
+ nir_store_var(&b, fs_out_color, color_load, 0xf);
return b.shader;
}
@@ -223,17 +210,10 @@ get_depth_clear_rect_fs()
"out_depth");
fs_out_depth->data.location = FRAG_RESULT_DEPTH;
- nir_intrinsic_instr *depth_load =
- nir_intrinsic_instr_create(b.shader, nir_intrinsic_load_push_constant);
- nir_intrinsic_set_base(depth_load, 0);
- nir_intrinsic_set_range(depth_load, 4);
- depth_load->src[0] = nir_src_for_ssa(nir_imm_int(&b, 0));
- depth_load->num_components = 1;
- nir_ssa_dest_init(&depth_load->instr, &depth_load->dest, 1, 32,
- "clear depth value");
- nir_builder_instr_insert(&b, &depth_load->instr);
-
- nir_store_var(&b, fs_out_depth, &depth_load->dest.ssa, 0x1);
+ nir_ssa_def *depth_load =
+ nir_load_push_constant(&b, 1, 32, nir_imm_int(&b, 0), .base = 0, .range = 4);
+
+ nir_store_var(&b, fs_out_depth, depth_load, 0x1);
return b.shader;
}
diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c
index 42c5bcdcaf0..46035f8f8cb 100644
--- a/src/broadcom/vulkan/v3dv_meta_copy.c
+++ b/src/broadcom/vulkan/v3dv_meta_copy.c
@@ -3058,34 +3058,16 @@ get_texel_buffer_copy_fs(struct v3dv_device *device, VkFormat format)
/* Load the box describing the pixel region we want to copy from the
* texel buffer.
*/
- nir_intrinsic_instr *box =
- nir_intrinsic_instr_create(b.shader, nir_intrinsic_load_push_constant);
- box->src[0] = nir_src_for_ssa(nir_imm_int(&b, 0));
- nir_intrinsic_set_base(box, 0);
- nir_intrinsic_set_range(box, 16);
- box->num_components = 4;
- nir_ssa_dest_init(&box->instr, &box->dest, 4, 32, "box");
- nir_builder_instr_insert(&b, &box->instr);
+ nir_ssa_def *box =
+ nir_load_push_constant(&b, 4, 32, nir_imm_int(&b, 0), .base = 0, .range = 16);
/* Load the buffer stride (this comes in texel units) */
- nir_intrinsic_instr *stride =
- nir_intrinsic_instr_create(b.shader, nir_intrinsic_load_push_constant);
- stride->src[0] = nir_src_for_ssa(nir_imm_int(&b, 0));
- nir_intrinsic_set_base(stride, 16);
- nir_intrinsic_set_range(stride, 4);
- stride->num_components = 1;
- nir_ssa_dest_init(&stride->instr, &stride->dest, 1, 32, "buffer stride");
- nir_builder_instr_insert(&b, &stride->instr);
+ nir_ssa_def *stride =
+ nir_load_push_constant(&b, 1, 32, nir_imm_int(&b, 0), .base = 16, .range = 4);
/* Load the buffer offset (this comes in texel units) */
- nir_intrinsic_instr *offset =
- nir_intrinsic_instr_create(b.shader, nir_intrinsic_load_push_constant);
- offset->src[0] = nir_src_for_ssa(nir_imm_int(&b, 0));
- nir_intrinsic_set_base(offset, 20);
- nir_intrinsic_set_range(offset, 4);
- offset->num_components = 1;
- nir_ssa_dest_init(&offset->instr, &offset->dest, 1, 32, "buffer offset");
- nir_builder_instr_insert(&b, &offset->instr);
+ nir_ssa_def *offset =
+ nir_load_push_constant(&b, 1, 32, nir_imm_int(&b, 0), .base = 20, .range = 4);
nir_ssa_def *coord = nir_f2i32(&b, load_frag_coord(&b));
@@ -3099,13 +3081,13 @@ get_texel_buffer_copy_fs(struct v3dv_device *device, VkFormat format)
*/
nir_ssa_def *x_offset =
nir_isub(&b, nir_channel(&b, coord, 0),
- nir_channel(&b, &box->dest.ssa, 0));
+ nir_channel(&b, box, 0));
nir_ssa_def *y_offset =
nir_isub(&b, nir_channel(&b, coord, 1),
- nir_channel(&b, &box->dest.ssa, 1));
+ nir_channel(&b, box, 1));
nir_ssa_def *texel_offset =
- nir_iadd(&b, nir_iadd(&b, &offset->dest.ssa, x_offset),
- nir_imul(&b, y_offset, &stride->dest.ssa));
+ nir_iadd(&b, nir_iadd(&b, offset, x_offset),
+ nir_imul(&b, y_offset, stride));
nir_ssa_def *tex_deref = &nir_build_deref_var(&b, sampler)->dest.ssa;
nir_tex_instr *tex = nir_tex_instr_create(b.shader, 2);
@@ -4233,12 +4215,7 @@ create_blit_render_pass(struct v3dv_device *device,
static nir_ssa_def *
gen_rect_vertices(nir_builder *b)
{
- nir_intrinsic_instr *vertex_id =
- nir_intrinsic_instr_create(b->shader,
- nir_intrinsic_load_vertex_id);
- nir_ssa_dest_init(&vertex_id->instr, &vertex_id->dest, 1, 32, "vertexid");
- nir_builder_instr_insert(b, &vertex_id->instr);
-
+ nir_ssa_def *vertex_id = nir_load_vertex_id(b);
/* vertex 0: -1.0, -1.0
* vertex 1: -1.0, 1.0
@@ -4252,8 +4229,8 @@ gen_rect_vertices(nir_builder *b)
*/
nir_ssa_def *one = nir_imm_int(b, 1);
- nir_ssa_def *c0cmp = nir_ilt(b, &vertex_id->dest.ssa, nir_imm_int(b, 2));
- nir_ssa_def *c1cmp = nir_ieq(b, nir_iand(b, &vertex_id->dest.ssa, one), one);
+ nir_ssa_def *c0cmp = nir_ilt(b, vertex_id, nir_imm_int(b, 2));
+ nir_ssa_def *c1cmp = nir_ieq(b, nir_iand(b, vertex_id, one), one);
nir_ssa_def *comp[4];
comp[0] = nir_bcsel(b, c0cmp,
@@ -4271,28 +4248,13 @@ gen_rect_vertices(nir_builder *b)
static nir_ssa_def *
gen_tex_coords(nir_builder *b)
{
- nir_intrinsic_instr *tex_box =
- nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_push_constant);
- tex_box->src[0] = nir_src_for_ssa(nir_imm_int(b, 0));
- nir_intrinsic_set_base(tex_box, 0);
- nir_intrinsic_set_range(tex_box, 16);
- tex_box->num_components = 4;
- nir_ssa_dest_init(&tex_box->instr, &tex_box->dest, 4, 32, "tex_box");
- nir_builder_instr_insert(b, &tex_box->instr);
-
- nir_intrinsic_instr *tex_z =
- nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_push_constant);
- tex_z->src[0] = nir_src_for_ssa(nir_imm_int(b, 0));
- nir_intrinsic_set_base(tex_z, 16);
- nir_intrinsic_set_range(tex_z, 4);
- tex_z->num_components = 1;
- nir_ssa_dest_init(&tex_z->instr, &tex_z->dest, 1, 32, "tex_z");
- nir_builder_instr_insert(b, &tex_z->instr);
-
- nir_intrinsic_instr *vertex_id =
- nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_vertex_id);
- nir_ssa_dest_init(&vertex_id->instr, &vertex_id->dest, 1, 32, "vertexid");
- nir_builder_instr_insert(b, &vertex_id->instr);
+ nir_ssa_def *tex_box =
+ nir_load_push_constant(b, 4, 32, nir_imm_int(b, 0), .base = 0, .range = 16);
+
+ nir_ssa_def *tex_z =
+ nir_load_push_constant(b, 1, 32, nir_imm_int(b, 0), .base = 16, .range = 4);
+
+ nir_ssa_def *vertex_id = nir_load_vertex_id(b);
/* vertex 0: src0_x, src0_y
* vertex 1: src0_x, src1_y
@@ -4306,18 +4268,18 @@ gen_tex_coords(nir_builder *b)
*/
nir_ssa_def *one = nir_imm_int(b, 1);
- nir_ssa_def *c0cmp = nir_ilt(b, &vertex_id->dest.ssa, nir_imm_int(b, 2));
- nir_ssa_def *c1cmp = nir_ieq(b, nir_iand(b, &vertex_id->dest.ssa, one), one);
+ nir_ssa_def *c0cmp = nir_ilt(b, vertex_id, nir_imm_int(b, 2));
+ nir_ssa_def *c1cmp = nir_ieq(b, nir_iand(b, vertex_id, one), one);
nir_ssa_def *comp[4];
comp[0] = nir_bcsel(b, c0cmp,
- nir_channel(b, &tex_box->dest.ssa, 0),
- nir_channel(b, &tex_box->dest.ssa, 2));
+ nir_channel(b, tex_box, 0),
+ nir_channel(b, tex_box, 2));
comp[1] = nir_bcsel(b, c1cmp,
- nir_channel(b, &tex_box->dest.ssa, 3),
- nir_channel(b, &tex_box->dest.ssa, 1));
- comp[2] = &tex_z->dest.ssa;
+ nir_channel(b, tex_box, 3),
+ nir_channel(b, tex_box, 1));
+ comp[2] = tex_z;
comp[3] = nir_imm_float(b, 1.0f);
return nir_vec(b, comp, 4);
}
More information about the mesa-commit
mailing list