mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
nir: Promote tess_coord_r600 to tess_coord_xy
This intrinsic (vec2 tess_coord) is generally useful for non-r600 backends. Promote it. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24159>
This commit is contained in:
parent
74f8956f27
commit
9109830bb0
7 changed files with 9 additions and 7 deletions
|
|
@ -2653,6 +2653,7 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
|
|||
case nir_intrinsic_load_primitive_id:
|
||||
return SYSTEM_VALUE_PRIMITIVE_ID;
|
||||
case nir_intrinsic_load_tess_coord:
|
||||
case nir_intrinsic_load_tess_coord_xy:
|
||||
return SYSTEM_VALUE_TESS_COORD;
|
||||
case nir_intrinsic_load_tess_level_outer:
|
||||
return SYSTEM_VALUE_TESS_LEVEL_OUTER;
|
||||
|
|
|
|||
|
|
@ -493,6 +493,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
|
|||
case nir_intrinsic_interp_deref_at_centroid:
|
||||
case nir_intrinsic_interp_deref_at_vertex:
|
||||
case nir_intrinsic_load_tess_coord:
|
||||
case nir_intrinsic_load_tess_coord_xy:
|
||||
case nir_intrinsic_load_point_coord:
|
||||
case nir_intrinsic_load_line_coord:
|
||||
case nir_intrinsic_load_frag_coord:
|
||||
|
|
|
|||
|
|
@ -623,6 +623,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
|
|||
case nir_intrinsic_load_sample_mask_in:
|
||||
case nir_intrinsic_load_helper_invocation:
|
||||
case nir_intrinsic_load_tess_coord:
|
||||
case nir_intrinsic_load_tess_coord_xy:
|
||||
case nir_intrinsic_load_patch_vertices_in:
|
||||
case nir_intrinsic_load_primitive_id:
|
||||
case nir_intrinsic_load_tess_level_outer:
|
||||
|
|
|
|||
|
|
@ -839,6 +839,8 @@ system_value("sample_mask_in", 1)
|
|||
system_value("primitive_id", 1)
|
||||
system_value("invocation_id", 1)
|
||||
system_value("tess_coord", 3)
|
||||
# First 2 components of tess_coord only
|
||||
system_value("tess_coord_xy", 2)
|
||||
system_value("tess_level_outer", 4)
|
||||
system_value("tess_level_inner", 2)
|
||||
system_value("tess_level_outer_default", 4)
|
||||
|
|
@ -1343,9 +1345,6 @@ system_value("tcs_out_param_base_r600", 4)
|
|||
system_value("tcs_rel_patch_id_r600", 1)
|
||||
system_value("tcs_tess_factor_base_r600", 1)
|
||||
|
||||
# the tess coords come as xy only, z has to be calculated
|
||||
system_value("tess_coord_r600", 2)
|
||||
|
||||
# load as many components as needed giving per-component addresses
|
||||
intrinsic("load_local_shared_r600", src_comp=[0], dest_comp=0, indices = [], flags = [CAN_ELIMINATE])
|
||||
|
||||
|
|
|
|||
|
|
@ -655,7 +655,7 @@ r600_lower_tess_coord_impl(nir_builder *b, UNUSED nir_instr *instr, void *_optio
|
|||
{
|
||||
mesa_prim prim_type = *(mesa_prim *)_options;
|
||||
|
||||
auto tc_xy = nir_load_tess_coord_r600(b);
|
||||
auto tc_xy = nir_load_tess_coord_xy(b);
|
||||
|
||||
auto tc_x = nir_channel(b, tc_xy, 0);
|
||||
auto tc_y = nir_channel(b, tc_xy, 1);
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ TESShader::do_scan_instruction(nir_instr *instr)
|
|||
auto intr = nir_instr_as_intrinsic(instr);
|
||||
|
||||
switch (intr->intrinsic) {
|
||||
case nir_intrinsic_load_tess_coord_r600:
|
||||
case nir_intrinsic_load_tess_coord_xy:
|
||||
m_sv_values.set(es_tess_coord);
|
||||
break;
|
||||
case nir_intrinsic_load_primitive_id:
|
||||
|
|
@ -245,7 +245,7 @@ bool
|
|||
TESShader::process_stage_intrinsic(nir_intrinsic_instr *intr)
|
||||
{
|
||||
switch (intr->intrinsic) {
|
||||
case nir_intrinsic_load_tess_coord_r600:
|
||||
case nir_intrinsic_load_tess_coord_xy:
|
||||
return emit_simple_mov(intr->dest, 0, m_tess_coord[0], pin_none) &&
|
||||
emit_simple_mov(intr->dest, 1, m_tess_coord[1], pin_none);
|
||||
case nir_intrinsic_load_primitive_id:
|
||||
|
|
|
|||
|
|
@ -2991,7 +2991,7 @@ impl main {
|
|||
block block_0:
|
||||
/* preds: */
|
||||
vec1 32 ssa_0 = load_const (0x40000000)
|
||||
vec2 32 ssa_1 = intrinsic load_tess_coord_r600 () ()
|
||||
vec2 32 ssa_1 = intrinsic load_tess_coord_xy () ()
|
||||
vec1 32 ssa_2 = fadd ssa_1.x, ssa_1.y
|
||||
vec1 32 ssa_3 = load_const (0x3f800000)
|
||||
vec1 32 ssa_4 = fsub ssa_3, ssa_2
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue