From 957474f223d28751c65eb87515bf9b7da2767624 Mon Sep 17 00:00:00 2001 From: "H. Verbeet" Date: Mon, 25 Dec 2006 23:02:41 +0100 Subject: [PATCH] wined3d: Skip NULL textures rather than non-NULL ones, assign -1 to skipped stages. Downgrade a FIXME to a WARN. --- dlls/wined3d/device.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 4966d0cecc3..0ad451296fe 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3735,15 +3735,26 @@ static void IWineD3DDeviceImpl_FindTexUnitMap(IWineD3DDeviceImpl *This) { /* Now work out the mapping */ tex = 0; This->oneToOneTexUnitMap = FALSE; - FIXME("Non 1:1 mapping UNTESTED!\n"); + WARN("Non 1:1 mapping UNTESTED!\n"); for(i = 0; i < This->stateBlock->lowest_disabled_stage; i++) { - if(This->stateBlock->textures[i] == NULL) tex++; + /* Skip NULL textures */ + if (!This->stateBlock->textures[i]) { + /* Map to -1, so the check below doesn't fail if a non-NULL + * texture is set on this stage */ + TRACE("Mapping texture stage %d to -1\n", i); + This->texUnitMap[i] = -1; + + continue; + } + TRACE("Mapping texture stage %d to unit %d\n", i, tex); if(This->texUnitMap[i] != tex) { This->texUnitMap[i] = tex; IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SAMPLER(i)); markTextureStagesDirty(This, i); } + + ++tex; } } }