freedreno/a3xx: only emit dirty consts
[mesa.git] / src / gallium / drivers / radeonsi / si_state.h
index 82bea790cff2f17a3c26881f756cf564b939a1be..f70bddfb8ec141d1fb84d9679dae7cd4992a8a9e 100644 (file)
@@ -28,7 +28,7 @@
 #define SI_STATE_H
 
 #include "si_pm4.h"
-#include "../radeon/r600_pipe_common.h"
+#include "radeon/r600_pipe_common.h"
 
 struct si_screen;
 
@@ -38,6 +38,16 @@ struct si_state_blend {
        bool                    alpha_to_one;
 };
 
+struct si_state_sample_mask {
+       struct si_pm4_state     pm4;
+       uint16_t                sample_mask;
+};
+
+struct si_state_scissor {
+       struct si_pm4_state             pm4;
+       struct pipe_scissor_state       scissor;
+};
+
 struct si_state_viewport {
        struct si_pm4_state             pm4;
        struct pipe_viewport_state      viewport;
@@ -82,8 +92,8 @@ union si_state {
                struct si_state_blend           *blend;
                struct si_pm4_state             *blend_color;
                struct si_pm4_state             *clip;
-               struct si_pm4_state             *sample_mask;
-               struct si_pm4_state             *scissor;
+               struct si_state_sample_mask     *sample_mask;
+               struct si_state_scissor         *scissor;
                struct si_state_viewport        *viewport;
                struct si_state_rasterizer      *rasterizer;
                struct si_state_dsa             *dsa;
@@ -224,7 +234,7 @@ void si_set_sampler_descriptors(struct si_context *sctx, unsigned shader,
                                unsigned start, unsigned count, void **states);
 void si_update_vertex_buffers(struct si_context *sctx);
 void si_set_ring_buffer(struct pipe_context *ctx, uint shader, uint slot,
-                       struct pipe_constant_buffer *input,
+                       struct pipe_resource *buffer,
                        unsigned stride, unsigned num_records,
                        bool add_tid, bool swizzle,
                        unsigned element_size, unsigned index_stride);
@@ -238,7 +248,7 @@ void si_upload_const_buffer(struct si_context *sctx, struct r600_resource **rbuf
                            const uint8_t *ptr, unsigned size, uint32_t *const_offset);
 
 /* si_state.c */
-struct si_pipe_shader_selector;
+struct si_shader_selector;
 
 boolean si_is_format_supported(struct pipe_screen *screen,
                                enum pipe_format format,
@@ -246,15 +256,15 @@ boolean si_is_format_supported(struct pipe_screen *screen,
                                unsigned sample_count,
                                unsigned usage);
 int si_shader_select(struct pipe_context *ctx,
-                    struct si_pipe_shader_selector *sel);
+                    struct si_shader_selector *sel);
+void si_make_dummy_ps(struct si_context *sctx);
 void si_init_state_functions(struct si_context *sctx);
 void si_init_config(struct si_context *sctx);
 unsigned cik_bank_wh(unsigned bankwh);
 unsigned cik_db_pipe_config(struct si_screen *sscreen, unsigned tile_mode);
 unsigned cik_macro_tile_aspect(unsigned macro_tile_aspect);
 unsigned cik_tile_split(unsigned tile_split);
-uint32_t si_num_banks(struct si_screen *sscreen, unsigned bpe, unsigned tile_split,
-                     unsigned tile_mode_index);
+uint32_t si_num_banks(struct si_screen *sscreen, struct r600_texture *tex);
 unsigned si_tile_mode_index(struct r600_texture *rtex, unsigned level, bool stencil);
 
 /* si_state_draw.c */
@@ -277,6 +287,5 @@ void si_cmd_draw_index_indirect(struct si_pm4_state *pm4, uint64_t indirect_va,
                                uint64_t index_va, uint32_t index_max_size,
                                uint32_t indirect_offset, uint32_t base_vtx_loc,
                                uint32_t start_inst_loc, bool predicate);
-void si_cmd_surface_sync(struct si_pm4_state *pm4, uint32_t cp_coher_cntl);
 
 #endif