radeonsi: move shaders to new handling
[mesa.git] / src / gallium / drivers / radeonsi / si_state.h
index d8f03392a4cda27f5eb8527810b59a89574f3309..cd2b9626a92bbcea3abd68149f808b27ce04fc67 100644 (file)
@@ -61,6 +61,46 @@ struct si_state_dsa {
        uint8_t                 writemask[2];
 };
 
+struct si_vertex_element
+{
+        unsigned                        count;
+        struct pipe_vertex_element      elements[PIPE_MAX_ATTRIBS];
+};
+
+struct si_shader_io {
+       unsigned                name;
+       unsigned                gpr;
+       unsigned                done;
+       int                     sid;
+       unsigned                param_offset;
+       unsigned                interpolate;
+       bool                    centroid;
+};
+
+struct si_shader {
+       unsigned                ninput;
+       unsigned                noutput;
+       struct si_shader_io     input[32];
+       struct si_shader_io     output[32];
+       bool                    uses_kill;
+       bool                    fs_write_all;
+       unsigned                nr_cbufs;
+};
+
+struct si_pipe_shader {
+       struct si_shader                shader;
+       struct si_pm4_state             *pm4;
+       struct r600_resource            *bo;
+       struct si_vertex_element        vertex_elements;
+       struct tgsi_token               *tokens;
+       unsigned                        num_sgprs;
+       unsigned                        num_vgprs;
+       unsigned                        spi_ps_input_ena;
+       unsigned                        sprite_coord_enable;
+       struct pipe_stream_output_info  so;
+       unsigned                        so_strides[4];
+};
+
 union si_state {
        struct {
                struct si_pm4_state             *init;
@@ -75,6 +115,8 @@ union si_state {
                struct si_pm4_state             *fb_rs;
                struct si_pm4_state             *fb_blend;
                struct si_pm4_state             *dsa_stencil_ref;
+               struct si_pm4_state             *vs;
+                struct si_pm4_state            *ps;
                struct si_pm4_state             *spi;
                struct si_pm4_state             *draw_info;
        } named;