+ } while(0)
+
+/* si_descriptors.c */
+void si_set_sampler_view(struct si_context *sctx, unsigned shader,
+ unsigned slot, struct pipe_sampler_view *view,
+ unsigned *view_desc);
+void si_set_ring_buffer(struct pipe_context *ctx, uint shader, uint slot,
+ struct pipe_constant_buffer *input,
+ unsigned stride, unsigned num_records,
+ bool add_tid, bool swizzle,
+ unsigned element_size, unsigned index_stride);
+void si_init_all_descriptors(struct si_context *sctx);
+void si_release_all_descriptors(struct si_context *sctx);
+void si_all_descriptors_begin_new_cs(struct si_context *sctx);
+void si_copy_buffer(struct si_context *sctx,
+ struct pipe_resource *dst, struct pipe_resource *src,
+ uint64_t dst_offset, uint64_t src_offset, unsigned size);
+void si_upload_const_buffer(struct si_context *sctx, struct r600_resource **rbuffer,
+ const uint8_t *ptr, unsigned size, uint32_t *const_offset);
+
+/* si_state.c */
+struct si_pipe_shader_selector;
+
+boolean si_is_format_supported(struct pipe_screen *screen,
+ enum pipe_format format,
+ enum pipe_texture_target target,
+ unsigned sample_count,
+ unsigned usage);
+int si_shader_select(struct pipe_context *ctx,
+ struct si_pipe_shader_selector *sel);
+void si_init_state_functions(struct si_context *sctx);
+void si_init_config(struct si_context *sctx);
+
+/* si_state_draw.c */
+extern const struct r600_atom si_atom_cache_flush;
+void si_emit_cache_flush(struct r600_common_context *sctx, struct r600_atom *atom);
+void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *dinfo);
+
+/* si_commands.c */
+void si_cmd_context_control(struct si_pm4_state *pm4);
+void si_cmd_draw_index_2(struct si_pm4_state *pm4, uint32_t max_size,
+ uint64_t index_base, uint32_t index_count,
+ uint32_t initiator, bool predicate);
+void si_cmd_draw_index_auto(struct si_pm4_state *pm4, uint32_t count,
+ uint32_t initiator, bool predicate);
+void si_cmd_surface_sync(struct si_pm4_state *pm4, uint32_t cp_coher_cntl);