(view as text)
diff --git a/Source/Core/VideoBackends/D3D/TextureCache.cpp b/Source/Core/VideoBackends/D3D/TextureCache.cpp
index 27bee72..26ef1d4 100644
--- a/Source/Core/VideoBackends/D3D/TextureCache.cpp
+++ b/Source/Core/VideoBackends/D3D/TextureCache.cpp
@@ -74,13 +74,13 @@ bool TextureCache::TCacheEntry::Save(const std::string filename, unsigned int le
 	return saved_png;
 }
 
-void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height,
+void TextureCache::TCacheEntry::Load(unsigned int stage, unsigned int width, unsigned int height,
 	unsigned int expanded_width, unsigned int level)
 {
 	D3D::ReplaceRGBATexture2D(texture->GetTex(), TextureCache::temp, width, height, expanded_width, level, usage);
 }
 
-TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width,
+TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int stage, unsigned int width,
 	unsigned int height, unsigned int expanded_width,
 	unsigned int tex_levels, PC_TexFormat pcfmt)
 {
@@ -116,7 +116,7 @@ TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width,
 	SAFE_RELEASE(pTexture);
 
 	if (tex_levels != 1)
-		entry->Load(width, height, expanded_width, 0);
+		entry->Load(stage, width, height, expanded_width, 0);
 
 	return entry;
 }
diff --git a/Source/Core/VideoBackends/D3D/TextureCache.h b/Source/Core/VideoBackends/D3D/TextureCache.h
index 91603bc..b566663 100644
--- a/Source/Core/VideoBackends/D3D/TextureCache.h
+++ b/Source/Core/VideoBackends/D3D/TextureCache.h
@@ -27,7 +27,7 @@ private:
 		TCacheEntry(D3DTexture2D *_tex) : texture(_tex) {}
 		~TCacheEntry();
 
-		void Load(unsigned int width, unsigned int height,
+		void Load(unsigned int stage, unsigned int width, unsigned int height,
 			unsigned int expanded_width, unsigned int levels);
 
 		void FromRenderTarget(u32 dstAddr, unsigned int dstFormat,
@@ -39,7 +39,7 @@ private:
 		bool Save(const std::string filename, unsigned int level);
 	};
 
-	TCacheEntryBase* CreateTexture(unsigned int width, unsigned int height,
+	TCacheEntryBase* CreateTexture(unsigned int stage, unsigned int width, unsigned int height,
 		unsigned int expanded_width, unsigned int tex_levels, PC_TexFormat pcfmt);
 
 	TCacheEntryBase* CreateRenderTargetTexture(unsigned int scaled_tex_w, unsigned int scaled_tex_h);
diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp
index e2b5e0d..b53ad91 100644
--- a/Source/Core/VideoBackends/OGL/TextureCache.cpp
+++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp
@@ -52,7 +52,6 @@ static u32 s_DepthCbufid;
 
 static u32 s_Textures[8];
 static u32 s_ActiveTexture;
-static u32 s_NextStage;
 
 bool SaveTexture(const std::string filename, u32 textarget, u32 tex, int virtual_width, int virtual_height, unsigned int level)
 {
@@ -125,7 +124,7 @@ bool TextureCache::TCacheEntry::Save(const std::string filename, unsigned int le
 	return SaveTexture(filename, GL_TEXTURE_2D, texture, virtual_width, virtual_height, level);
 }
 
-TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width,
+TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int stage, unsigned int width,
 	unsigned int height, unsigned int expanded_width,
 	unsigned int tex_levels, PC_TexFormat pcfmt)
 {
@@ -190,24 +189,24 @@ TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width,
 
 	entry.m_tex_levels = tex_levels;
 
-	entry.Load(width, height, expanded_width, 0);
+	entry.Load(stage, width, height, expanded_width, 0);
 
 	return &entry;
 }
 
-void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height,
+void TextureCache::TCacheEntry::Load(unsigned int stage, unsigned int width, unsigned int height,
 	unsigned int expanded_width, unsigned int level)
 {
-	if (s_ActiveTexture != s_NextStage)
+	if (s_ActiveTexture != stage)
 	{
-		glActiveTexture(GL_TEXTURE0 + s_NextStage);
-		s_ActiveTexture = s_NextStage;
+		glActiveTexture(GL_TEXTURE0 + stage);
+		s_ActiveTexture = stage;
 	}
 
-	if (s_Textures[s_NextStage] != texture)
+	if (s_Textures[stage] != texture)
 	{
 		glBindTexture(GL_TEXTURE_2D, texture);
-		s_Textures[s_NextStage] = texture;
+		s_Textures[stage] = texture;
 	}
 
 	// TODO: sloppy, just do this on creation?
@@ -400,7 +399,6 @@ TextureCache::TextureCache()
 	s_DepthCopyPositionUniform = glGetUniformLocation(s_DepthMatrixProgram.glprogid, "copy_position");
 
 	s_ActiveTexture = -1;
-	s_NextStage = -1;
 	for(auto& gtex : s_Textures)
 		gtex = -1;
 }
@@ -423,11 +421,5 @@ void TextureCache::SetStage ()
 		glActiveTexture(GL_TEXTURE0 + s_ActiveTexture);
 }
 
-void TextureCache::SetNextStage ( unsigned int stage )
-{
-	s_NextStage = stage;
-}
-
-
 
 }
diff --git a/Source/Core/VideoBackends/OGL/TextureCache.h b/Source/Core/VideoBackends/OGL/TextureCache.h
index af1b60b..5465642 100644
--- a/Source/Core/VideoBackends/OGL/TextureCache.h
+++ b/Source/Core/VideoBackends/OGL/TextureCache.h
@@ -22,7 +22,6 @@ public:
 	TextureCache();
 	static void DisableStage(unsigned int stage);
 	static void SetStage();
-	static void SetNextStage(unsigned int stage);
 
 private:
 	struct TCacheEntry : TCacheEntryBase
@@ -44,7 +43,7 @@ private:
 		TCacheEntry();
 		~TCacheEntry();
 
-		void Load(unsigned int width, unsigned int height,
+		void Load(unsigned int stage, unsigned int width, unsigned int height,
 			unsigned int expanded_width, unsigned int level) override;
 
 		void FromRenderTarget(u32 dstAddr, unsigned int dstFormat,
@@ -58,7 +57,7 @@ private:
 
 	~TextureCache();
 
-	TCacheEntryBase* CreateTexture(unsigned int width, unsigned int height,
+	TCacheEntryBase* CreateTexture(unsigned int stage, unsigned int width, unsigned int height,
 		unsigned int expanded_width, unsigned int tex_levels, PC_TexFormat pcfmt) override;
 
 	TCacheEntryBase* CreateRenderTargetTexture(unsigned int scaled_tex_w, unsigned int scaled_tex_h) override;
diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp
index 4978458..c9d6935 100644
--- a/Source/Core/VideoBackends/OGL/VertexManager.cpp
+++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp
@@ -180,7 +180,6 @@ void VertexManager::vFlush()
 	{
 		if (usedtextures & (1 << i))
 		{
-			TextureCache::SetNextStage(i);
 			g_renderer->SetSamplerState(i % 4, i / 4);
 			FourTexUnits &tex = bpmem.tex[i >> 2];
 			TextureCache::TCacheEntryBase* tentry = TextureCache::Load(i,
diff --git a/Source/Core/VideoCommon/TextureCacheBase.cpp b/Source/Core/VideoCommon/TextureCacheBase.cpp
index a3224bc..a53a050 100644
--- a/Source/Core/VideoCommon/TextureCacheBase.cpp
+++ b/Source/Core/VideoCommon/TextureCacheBase.cpp
@@ -487,7 +487,7 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage,
 	// create the entry/texture
 	if (NULL == entry)
 	{
-		textures[texID] = entry = g_texture_cache->CreateTexture(width, height, expandedWidth, texLevels, pcfmt);
+		textures[texID] = entry = g_texture_cache->CreateTexture(stage, width, height, expandedWidth, texLevels, pcfmt);
 
 		// Sometimes, we can get around recreating a texture if only the number of mip levels changes
 		// e.g. if our texture cache entry got too many mipmap levels we can limit the number of used levels by setting the appropriate render states
@@ -504,7 +504,7 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage,
 	else
 	{
 		// load texture (CreateTexture also loads level 0)
-		entry->Load(width, height, expandedWidth, 0);
+		entry->Load(stage, width, height, expandedWidth, 0);
 	}
 
 	entry->SetGeneralParameters(address, texture_size, full_format, entry->num_mipmaps);
@@ -548,7 +548,7 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage,
 				TexDecoder_Decode(temp, mip_src_data, expanded_mip_width, expanded_mip_height, texformat, tlutaddr, tlutfmt, g_ActiveConfig.backend_info.bUseRGBATextures);
 				mip_src_data += TexDecoder_GetTextureSizeInBytes(expanded_mip_width, expanded_mip_height, texformat);
 
-				entry->Load(mip_width, mip_height, expanded_mip_width, level);
+				entry->Load(stage, mip_width, mip_height, expanded_mip_width, level);
 
 				if (g_ActiveConfig.bDumpTextures)
 					DumpTexture(entry, level);
@@ -562,7 +562,7 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage,
 				unsigned int mip_height = CalculateLevelSize(height, level);
 
 				LoadCustomTexture(tex_hash, texformat, level, mip_width, mip_height);
-				entry->Load(mip_width, mip_height, mip_width, level);
+				entry->Load(stage, mip_width, mip_height, mip_width, level);
 			}
 		}
 	}
diff --git a/Source/Core/VideoCommon/TextureCacheBase.h b/Source/Core/VideoCommon/TextureCacheBase.h
index 4db768f..cea7fb7 100644
--- a/Source/Core/VideoCommon/TextureCacheBase.h
+++ b/Source/Core/VideoCommon/TextureCacheBase.h
@@ -75,7 +75,7 @@ public:
 		virtual void Bind(unsigned int stage) = 0;
 		virtual bool Save(const std::string filename, unsigned int level) = 0;
 
-		virtual void Load(unsigned int width, unsigned int height,
+		virtual void Load(unsigned int const stage, unsigned int width, unsigned int height,
 			unsigned int expanded_width, unsigned int level) = 0;
 		virtual void FromRenderTarget(u32 dstAddr, unsigned int dstFormat,
 			unsigned int srcFormat, const EFBRectangle& srcRect,
@@ -98,7 +98,7 @@ public:
 	static void ClearRenderTargets();	// currently only used by OGL
 	static bool Find(u32 start_address, u64 hash);
 
-	virtual TCacheEntryBase* CreateTexture(unsigned int width, unsigned int height,
+	virtual TCacheEntryBase* CreateTexture(unsigned int stage, unsigned int width, unsigned int height,
 		unsigned int expanded_width, unsigned int tex_levels, PC_TexFormat pcfmt) = 0;
 	virtual TCacheEntryBase* CreateRenderTargetTexture(unsigned int scaled_tex_w, unsigned int scaled_tex_h) = 0;