radeonsi: correct sampler function names
[mesa.git] / src / gallium / drivers / r600 / r600_shader.h
index 7c722c07cbe365d96c03fd4f0dee9a027092d0d9..d989ce436497e64311310b8ed9eaee3a495019fa 100644 (file)
@@ -30,19 +30,71 @@ struct r600_shader_io {
        unsigned                gpr;
        unsigned                done;
        int                     sid;
+       int                     spi_sid;
        unsigned                interpolate;
+       unsigned                ij_index;
+       boolean                 centroid;
+       unsigned                lds_pos; /* for evergreen */
+       unsigned                back_color_input;
+       unsigned                write_mask;
 };
 
 struct r600_shader {
        unsigned                processor_type;
-       struct r600_bc          bc;
-       boolean                 flat_shade;
+       struct r600_bytecode            bc;
        unsigned                ninput;
        unsigned                noutput;
-       struct r600_shader_io   input[32];
-       struct r600_shader_io   output[32];
-       enum radeon_family      family;
-       boolean                 uses_kill;
+       unsigned                nlds;
+       struct r600_shader_io   input[40];
+       struct r600_shader_io   output[40];
+       boolean                 uses_kill;
+       boolean                 fs_write_all;
+       boolean                 two_side;
+       /* Number of color outputs in the TGSI shader,
+        * sometimes it could be higher than nr_cbufs (bug?).
+        * Also with writes_all property on eg+ it will be set to max CB number */
+       unsigned                nr_ps_max_color_exports;
+       /* Real number of ps color exports compiled in the bytecode */
+       unsigned                nr_ps_color_exports;
+       /* bit n is set if the shader writes gl_ClipDistance[n] */
+       unsigned                clip_dist_write;
+       /* flag is set if the shader writes VS_OUT_MISC_VEC (e.g. for PSIZE) */
+       boolean                 vs_out_misc_write;
+       boolean                 vs_out_point_size;
+       boolean                 has_txq_cube_array_z_comp;
+       boolean                 uses_tex_buffers;
+
+       unsigned                indirect_files;
+       unsigned                max_arrays;
+       unsigned                num_arrays;
+       struct r600_shader_array * arrays;
+};
+
+struct r600_shader_key {
+       unsigned color_two_side:1;
+       unsigned alpha_to_one:1;
+       unsigned nr_cbufs:4;
+};
+
+struct r600_shader_array {
+       unsigned gpr_start;
+       unsigned gpr_count;
+       unsigned comp_mask;
+};
+
+struct r600_pipe_shader {
+       struct r600_pipe_shader_selector *selector;
+       struct r600_pipe_shader *next_variant;
+       struct r600_shader      shader;
+       struct r600_command_buffer command_buffer; /* register writes */
+       struct r600_resource    *bo;
+       unsigned                sprite_coord_enable;
+       unsigned                flatshade;
+       unsigned                pa_cl_vs_out_cntl;
+       unsigned                nr_ps_color_outputs;
+       struct r600_shader_key  key;
+       unsigned                db_shader_control;
+       unsigned                ps_depth_export;
 };
 
 #endif