Commit 7ae71a92 authored by H. Verbeet's avatar H. Verbeet Committed by Alexandre Julliard

wined3d: Skip sampler state application for stages that aren't mapped to a texture unit.

parent aced8de8
...@@ -1702,6 +1702,7 @@ static void tex_resultarg(DWORD state, IWineD3DStateBlockImpl *stateblock) { ...@@ -1702,6 +1702,7 @@ static void tex_resultarg(DWORD state, IWineD3DStateBlockImpl *stateblock) {
static void sampler(DWORD state, IWineD3DStateBlockImpl *stateblock) { static void sampler(DWORD state, IWineD3DStateBlockImpl *stateblock) {
DWORD sampler = state - STATE_SAMPLER(0); DWORD sampler = state - STATE_SAMPLER(0);
DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[sampler];
union { union {
float f; float f;
DWORD d; DWORD d;
...@@ -1711,12 +1712,17 @@ static void sampler(DWORD state, IWineD3DStateBlockImpl *stateblock) { ...@@ -1711,12 +1712,17 @@ static void sampler(DWORD state, IWineD3DStateBlockImpl *stateblock) {
/* Enabling and disabling texture dimensions is done by texture stage state / pixel shader setup, this function /* Enabling and disabling texture dimensions is done by texture stage state / pixel shader setup, this function
* only has to bind textures and set the per texture states * only has to bind textures and set the per texture states
*/ */
if (mapped_stage == -1) {
TRACE("No sampler mapped to stage %d. Returning.\n", sampler);
return;
}
if (GL_SUPPORT(ARB_MULTITEXTURE)) { if (GL_SUPPORT(ARB_MULTITEXTURE)) {
/* TODO: register combiners! */
if(sampler >= GL_LIMITS(sampler_stages)) { if(sampler >= GL_LIMITS(sampler_stages)) {
return; return;
} }
GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + stateblock->wineD3DDevice->texUnitMap[sampler])); GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + mapped_stage));
checkGLcall("glActiveTextureARB"); checkGLcall("glActiveTextureARB");
} else if (sampler > 0) { } else if (sampler > 0) {
/* We can't do anything here */ /* We can't do anything here */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment