diff options
author | Eric Anholt <eric@anholt.net> | 2011-04-22 13:25:24 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2011-04-29 15:25:45 -0700 |
commit | 8d2047ca7e8a533e1853a2ba51cd1bd6e52ae4a3 (patch) | |
tree | 65624afbadf8fb95f8edfd37b8f3a13adf6ab63b /src/mesa/drivers/dri/i965/gen6_viewport_state.c | |
parent | 3628e123f13a480abfad8e8af9f875e3d8eeb5a6 (diff) | |
download | external_mesa3d-8d2047ca7e8a533e1853a2ba51cd1bd6e52ae4a3.zip external_mesa3d-8d2047ca7e8a533e1853a2ba51cd1bd6e52ae4a3.tar.gz external_mesa3d-8d2047ca7e8a533e1853a2ba51cd1bd6e52ae4a3.tar.bz2 |
i965/gen6: Move the SF VP to state streaming.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen6_viewport_state.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_viewport_state.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_viewport_state.c b/src/mesa/drivers/dri/i965/gen6_viewport_state.c index 6512123..32fdd95 100644 --- a/src/mesa/drivers/dri/i965/gen6_viewport_state.c +++ b/src/mesa/drivers/dri/i965/gen6_viewport_state.c @@ -67,12 +67,13 @@ prepare_sf_vp(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; - struct brw_sf_viewport sfv; + struct brw_sf_viewport *sfv; GLfloat y_scale, y_bias; const GLboolean render_to_fbo = (ctx->DrawBuffer->Name != 0); const GLfloat *v = ctx->Viewport._WindowMap.m; - memset(&sfv, 0, sizeof(sfv)); + sfv = brw_state_batch(brw, sizeof(*sfv), 32, &brw->sf.vp_offset); + memset(sfv, 0, sizeof(*sfv)); /* _NEW_BUFFERS */ if (render_to_fbo) { @@ -84,22 +85,20 @@ prepare_sf_vp(struct brw_context *brw) } /* _NEW_VIEWPORT */ - sfv.viewport.m00 = v[MAT_SX]; - sfv.viewport.m11 = v[MAT_SY] * y_scale; - sfv.viewport.m22 = v[MAT_SZ] * depth_scale; - sfv.viewport.m30 = v[MAT_TX]; - sfv.viewport.m31 = v[MAT_TY] * y_scale + y_bias; - sfv.viewport.m32 = v[MAT_TZ] * depth_scale; - - drm_intel_bo_unreference(brw->sf.vp_bo); - brw->sf.vp_bo = brw_cache_data(&brw->cache, BRW_SF_VP, - &sfv, sizeof(sfv)); + sfv->viewport.m00 = v[MAT_SX]; + sfv->viewport.m11 = v[MAT_SY] * y_scale; + sfv->viewport.m22 = v[MAT_SZ] * depth_scale; + sfv->viewport.m30 = v[MAT_TX]; + sfv->viewport.m31 = v[MAT_TY] * y_scale + y_bias; + sfv->viewport.m32 = v[MAT_TZ] * depth_scale; + + brw->state.dirty.cache |= CACHE_NEW_SF_VP; } const struct brw_tracked_state gen6_sf_vp = { .dirty = { .mesa = _NEW_VIEWPORT | _NEW_BUFFERS, - .brw = 0, + .brw = BRW_NEW_BATCH, .cache = 0, }, .prepare = prepare_sf_vp, @@ -107,7 +106,6 @@ const struct brw_tracked_state gen6_sf_vp = { static void prepare_viewport_state_pointers(struct brw_context *brw) { - brw_add_validated_bo(brw, brw->sf.vp_bo); brw_add_validated_bo(brw, brw->cc.vp_bo); } @@ -122,7 +120,8 @@ static void upload_viewport_state_pointers(struct brw_context *brw) GEN6_CLIP_VIEWPORT_MODIFY); OUT_RELOC(intel->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, brw->clip.vp_offset); - OUT_RELOC(brw->sf.vp_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + OUT_RELOC(intel->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + brw->sf.vp_offset); OUT_RELOC(brw->cc.vp_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); ADVANCE_BATCH(); } |