r600g,radeonsi: don't skip the context flush if a fence should be returned
[mesa.git] / src / gallium / drivers / radeonsi / si_pipe.h
index 3681cdf6592b2bcbfa3341dadaad965202463ab0..a74bbcf5c6185526ffbf91c06001057ce84a8b2b 100644 (file)
@@ -71,7 +71,9 @@ struct si_textures_info {
 };
 
 struct si_framebuffer {
+       struct r600_atom                atom;
        struct pipe_framebuffer_state   state;
+       unsigned                        nr_samples;
        unsigned                        log_samples;
        unsigned                        cb0_is_integer;
        unsigned                        compressed_cb_mask;
@@ -93,6 +95,7 @@ struct si_context {
        void                            *custom_dsa_flush_inplace;
        void                            *custom_blend_resolve;
        void                            *custom_blend_decompress;
+       void                            *custom_blend_fastclear;
        struct si_screen                *screen;
 
        union {
@@ -105,6 +108,8 @@ struct si_context {
                         * updated in memory. */
                        struct r600_atom *cache_flush;
                        struct r600_atom *streamout_begin;
+                       struct r600_atom *streamout_enable; /* must be after streamout_begin */
+                       struct r600_atom *framebuffer;
                };
                struct r600_atom *array[0];
        } atoms;
@@ -162,15 +167,21 @@ void si_flush_depth_textures(struct si_context *sctx,
 void si_decompress_color_textures(struct si_context *sctx,
                                  struct si_textures_info *textures);
 
+/* si_dma.c */
+void si_dma_copy(struct pipe_context *ctx,
+                struct pipe_resource *dst,
+                unsigned dst_level,
+                unsigned dstx, unsigned dsty, unsigned dstz,
+                struct pipe_resource *src,
+                unsigned src_level,
+                const struct pipe_box *src_box);
+
 /* si_hw_context.c */
-void si_context_flush(struct si_context *ctx, unsigned flags);
+void si_context_gfx_flush(void *context, unsigned flags,
+                         struct pipe_fence_handle **fence);
 void si_begin_new_cs(struct si_context *ctx);
 void si_need_cs_space(struct si_context *ctx, unsigned num_dw, boolean count_draw_in);
 
-/* si_pipe.c */
-void si_flush(struct pipe_context *ctx, struct pipe_fence_handle **fence,
-              unsigned flags);
-
 #if SI_TRACE_CS
 void si_trace_emit(struct si_context *sctx);
 #endif