i965: Disable unused pipeline stages once at startup on Gen7+.
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 8 Jun 2013 16:57:54 +0000 (09:57 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 10 Jun 2013 17:58:46 +0000 (10:58 -0700)
This removes a tiny bit of code from our drawing loop.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_state.h
src/mesa/drivers/dri/i965/brw_state_upload.c
src/mesa/drivers/dri/i965/gen7_disable.c

index 7215128c49a709f59cc4bddd2ad1df30bc52f3b3..62d5efca126d202ae4ffa652a35690c72a00c1fb 100644 (file)
@@ -111,7 +111,6 @@ extern const struct brw_tracked_state gen7_cc_state_pointer;
 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_depth_stencil_state_pointer;
-extern const struct brw_tracked_state gen7_disable_stages;
 extern const struct brw_tracked_state gen7_ps_state;
 extern const struct brw_tracked_state gen7_push_constant_alloc;
 extern const struct brw_tracked_state gen7_samplers;
@@ -215,6 +214,9 @@ uint32_t
 get_attr_override(const struct brw_vue_map *vue_map, int urb_entry_read_offset,
                   int fs_attr, bool two_side_color, uint32_t *max_source_attr);
 
+/* gen7_disable.c */
+void gen7_disable_unused_stages(struct brw_context *brw);
+
 #ifdef __cplusplus
 }
 #endif
index 6a69a677dde9dbccfad95fb9c1bf6ce33f518ab0..fa9b5af2e6ba4d63f1719002e585d5092c722a50 100644 (file)
@@ -211,7 +211,6 @@ static const struct brw_tracked_state *gen7_atoms[] =
    &gen7_samplers,
    &gen6_multisample_state,
 
-   &gen7_disable_stages,
    &gen7_vs_state,
    &gen7_sol_state,
    &gen7_clip_state,
@@ -252,6 +251,10 @@ brw_upload_initial_gpu_state(struct brw_context *brw)
       return;
 
    brw_upload_invariant_state(brw);
+
+   if (intel->gen >= 7) {
+      gen7_disable_unused_stages(brw);
+   }
 }
 
 void brw_init_state( struct brw_context *brw )
index aaf88a8bba88eed4b47c803cc8f148036827fd03..c152d0accaa44c4324b31c37e6b5efd0a04e9992 100644 (file)
@@ -26,8 +26,8 @@
 #include "brw_defines.h"
 #include "intel_batchbuffer.h"
 
-static void
-disable_stages(struct brw_context *brw)
+void
+gen7_disable_unused_stages(struct brw_context *brw)
 {
    struct intel_context *intel = &brw->intel;
 
@@ -123,12 +123,3 @@ disable_stages(struct brw_context *brw)
    OUT_BATCH(0);
    ADVANCE_BATCH();
 }
-
-const struct brw_tracked_state gen7_disable_stages = {
-   .dirty = {
-      .mesa  = 0,
-      .brw   = BRW_NEW_CONTEXT,
-      .cache = 0,
-   },
-   .emit = disable_stages,
-};