mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
nir: add frag_coord_xy
to strengthen and simplify pixel_coord lowering Reviewed-by: Georg Lehmann <dadschoorse@gmail.com> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Reviewed-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41227>
This commit is contained in:
parent
9cb688af88
commit
e49f29f25e
8 changed files with 20 additions and 2 deletions
|
|
@ -2435,6 +2435,12 @@ nir_intrinsic_from_system_value(gl_system_value val)
|
|||
return nir_intrinsic_load_invocation_id;
|
||||
case SYSTEM_VALUE_FRAG_COORD:
|
||||
return nir_intrinsic_load_frag_coord;
|
||||
case SYSTEM_VALUE_FRAG_COORD_XY:
|
||||
return nir_intrinsic_load_frag_coord_xy;
|
||||
case SYSTEM_VALUE_FRAG_COORD_Z:
|
||||
return nir_intrinsic_load_frag_coord_z;
|
||||
case SYSTEM_VALUE_FRAG_COORD_W:
|
||||
return nir_intrinsic_load_frag_coord_w;
|
||||
case SYSTEM_VALUE_PIXEL_COORD:
|
||||
return nir_intrinsic_load_pixel_coord;
|
||||
case SYSTEM_VALUE_POINT_COORD:
|
||||
|
|
@ -2615,9 +2621,13 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
|
|||
case nir_intrinsic_load_invocation_id:
|
||||
return SYSTEM_VALUE_INVOCATION_ID;
|
||||
case nir_intrinsic_load_frag_coord:
|
||||
case nir_intrinsic_load_frag_coord_z:
|
||||
case nir_intrinsic_load_frag_coord_w:
|
||||
return SYSTEM_VALUE_FRAG_COORD;
|
||||
case nir_intrinsic_load_frag_coord_xy:
|
||||
return SYSTEM_VALUE_FRAG_COORD_XY;
|
||||
case nir_intrinsic_load_frag_coord_z:
|
||||
return SYSTEM_VALUE_FRAG_COORD_Z;
|
||||
case nir_intrinsic_load_frag_coord_w:
|
||||
return SYSTEM_VALUE_FRAG_COORD_W;
|
||||
case nir_intrinsic_load_pixel_coord:
|
||||
return SYSTEM_VALUE_PIXEL_COORD;
|
||||
case nir_intrinsic_load_point_coord:
|
||||
|
|
|
|||
|
|
@ -867,6 +867,7 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state)
|
|||
case nir_intrinsic_load_point_coord:
|
||||
case nir_intrinsic_load_line_coord:
|
||||
case nir_intrinsic_load_frag_coord:
|
||||
case nir_intrinsic_load_frag_coord_xy:
|
||||
case nir_intrinsic_load_frag_coord_z:
|
||||
case nir_intrinsic_load_frag_coord_w:
|
||||
case nir_intrinsic_load_frag_coord_w_rcp:
|
||||
|
|
|
|||
|
|
@ -724,6 +724,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader)
|
|||
case nir_intrinsic_load_invocation_id:
|
||||
case nir_intrinsic_load_frag_coord:
|
||||
case nir_intrinsic_load_pixel_coord:
|
||||
case nir_intrinsic_load_frag_coord_xy:
|
||||
case nir_intrinsic_load_frag_coord_z:
|
||||
case nir_intrinsic_load_frag_coord_w:
|
||||
case nir_intrinsic_load_frag_coord_w_rcp:
|
||||
|
|
|
|||
|
|
@ -978,6 +978,8 @@ def system_value(name, dest_comp, indices=[], bit_sizes=[32], can_reorder=True):
|
|||
bit_sizes=bit_sizes)
|
||||
|
||||
system_value("frag_coord", 4)
|
||||
# vec2 load of frag_coord.xy (float fragment coordinates, as opposed to load_pixel_coord).
|
||||
system_value("frag_coord_xy", 2)
|
||||
# 16-bit integer vec2 of the pixel X/Y in the framebuffer.
|
||||
system_value("pixel_coord", 2, bit_sizes=[16])
|
||||
# Scalar load of frag_coord Z/W component. Backends can lower frag_coord to
|
||||
|
|
|
|||
|
|
@ -166,6 +166,7 @@ block_check_for_allowed_instrs(nir_block *block, unsigned *count,
|
|||
case nir_intrinsic_load_layer_id:
|
||||
case nir_intrinsic_load_frag_coord:
|
||||
case nir_intrinsic_load_pixel_coord:
|
||||
case nir_intrinsic_load_frag_coord_xy:
|
||||
case nir_intrinsic_load_frag_coord_z:
|
||||
case nir_intrinsic_load_frag_coord_w:
|
||||
case nir_intrinsic_load_sample_pos:
|
||||
|
|
|
|||
|
|
@ -257,6 +257,7 @@ can_sink_instr(nir_instr *instr, nir_move_options options, bool *can_mov_out_of_
|
|||
return options & nir_move_load_buffer_amd;
|
||||
|
||||
case nir_intrinsic_load_frag_coord:
|
||||
case nir_intrinsic_load_frag_coord_xy:
|
||||
case nir_intrinsic_load_frag_coord_z:
|
||||
case nir_intrinsic_load_frag_coord_w:
|
||||
case nir_intrinsic_load_var_special_pan:
|
||||
|
|
|
|||
|
|
@ -384,6 +384,7 @@ gl_system_value_name(gl_system_value sysval)
|
|||
ENUM(SYSTEM_VALUE_INVOCATION_ID),
|
||||
ENUM(SYSTEM_VALUE_FRAG_COORD),
|
||||
ENUM(SYSTEM_VALUE_PIXEL_COORD),
|
||||
ENUM(SYSTEM_VALUE_FRAG_COORD_XY),
|
||||
ENUM(SYSTEM_VALUE_FRAG_COORD_Z),
|
||||
ENUM(SYSTEM_VALUE_FRAG_COORD_W),
|
||||
ENUM(SYSTEM_VALUE_POINT_COORD),
|
||||
|
|
|
|||
|
|
@ -805,6 +805,7 @@ typedef enum
|
|||
/*@{*/
|
||||
SYSTEM_VALUE_FRAG_COORD,
|
||||
SYSTEM_VALUE_PIXEL_COORD,
|
||||
SYSTEM_VALUE_FRAG_COORD_XY,
|
||||
SYSTEM_VALUE_FRAG_COORD_Z,
|
||||
SYSTEM_VALUE_FRAG_COORD_W,
|
||||
SYSTEM_VALUE_POINT_COORD,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue