[PATCH] wined3d: Do not try to use not available texture stages in set_tex_op_nvr
Henri Verbeet
hverbeet at gmail.com
Wed Jan 6 04:16:22 CST 2010
2010/1/5 Christian Costa <titan.costa at wanadoo.fr>:
> Here it is. The fixme message is :
> fixme:d3d:set_tex_op_nvrc >>>>>>>>>>>>>>>>> GL_INVALID_ENUM (0x500) from
> set_tex_op_nvrc() @ nvidia_texture_shader.c / 460
>
Looks like the context creation code invalidates those states simply
because they exist. Does the attached patch make the errors go away?
-------------- next part --------------
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index adb426b..10fa94f 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -5733,6 +5733,7 @@ HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_
APPLYSTATEFUNC multistate_funcs[STATE_HIGHEST + 1][3];
const struct StateEntryTemplate *cur;
BOOL set[STATE_HIGHEST + 1];
+ unsigned int start, last;
memset(multistate_funcs, 0, sizeof(multistate_funcs));
@@ -5824,6 +5825,14 @@ HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_
}
}
+ start = STATE_TEXTURESTAGE(gl_info->limits.texture_stages, 0);
+ last = STATE_TEXTURESTAGE(MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE);
+ for (i = start; i <= last; ++i)
+ {
+ StateTable[i].representative = 0;
+ StateTable[i].apply = state_undefined;
+ }
+
return WINED3D_OK;
out_of_mem:
More information about the wine-devel
mailing list