diff options
author | Eric Anholt <eric@anholt.net> | 2007-12-17 13:47:52 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2007-12-17 13:47:52 -0800 |
commit | 98d43552408045e34ba937913cfbad7aadee8213 (patch) | |
tree | 05cb13d94ae5a9afcfcf4cdb3bca591f92a3a08f /src/mesa/drivers/dri | |
parent | c1d6b874b35dd353b2f9862b47aadb52a812a4aa (diff) |
[965] Fix software fallbacks with region-backed textures.
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_span.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_span.c b/src/mesa/drivers/dri/i965/intel_span.c index 60fbeccdc5..fdb594b8f0 100644 --- a/src/mesa/drivers/dri/i965/intel_span.c +++ b/src/mesa/drivers/dri/i965/intel_span.c @@ -207,6 +207,7 @@ do { \ void intelSpanRenderStart( GLcontext *ctx ) { struct intel_context *intel = intel_context(ctx); + int i; if (intel->need_flush) { LOCK_HARDWARE(intel); @@ -226,11 +227,19 @@ void intelSpanRenderStart( GLcontext *ctx ) intel_region_map(intel, intel->front_region); intel_region_map(intel, intel->back_region); intel_region_map(intel, intel->depth_region); + + for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) { + if (ctx->Texture.Unit[i]._ReallyEnabled) { + struct gl_texture_object *texObj = ctx->Texture.Unit[i]._Current; + intel_tex_map_images(intel, intel_texture_object(texObj)); + } + } } void intelSpanRenderFinish( GLcontext *ctx ) { struct intel_context *intel = intel_context( ctx ); + int i; _swrast_flush( ctx ); @@ -240,6 +249,13 @@ void intelSpanRenderFinish( GLcontext *ctx ) intel_region_unmap(intel, intel->back_region); intel_region_unmap(intel, intel->depth_region); + for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) { + if (ctx->Texture.Unit[i]._ReallyEnabled) { + struct gl_texture_object *texObj = ctx->Texture.Unit[i]._Current; + intel_tex_unmap_images(intel, intel_texture_object(texObj)); + } + } + UNLOCK_HARDWARE( intel ); } |