diff options
author | Eric Anholt <eric@anholt.net> | 2014-05-01 09:59:22 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2014-05-02 17:01:40 -0700 |
commit | 20404e45c7c2d815ade67f78e1d76104c9349797 (patch) | |
tree | 73094fb78eac976dffa921c8db483dd1fa8f014f /src/mesa/drivers/dri/i965/gen7_gs_state.c | |
parent | 113037148d19be4598301e48505d22dda1f7596f (diff) | |
download | external_mesa3d-20404e45c7c2d815ade67f78e1d76104c9349797.zip external_mesa3d-20404e45c7c2d815ade67f78e1d76104c9349797.tar.gz external_mesa3d-20404e45c7c2d815ade67f78e1d76104c9349797.tar.bz2 |
i965: Move push constant state packets to push constant update time.
-0.553779% +/- 0.423394% effect on cairo-perf-trace runtime on glamor
(n=612)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen7_gs_state.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_gs_state.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/mesa/drivers/dri/i965/gen7_gs_state.c b/src/mesa/drivers/dri/i965/gen7_gs_state.c index 599997d..30dfa6b 100644 --- a/src/mesa/drivers/dri/i965/gen7_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen7_gs_state.c @@ -30,25 +30,29 @@ static void gen7_upload_gs_push_constants(struct brw_context *brw) { + const struct brw_stage_state *stage_state = &brw->gs.base; /* BRW_NEW_GEOMETRY_PROGRAM */ - const struct brw_geometry_program *vp = + const struct brw_geometry_program *gp = (struct brw_geometry_program *) brw->geometry_program; - if (!vp) - return; - /* CACHE_NEW_GS_PROG */ - const struct brw_vec4_prog_data *prog_data = &brw->gs.prog_data->base; - struct brw_stage_state *stage_state = &brw->gs.base; + if (gp) { + /* CACHE_NEW_GS_PROG */ + const struct brw_vec4_prog_data *prog_data = &brw->gs.prog_data->base; + struct brw_stage_state *stage_state = &brw->gs.base; + + gen6_upload_vec4_push_constants(brw, &gp->program.Base, prog_data, + stage_state, AUB_TRACE_VS_CONSTANTS); + } - gen6_upload_vec4_push_constants(brw, &vp->program.Base, prog_data, - stage_state, AUB_TRACE_VS_CONSTANTS); + gen7_upload_constant_state(brw, stage_state, gp, _3DSTATE_CONSTANT_GS); } const struct brw_tracked_state gen7_gs_push_constants = { .dirty = { .mesa = _NEW_TRANSFORM | _NEW_PROGRAM_CONSTANTS, .brw = (BRW_NEW_BATCH | - BRW_NEW_GEOMETRY_PROGRAM), + BRW_NEW_GEOMETRY_PROGRAM | + BRW_NEW_PUSH_CONSTANT_ALLOCATION), .cache = CACHE_NEW_GS_PROG, }, .emit = gen7_upload_gs_push_constants, @@ -66,8 +70,6 @@ upload_gs_state(struct brw_context *brw) /* CACHE_NEW_GS_PROG */ const struct brw_vec4_prog_data *prog_data = &brw->gs.prog_data->base; - gen7_upload_constant_state(brw, stage_state, active, _3DSTATE_CONSTANT_GS); - /** * From Graphics BSpec: 3D-Media-GPGPU Engine > 3D Pipeline Stages > * Geometry > Geometry Shader > State: @@ -186,11 +188,10 @@ upload_gs_state(struct brw_context *brw) const struct brw_tracked_state gen7_gs_state = { .dirty = { - .mesa = _NEW_TRANSFORM | _NEW_PROGRAM_CONSTANTS, + .mesa = _NEW_TRANSFORM, .brw = (BRW_NEW_CONTEXT | BRW_NEW_GEOMETRY_PROGRAM | - BRW_NEW_BATCH | - BRW_NEW_PUSH_CONSTANT_ALLOCATION), + BRW_NEW_BATCH), .cache = CACHE_NEW_GS_PROG }, .emit = upload_gs_state, |