diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 84ec4fc7de1..42b107a4c49 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -134,7 +134,7 @@ static unsigned int shader_arb_load_constantsF(IWineD3DBaseShaderImpl* This, Win ret = 0; LIST_FOR_EACH_ENTRY(lconst, &This->baseShader.constantsF, local_constant, entry) { dirty_consts[lconst->idx] = 1; /* Dirtify so the non-immediate constant overwrites it next time */ - ret = max(ret, lconst->idx); + ret = max(ret, lconst->idx + 1); GL_EXTCALL(glProgramEnvParameter4fvARB(target_type, lconst->idx, (GLfloat*)lconst->value)); } checkGLcall("glProgramEnvParameter4fvARB()"); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 7a0cce29792..26c1c9caad3 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3602,7 +3602,7 @@ UINT count) { */ memset(This->activeContext->vshader_const_dirty + start, 1, sizeof(*This->activeContext->vshader_const_dirty) * count); - This->highest_dirty_vs_const = max(This->highest_dirty_vs_const, start+count); + This->highest_dirty_vs_const = max(This->highest_dirty_vs_const, start+count+1); IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VERTEXSHADERCONSTANT); @@ -4030,7 +4030,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetPixelShaderConstantF_DirtyConst( */ memset(This->activeContext->pshader_const_dirty + start, 1, sizeof(*This->activeContext->pshader_const_dirty) * count); - This->highest_dirty_ps_const = max(This->highest_dirty_ps_const, start+count); + This->highest_dirty_ps_const = max(This->highest_dirty_ps_const, start+count+1); IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADERCONSTANT);