i965: Perform program state upload outside of atom handling
[mesa.git] / src / mesa / drivers / dri / i965 / brw_state.h
index 77de78518416eb070851fb03a224c4f9f1638f72..71210b9410c01e8d9a52d89653505f276a7cb3b5 100644 (file)
@@ -101,6 +101,7 @@ extern const struct brw_tracked_state gen6_clip_vp;
 extern const struct brw_tracked_state gen6_color_calc_state;
 extern const struct brw_tracked_state gen6_depth_stencil_state;
 extern const struct brw_tracked_state gen6_gs_state;
+extern const struct brw_tracked_state gen6_gs_push_constants;
 extern const struct brw_tracked_state gen6_gs_binding_table;
 extern const struct brw_tracked_state gen6_multisample_state;
 extern const struct brw_tracked_state gen6_renderbuffer_surfaces;
@@ -116,7 +117,6 @@ extern const struct brw_tracked_state gen6_vs_state;
 extern const struct brw_tracked_state gen6_wm_push_constants;
 extern const struct brw_tracked_state gen6_wm_state;
 extern const struct brw_tracked_state gen7_depthbuffer;
-extern const struct brw_tracked_state gen7_cc_viewport_state_pointer;
 extern const struct brw_tracked_state gen7_clip_state;
 extern const struct brw_tracked_state gen7_disable_stages;
 extern const struct brw_tracked_state gen7_gs_push_constants;
@@ -136,6 +136,7 @@ extern const struct brw_tracked_state gen8_disable_stages;
 extern const struct brw_tracked_state gen8_gs_state;
 extern const struct brw_tracked_state gen8_index_buffer;
 extern const struct brw_tracked_state gen8_multisample_state;
+extern const struct brw_tracked_state gen8_pma_fix;
 extern const struct brw_tracked_state gen8_ps_blend;
 extern const struct brw_tracked_state gen8_ps_extra;
 extern const struct brw_tracked_state gen8_ps_state;
@@ -151,6 +152,13 @@ extern const struct brw_tracked_state gen8_vertices;
 extern const struct brw_tracked_state gen8_vf_topology;
 extern const struct brw_tracked_state gen8_vs_state;
 
+static inline bool
+brw_state_dirty(struct brw_context *brw, GLuint mesa_flags, uint64_t brw_flags)
+{
+   return ((brw->state.dirty.mesa & mesa_flags) |
+           (brw->state.dirty.brw & brw_flags)) != 0;
+}
+
 /* brw_misc_state.c */
 void brw_upload_invariant_state(struct brw_context *brw);
 uint32_t
@@ -224,7 +232,6 @@ int brw_get_texture_swizzle(const struct gl_context *ctx,
                             const struct gl_texture_object *t);
 
 /* gen7_wm_surface_state.c */
-unsigned brw_swizzle_to_scs(GLenum swizzle, bool need_green_to_blue);
 uint32_t gen7_surface_tiling_mode(uint32_t tiling);
 uint32_t gen7_surface_msaa_bits(unsigned num_samples, enum intel_msaa_layout l);
 void gen7_set_surface_mcs_info(struct brw_context *brw,
@@ -243,16 +250,24 @@ void gen7_upload_3dstate_so_decl_list(struct brw_context *brw,
 void gen8_init_vtable_surface_functions(struct brw_context *brw);
 
 /* brw_sampler_state.c */
-uint32_t translate_wrap_mode(struct brw_context *brw,
-                             GLenum wrap, bool using_nearest);
-void upload_default_color(struct brw_context *brw,
-                         struct gl_sampler_object *sampler,
-                         int unit,
-                          uint32_t *sdc_offset);
-void gen4_init_vtable_sampler_functions(struct brw_context *brw);
-
-/* gen7_sampler_state.c */
-void gen7_init_vtable_sampler_functions(struct brw_context *brw);
+void brw_emit_sampler_state(struct brw_context *brw,
+                            uint32_t *sampler_state,
+                            uint32_t batch_offset_for_sampler_state,
+                            unsigned min_filter,
+                            unsigned mag_filter,
+                            unsigned mip_filter,
+                            unsigned max_anisotropy,
+                            unsigned address_rounding,
+                            unsigned wrap_s,
+                            unsigned wrap_t,
+                            unsigned wrap_r,
+                            unsigned min_lod,
+                            unsigned max_lod,
+                            int lod_bias,
+                            unsigned base_level,
+                            unsigned shadow_function,
+                            bool non_normalized_coordinates,
+                            uint32_t border_color_offset);
 
 /* gen6_sf_state.c */
 void
@@ -262,6 +277,9 @@ calculate_attr_overrides(const struct brw_context *brw,
                          uint32_t *flat_enables,
                          uint32_t *urb_entry_read_length);
 
+/* gen6_surface_state.c */
+void gen6_init_vtable_surface_functions(struct brw_context *brw);
+
 /* brw_vs_surface_state.c */
 void
 brw_upload_pull_constants(struct brw_context *brw,