r600g: move CB_SHADER_MASK setup into cb_misc_state
[profile/ivi/mesa.git] / src / gallium / drivers / r600 / r600_pipe.h
index 63eeab3..608cb10 100644 (file)
@@ -82,6 +82,16 @@ struct r600_db_misc_state {
        bool flush_depthstencil_enabled;
 };
 
+struct r600_cb_misc_state {
+       struct r600_atom atom;
+       unsigned cb_color_control; /* this comes from blend state */
+       unsigned blend_colormask; /* 8*4 bits for 8 RGBA colorbuffers */
+       unsigned nr_cbufs;
+       unsigned nr_ps_color_outputs;
+       bool multiwrite;
+       bool dual_src_blend;
+};
+
 enum r600_pipe_state_id {
        R600_PIPE_STATE_BLEND = 0,
        R600_PIPE_STATE_BLEND_COLOR,
@@ -109,7 +119,6 @@ enum r600_pipe_state_id {
 struct compute_memory_pool;
 void compute_memory_pool_delete(struct compute_memory_pool* pool);
 struct compute_memory_pool* compute_memory_pool_new(
-       int64_t initial_size_in_dw,
        struct r600_screen *rscreen);
 
 struct r600_pipe_fences {
@@ -213,7 +222,7 @@ struct r600_pipe_shader {
        unsigned        sprite_coord_enable;
        unsigned        flatshade;
        unsigned        pa_cl_vs_out_cntl;
-       unsigned        ps_cb_shader_mask;
+       unsigned        nr_ps_color_outputs;
        unsigned        key;
        unsigned                db_shader_control;
        unsigned                ps_depth_export;
@@ -281,12 +290,9 @@ struct r600_context {
        struct r600_pipe_state          *states[R600_PIPE_NSTATES];
        struct r600_vertex_element      *vertex_elements;
        struct pipe_framebuffer_state   framebuffer;
-       unsigned                        cb_target_mask;
-       unsigned                        fb_cb_shader_mask;
+       unsigned                        compute_cb_target_mask;
        unsigned                        sx_alpha_test_control;
-       unsigned                        cb_shader_mask;
        unsigned                        db_shader_control;
-       unsigned                        cb_color_control;
        unsigned                        pa_sc_line_stipple;
        unsigned                        pa_cl_clip_cntl;
        /* for saving when using blitter */
@@ -329,6 +335,7 @@ struct r600_context {
         struct r600_command_buffer      start_compute_cs_cmd;
        struct r600_surface_sync_cmd    surface_sync_cmd;
        struct r600_atom                r6xx_flush_and_inv_cmd;
+       struct r600_cb_misc_state       cb_misc_state;
        struct r600_db_misc_state       db_misc_state;
        struct r600_atom                vertex_buffer_state;
        struct r600_constbuf_state      vs_constbuf_state;
@@ -425,12 +432,17 @@ boolean evergreen_is_format_supported(struct pipe_screen *screen,
                                      enum pipe_texture_target target,
                                      unsigned sample_count,
                                      unsigned usage);
+void evergreen_cb(struct r600_context *rctx, struct r600_pipe_state *rstate,
+                         const struct pipe_framebuffer_state *state, int cb);
+
 
 void evergreen_update_dual_export_state(struct r600_context * rctx);
 
 /* r600_blit.c */
 void r600_init_blit_functions(struct r600_context *rctx);
-void r600_blit_uncompress_depth(struct pipe_context *ctx, struct r600_resource_texture *texture);
+void r600_blit_uncompress_depth(struct pipe_context *ctx,
+               struct r600_resource_texture *texture,
+               struct r600_resource_texture *staging);
 void r600_flush_depth_textures(struct r600_context *rctx);
 
 /* r600_buffer.c */