Tobias Jakobi : wined3d: Force NP2 fixup constant reloading in shader_glsl_select.
Alexandre Julliard
julliard at winehq.org
Thu Jun 25 08:13:59 CDT 2009
Module: wine
Branch: master
Commit: a9f912466b94a93b84a0b30d374b7448faff4b82
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a9f912466b94a93b84a0b30d374b7448faff4b82
Author: Tobias Jakobi <tjakobi at xdf79.math.uni-bielefeld.de>
Date: Fri May 29 15:01:44 2009 +0200
wined3d: Force NP2 fixup constant reloading in shader_glsl_select.
---
dlls/wined3d/glsl_shader.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 2fc8586..e797889 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -4250,6 +4250,13 @@ static void shader_glsl_select(IWineD3DDevice *iface, BOOL usePS, BOOL useVS) {
if (program_id) TRACE("Using GLSL program %u\n", program_id);
GL_EXTCALL(glUseProgramObjectARB(program_id));
checkGLcall("glUseProgramObjectARB");
+
+ /* In case that NP2 texcoord fixup data is found for the selected program, trigger a reload of the
+ * constants. This has to be done because it can't be guaranteed that sampler() (from state.c) is
+ * called between selecting the shader and using it, which results in wrong fixup for some frames. */
+ if (priv->glsl_program && priv->glsl_program->np2Fixup_info) {
+ This->shader_backend->shader_load_np2fixup_constants(iface, usePS, useVS);
+ }
}
/* GL locking is done by the caller */
More information about the wine-cvs
mailing list