struct r600_shader_io {
unsigned name;
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;
+ unsigned nlds;
struct r600_shader_io input[32];
struct r600_shader_io output[32];
- enum radeon_family family;
+ 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;
+};
+
+struct r600_shader_key {
+ unsigned color_two_side:1;
+ unsigned alpha_to_one:1;
+ unsigned nr_cbufs:4;
+};
+
+struct r600_pipe_shader {
+ struct r600_pipe_shader_selector *selector;
+ struct r600_pipe_shader *next_variant;
+ struct r600_shader shader;
+ struct r600_pipe_state rstate;
+ 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