X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Fbrw_state_upload.c;h=6a69a677dde9dbccfad95fb9c1bf6ce33f518ab0;hb=d671eb140f05d4974cebf6e6643282a8a7ce45db;hp=07c49ff1c219fb8830e2e9e684876596a907f6ae;hpb=33b90804eee3619c1174183be7a87e8c6e742076;p=android-x86%2Fexternal-mesa.git diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 07c49ff1c21..6a69a677dde 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -111,7 +111,6 @@ static const struct brw_tracked_state *gen6_atoms[] = &gen6_sf_vp, /* Command packets: */ - &brw_invariant_state, /* must do before binding table pointers, cc state ptrs */ &brw_state_base_address, @@ -177,7 +176,6 @@ static const struct brw_tracked_state *gen7_atoms[] = &brw_wm_prog, /* Command packets: */ - &brw_invariant_state, &gen7_push_constant_alloc, /* must do before binding table pointers, cc state ptrs */ @@ -241,6 +239,20 @@ static const struct brw_tracked_state *gen7_atoms[] = &haswell_cut_index, }; +static void +brw_upload_initial_gpu_state(struct brw_context *brw) +{ + struct intel_context *intel = &brw->intel; + + /* On platforms with hardware contexts, we can set our initial GPU state + * right away rather than doing it via state atoms. This saves a small + * amount of overhead on every draw call. + */ + if (!intel->hw_ctx) + return; + + brw_upload_invariant_state(brw); +} void brw_init_state( struct brw_context *brw ) { @@ -270,6 +282,8 @@ void brw_init_state( struct brw_context *brw ) assert((*atoms)->emit); atoms++; } + + brw_upload_initial_gpu_state(brw); }