r600g: implement MSAA for r700
[mesa.git] / src / gallium / drivers / r600 / r600_pipe.h
index aeff52849ce3563ecc83808bc57d24aea4b376b4..074eed432dcf0a704690e11c2071ec43839f728a 100644 (file)
@@ -267,7 +267,8 @@ struct r600_samplerview_state {
        struct r600_pipe_sampler_view   *views[NUM_TEX_UNITS];
        uint32_t                        enabled_mask;
        uint32_t                        dirty_mask;
-       uint32_t                        depth_texture_mask; /* which textures are depth */
+       uint32_t                        compressed_depthtex_mask; /* which textures are depth */
+       uint32_t                        compressed_colortex_mask;
 };
 
 struct r600_textures_info {
@@ -327,12 +328,14 @@ struct r600_context {
        unsigned                        r6xx_num_clause_temp_gprs;
        void                            *custom_dsa_flush;
        void                            *custom_blend_resolve;
+       void                            *custom_blend_decompress;
 
        struct r600_screen              *screen;
        struct radeon_winsys            *ws;
        struct r600_pipe_state          *states[R600_PIPE_NSTATES];
        struct r600_vertex_element      *vertex_elements;
        struct pipe_framebuffer_state   framebuffer;
+       unsigned                        compressed_cb_mask;
        unsigned                        compute_cb_target_mask;
        unsigned                        db_shader_control;
        unsigned                        pa_sc_line_stipple;
@@ -389,6 +392,14 @@ struct r600_context {
        struct r600_cs_shader_state     cs_shader_state;
        struct r600_sample_mask         sample_mask;
 
+       /* current external blend state (from state tracker) */
+       struct r600_pipe_blend          *blend;
+       /* state with disabled blending - used internally with blend_override */
+       struct r600_pipe_blend          *no_blend;
+
+       /* 1 - override current blend state with no_blend, 0 - use external state */
+       unsigned        blend_override;
+
        struct radeon_winsys_cs *cs;
 
        struct r600_range       *range;
@@ -461,6 +472,11 @@ static INLINE void r600_atom_dirty(struct r600_context *rctx, struct r600_atom *
 }
 
 /* evergreen_state.c */
+void evergreen_init_common_regs(struct r600_command_buffer *cb,
+                               enum chip_class ctx_chip_class,
+                               enum radeon_family ctx_family,
+                               int ctx_drm_minor);
+
 void evergreen_init_state_functions(struct r600_context *rctx);
 void evergreen_init_atom_start_cs(struct r600_context *rctx);
 void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader *shader);
@@ -468,6 +484,7 @@ void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader
 void evergreen_fetch_shader(struct pipe_context *ctx, struct r600_vertex_element *ve);
 void *evergreen_create_db_flush_dsa(struct r600_context *rctx);
 void *evergreen_create_resolve_blend(struct r600_context *rctx);
+void *evergreen_create_decompress_blend(struct r600_context *rctx);
 void evergreen_polygon_offset_update(struct r600_context *rctx);
 boolean evergreen_is_format_supported(struct pipe_screen *screen,
                                      enum pipe_format format,
@@ -483,14 +500,16 @@ void r600_copy_buffer(struct pipe_context *ctx, struct
                      pipe_resource *dst, unsigned dstx,
                      struct pipe_resource *src, const struct pipe_box *src_box);
 void r600_init_blit_functions(struct r600_context *rctx);
-void r600_blit_uncompress_depth(struct pipe_context *ctx,
-               struct r600_resource_texture *texture,
-               struct r600_resource_texture *staging,
+void r600_blit_decompress_depth(struct pipe_context *ctx,
+               struct r600_texture *texture,
+               struct r600_texture *staging,
                unsigned first_level, unsigned last_level,
                unsigned first_layer, unsigned last_layer,
                unsigned first_sample, unsigned last_sample);
-void r600_flush_depth_textures(struct r600_context *rctx,
-                              struct r600_samplerview_state *textures);
+void r600_decompress_depth_textures(struct r600_context *rctx,
+                                   struct r600_samplerview_state *textures);
+void r600_decompress_color_textures(struct r600_context *rctx,
+                                   struct r600_samplerview_state *textures);
 
 /* r600_buffer.c */
 bool r600_init_resource(struct r600_screen *rscreen,
@@ -531,6 +550,8 @@ void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader *shad
 void r600_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader *shader);
 void r600_fetch_shader(struct pipe_context *ctx, struct r600_vertex_element *ve);
 void *r600_create_db_flush_dsa(struct r600_context *rctx);
+void *r600_create_resolve_blend(struct r600_context *rctx);
+void *r600_create_decompress_blend(struct r600_context *rctx);
 void r600_polygon_offset_update(struct r600_context *rctx);
 void r600_adjust_gprs(struct r600_context *rctx);
 boolean r600_is_format_supported(struct pipe_screen *screen,
@@ -546,7 +567,7 @@ void r600_init_surface_functions(struct r600_context *r600);
 uint32_t r600_translate_texformat(struct pipe_screen *screen, enum pipe_format format,
                                  const unsigned char *swizzle_view,
                                  uint32_t *word4_p, uint32_t *yuv_format_p);
-unsigned r600_texture_get_offset(struct r600_resource_texture *rtex,
+unsigned r600_texture_get_offset(struct r600_texture *rtex,
                                        unsigned level, unsigned layer);
 
 /* r600_translate.c */
@@ -568,8 +589,9 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
                             const struct pipe_vertex_buffer *input);
 void r600_sampler_views_dirty(struct r600_context *rctx,
                              struct r600_samplerview_state *state);
-void r600_set_sampler_views(struct r600_context *rctx,
-                           struct r600_textures_info *dst,
+void r600_set_sampler_views(struct pipe_context *pipe,
+                            unsigned shader,
+                            unsigned start,
                            unsigned count,
                            struct pipe_sampler_view **views);
 void r600_bind_vs_samplers(struct pipe_context *ctx, unsigned count, void **states);