summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2007-12-17 13:47:52 -0800
committerEric Anholt <eric@anholt.net>2007-12-17 13:47:52 -0800
commit98d43552408045e34ba937913cfbad7aadee8213 (patch)
tree05cb13d94ae5a9afcfcf4cdb3bca591f92a3a08f /src/mesa/drivers/dri/i965
parentc1d6b874b35dd353b2f9862b47aadb52a812a4aa (diff)
[965] Fix software fallbacks with region-backed textures.
Diffstat (limited to 'src/mesa/drivers/dri/i965')
-rw-r--r--src/mesa/drivers/dri/i965/intel_span.c16
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 );
}