radeonsi: allow generating VS prologs with 0 inputs
[mesa.git] / src / gallium / drivers / radeonsi / si_shader.h
index 8b5c70068e41e9d4ec88b0d0b2c94424c41386d7..52cc61d7978081d70898d20913793b379e315ab0 100644 (file)
 #include "tgsi/tgsi_scan.h"
 #include "util/u_inlines.h"
 #include "util/u_queue.h"
+#include "util/simple_mtx.h"
 
 #include "ac_binary.h"
 #include "ac_llvm_build.h"
@@ -310,7 +311,7 @@ struct si_shader_selector {
        struct util_queue_fence ready;
        struct si_compiler_ctx_state compiler_ctx_state;
 
-       mtx_t           mutex;
+       simple_mtx_t            mutex;
        struct si_shader        *first_variant; /* immutable after the first variant */
        struct si_shader        *last_variant; /* mutable */
 
@@ -327,6 +328,9 @@ struct si_shader_selector {
 
        struct tgsi_token       *tokens;
        struct nir_shader       *nir;
+       void                    *nir_binary;
+       unsigned                nir_size;
+
        struct pipe_stream_output_info  so;
        struct tgsi_shader_info         info;
        struct tgsi_tessctrl_info       tcs_info;
@@ -459,7 +463,7 @@ union si_shader_part_key {
                unsigned        num_input_sgprs:6;
                /* For merged stages such as LS-HS, HS input VGPRs are first. */
                unsigned        num_merged_next_stage_vgprs:3;
-               unsigned        last_input:4;
+               unsigned        num_inputs:5;
                unsigned        as_ls:1;
                unsigned        as_es:1;
                unsigned        as_ngg:1;
@@ -755,9 +759,8 @@ void si_nir_scan_shader(const struct nir_shader *nir,
                        struct tgsi_shader_info *info);
 void si_nir_scan_tess_ctrl(const struct nir_shader *nir,
                           struct tgsi_tessctrl_info *out);
-void si_nir_lower_ps_inputs(struct nir_shader *nir);
-void si_lower_nir(struct si_shader_selector *sel);
-void si_nir_opts(struct nir_shader *nir);
+void si_nir_adjust_driver_locations(struct nir_shader *nir);
+void si_finalize_nir(struct pipe_screen *screen, void *nirptr, bool optimize);
 
 /* si_state_shaders.c */
 void gfx9_get_gs_info(struct si_shader_selector *es,