mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 09:20:12 +01:00
nir: add lowering from FS LAYER input to LAYER_ID sysval
Reviewed-by: Qiang Yu <yuq825@gmail.com> Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26274>
This commit is contained in:
parent
a181c86e73
commit
32ee6376ad
5 changed files with 17 additions and 0 deletions
|
|
@ -2195,6 +2195,8 @@ nir_intrinsic_from_system_value(gl_system_value val)
|
||||||
return nir_intrinsic_load_sample_pos_or_center;
|
return nir_intrinsic_load_sample_pos_or_center;
|
||||||
case SYSTEM_VALUE_SAMPLE_MASK_IN:
|
case SYSTEM_VALUE_SAMPLE_MASK_IN:
|
||||||
return nir_intrinsic_load_sample_mask_in;
|
return nir_intrinsic_load_sample_mask_in;
|
||||||
|
case SYSTEM_VALUE_LAYER_ID:
|
||||||
|
return nir_intrinsic_load_layer_id;
|
||||||
case SYSTEM_VALUE_LOCAL_INVOCATION_ID:
|
case SYSTEM_VALUE_LOCAL_INVOCATION_ID:
|
||||||
return nir_intrinsic_load_local_invocation_id;
|
return nir_intrinsic_load_local_invocation_id;
|
||||||
case SYSTEM_VALUE_LOCAL_INVOCATION_INDEX:
|
case SYSTEM_VALUE_LOCAL_INVOCATION_INDEX:
|
||||||
|
|
@ -2348,6 +2350,8 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
|
||||||
return SYSTEM_VALUE_SAMPLE_POS_OR_CENTER;
|
return SYSTEM_VALUE_SAMPLE_POS_OR_CENTER;
|
||||||
case nir_intrinsic_load_sample_mask_in:
|
case nir_intrinsic_load_sample_mask_in:
|
||||||
return SYSTEM_VALUE_SAMPLE_MASK_IN;
|
return SYSTEM_VALUE_SAMPLE_MASK_IN;
|
||||||
|
case nir_intrinsic_load_layer_id:
|
||||||
|
return SYSTEM_VALUE_LAYER_ID;
|
||||||
case nir_intrinsic_load_local_invocation_id:
|
case nir_intrinsic_load_local_invocation_id:
|
||||||
return SYSTEM_VALUE_LOCAL_INVOCATION_ID;
|
return SYSTEM_VALUE_LOCAL_INVOCATION_ID;
|
||||||
case nir_intrinsic_load_local_invocation_index:
|
case nir_intrinsic_load_local_invocation_index:
|
||||||
|
|
|
||||||
|
|
@ -4019,6 +4019,9 @@ typedef struct nir_shader_compiler_options {
|
||||||
|
|
||||||
/** Lower f2f16 to f2f16_rtz when execution mode is not rtne. */
|
/** Lower f2f16 to f2f16_rtz when execution mode is not rtne. */
|
||||||
bool force_f2f16_rtz;
|
bool force_f2f16_rtz;
|
||||||
|
|
||||||
|
/** Lower VARYING_SLOT_LAYER in FS to SYSTEM_VALUE_LAYER_ID. */
|
||||||
|
bool lower_layer_fs_input_to_sysval;
|
||||||
} nir_shader_compiler_options;
|
} nir_shader_compiler_options;
|
||||||
|
|
||||||
typedef struct nir_shader {
|
typedef struct nir_shader {
|
||||||
|
|
|
||||||
|
|
@ -146,6 +146,14 @@ lower_system_value_instr(nir_builder *b, nir_instr *instr, void *_state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case nir_intrinsic_load_input:
|
||||||
|
if (b->shader->options->lower_layer_fs_input_to_sysval &&
|
||||||
|
b->shader->info.stage == MESA_SHADER_FRAGMENT &&
|
||||||
|
nir_intrinsic_io_semantics(intrin).location == VARYING_SLOT_LAYER)
|
||||||
|
return nir_load_layer_id(b);
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
|
||||||
case nir_intrinsic_load_deref: {
|
case nir_intrinsic_load_deref: {
|
||||||
nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]);
|
nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]);
|
||||||
if (!nir_deref_mode_is(deref, nir_var_system_value))
|
if (!nir_deref_mode_is(deref, nir_var_system_value))
|
||||||
|
|
|
||||||
|
|
@ -333,6 +333,7 @@ gl_system_value_name(gl_system_value sysval)
|
||||||
ENUM(SYSTEM_VALUE_SAMPLE_ID),
|
ENUM(SYSTEM_VALUE_SAMPLE_ID),
|
||||||
ENUM(SYSTEM_VALUE_SAMPLE_POS),
|
ENUM(SYSTEM_VALUE_SAMPLE_POS),
|
||||||
ENUM(SYSTEM_VALUE_SAMPLE_MASK_IN),
|
ENUM(SYSTEM_VALUE_SAMPLE_MASK_IN),
|
||||||
|
ENUM(SYSTEM_VALUE_LAYER_ID),
|
||||||
ENUM(SYSTEM_VALUE_HELPER_INVOCATION),
|
ENUM(SYSTEM_VALUE_HELPER_INVOCATION),
|
||||||
ENUM(SYSTEM_VALUE_COLOR0),
|
ENUM(SYSTEM_VALUE_COLOR0),
|
||||||
ENUM(SYSTEM_VALUE_COLOR1),
|
ENUM(SYSTEM_VALUE_COLOR1),
|
||||||
|
|
|
||||||
|
|
@ -788,6 +788,7 @@ typedef enum
|
||||||
SYSTEM_VALUE_SAMPLE_POS,
|
SYSTEM_VALUE_SAMPLE_POS,
|
||||||
SYSTEM_VALUE_SAMPLE_POS_OR_CENTER,
|
SYSTEM_VALUE_SAMPLE_POS_OR_CENTER,
|
||||||
SYSTEM_VALUE_SAMPLE_MASK_IN,
|
SYSTEM_VALUE_SAMPLE_MASK_IN,
|
||||||
|
SYSTEM_VALUE_LAYER_ID,
|
||||||
SYSTEM_VALUE_HELPER_INVOCATION,
|
SYSTEM_VALUE_HELPER_INVOCATION,
|
||||||
SYSTEM_VALUE_COLOR0,
|
SYSTEM_VALUE_COLOR0,
|
||||||
SYSTEM_VALUE_COLOR1,
|
SYSTEM_VALUE_COLOR1,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue