/* Values from set_tess_state. */
TGSI_SEMANTIC_DEFAULT_TESSOUTER_SI = TGSI_SEMANTIC_COUNT,
TGSI_SEMANTIC_DEFAULT_TESSINNER_SI,
-
- /* Up to 4 dwords in user SGPRs for compute shaders. */
- TGSI_SEMANTIC_CS_USER_DATA,
};
enum {
/* Use a property enum that CS wouldn't use. */
TGSI_PROPERTY_CS_LOCAL_SIZE = TGSI_PROPERTY_FS_COORD_ORIGIN,
- /* The number of used user data dwords in the range [1, 4]. */
- TGSI_PROPERTY_CS_USER_DATA_DWORDS = TGSI_PROPERTY_FS_COORD_PIXEL_CENTER,
-
- /* Use a property enum that VS wouldn't use. */
- TGSI_PROPERTY_VS_BLIT_SGPRS = TGSI_PROPERTY_FS_COORD_ORIGIN,
-
/* These represent the number of SGPRs the shader uses. */
SI_VS_BLIT_SGPRS_POS = 3,
SI_VS_BLIT_SGPRS_POS_COLOR = 7,
struct si_shader *main_shader_part_ls; /* as_ls is set in the key */
struct si_shader *main_shader_part_es; /* as_es is set in the key */
struct si_shader *main_shader_part_ngg; /* as_ngg is set in the key */
+ struct si_shader *main_shader_part_ngg_es; /* for Wave32 TES before legacy GS */
struct si_shader *gs_copy_shader;
bool vs_needs_prolog;
bool force_correct_derivs_after_kill;
bool prim_discard_cs_allowed;
+ bool ngg_writes_edgeflag;
+ bool pos_writes_edgeflag;
unsigned pa_cl_vs_out_cntl;
ubyte clipdist_mask;
ubyte culldist_mask;
struct si_gs_prolog_bits states;
/* Prologs of monolithic shaders shouldn't set EXEC. */
unsigned is_monolithic:1;
+ unsigned as_ngg:1;
} gs_prolog;
struct {
struct si_ps_prolog_bits states;
unsigned vs_export_prim_id:1;
struct {
unsigned interpolate_at_sample_force_center:1;
- unsigned fbfetch_msaa;
- unsigned fbfetch_is_1D;
- unsigned fbfetch_layered;
+ unsigned fbfetch_msaa:1;
+ unsigned fbfetch_is_1D:1;
+ unsigned fbfetch_layered:1;
} ps;
} u;
} mono;
unsigned vgt_gs_onchip_cntl;
unsigned vgt_gs_instance_cnt;
unsigned vgt_esgs_ring_itemsize;
- unsigned vgt_reuse_off;
unsigned spi_vs_out_config;
unsigned spi_shader_idx_format;
unsigned spi_shader_pos_format;
struct tgsi_shader_info *info);
void si_nir_scan_tess_ctrl(const struct nir_shader *nir,
struct tgsi_tessctrl_info *out);
-void si_lower_nir(struct si_shader_selector *sel);
+void si_nir_lower_ps_inputs(struct nir_shader *nir);
+void si_lower_nir(struct si_shader_selector *sel, unsigned wave_size);
void si_nir_opts(struct nir_shader *nir);
/* si_state_shaders.c */
{
if (key->as_ls)
return &sel->main_shader_part_ls;
+ if (key->as_es && key->as_ngg)
+ return &sel->main_shader_part_ngg_es;
if (key->as_es)
return &sel->main_shader_part_es;
if (key->as_ngg)