From: Elizabeth Figura zfigura@codeweavers.com
--- dlls/wined3d/cs.c | 9 +-------- dlls/wined3d/ffp_gl.c | 1 - dlls/wined3d/glsl_shader.c | 2 -- dlls/wined3d/shader_spirv.c | 1 - dlls/wined3d/stateblock.c | 5 +++++ dlls/wined3d/utils.c | 2 -- dlls/wined3d/wined3d_private.h | 5 +---- 7 files changed, 7 insertions(+), 18 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 9b1dd56e6fa..29a8c6494bf 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1998,12 +1998,6 @@ static void wined3d_cs_exec_set_light(struct wined3d_cs *cs, const void *data) rb_put(&cs->state.light_state.lights_tree, (void *)(ULONG_PTR)light_idx, &light_info->entry); }
- if (light_info->glIndex != -1) - { - if (light_info->OriginalParms.type != op->light.OriginalParms.type) - device_invalidate_state(cs->c.device, STATE_LIGHT_TYPE); - } - light_info->OriginalParms = op->light.OriginalParms; light_info->constants = op->light.constants; } @@ -2032,8 +2026,7 @@ static void wined3d_cs_exec_set_light_enable(struct wined3d_cs *cs, const void * return; }
- if (wined3d_light_state_enable_light(&cs->state.light_state, &device->adapter->d3d_info, light_info, op->enable)) - device_invalidate_state(device, STATE_LIGHT_TYPE); + wined3d_light_state_enable_light(&cs->state.light_state, &device->adapter->d3d_info, light_info, op->enable); }
void wined3d_device_context_emit_set_light_enable(struct wined3d_device_context *context, unsigned int idx, BOOL enable) diff --git a/dlls/wined3d/ffp_gl.c b/dlls/wined3d/ffp_gl.c index f96b0208550..e4229db1763 100644 --- a/dlls/wined3d/ffp_gl.c +++ b/dlls/wined3d/ffp_gl.c @@ -1703,7 +1703,6 @@ static void validate_state_table(struct wined3d_state_entry *state_table) STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING, STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING, STATE_VIEWPORT, - STATE_LIGHT_TYPE, STATE_SCISSORRECT, STATE_RASTERIZER, STATE_BASEVERTEXINDEX, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index c9a83048654..2ab09f98cf6 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -11988,8 +11988,6 @@ static const struct wined3d_state_entry_template glsl_vertex_pipe_vp_states[] = {STATE_CLIPPLANE(6), {STATE_CLIPPLANE(6), clipplane }, WINED3D_GL_EXT_NONE }, {STATE_CLIPPLANE(7), {STATE_CLIPPLANE(7), glsl_vertex_pipe_clip_plane}, WINED3D_GLSL_130 }, {STATE_CLIPPLANE(7), {STATE_CLIPPLANE(7), clipplane }, WINED3D_GL_EXT_NONE }, - /* Lights */ - {STATE_LIGHT_TYPE, {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, /* Viewport */ {STATE_VIEWPORT, {STATE_VIEWPORT, glsl_vertex_pipe_viewport}, WINED3D_GL_EXT_NONE }, /* Transform states */ diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c index 317713e821c..417ff8dcb0d 100644 --- a/dlls/wined3d/shader_spirv.c +++ b/dlls/wined3d/shader_spirv.c @@ -1165,7 +1165,6 @@ static const struct wined3d_state_entry_template spirv_vertex_pipe_vk_vp_states[ {STATE_RENDER(WINED3D_RS_POINTSIZE_MIN), {STATE_RENDER(WINED3D_RS_POINTSIZE_MIN), state_nop}}, {STATE_RENDER(WINED3D_RS_POINTSIZE_MAX), {STATE_RENDER(WINED3D_RS_POINTSIZE_MAX), state_nop}}, {STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX), {STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX), state_nop}}, - {STATE_LIGHT_TYPE, {STATE_LIGHT_TYPE, state_nop}}, {0}, /* Terminate */ };
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index a8042331976..e0f9f631d2d 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -1939,6 +1939,10 @@ HRESULT CDECL wined3d_stateblock_set_light(struct wined3d_stateblock *stateblock return WINED3DERR_INVALIDCALL; }
+ if (!(object = wined3d_light_state_get_light(stateblock->stateblock_state.light_state, light_idx)) + || light->type != object->OriginalParms.type) + stateblock->changed.ffp_vs_settings = 1; + if (SUCCEEDED(hr = wined3d_light_state_set_light(stateblock->stateblock_state.light_state, light_idx, light, &object))) set_light_changed(stateblock, object); return hr; @@ -1962,6 +1966,7 @@ HRESULT CDECL wined3d_stateblock_set_light_enable(struct wined3d_stateblock *sta if (wined3d_light_state_enable_light(light_state, &stateblock->device->adapter->d3d_info, light_info, enable)) set_light_changed(stateblock, light_info);
+ stateblock->changed.ffp_vs_settings = 1; return S_OK; }
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index d045b4e346c..35811a3b881 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -5363,8 +5363,6 @@ const char *debug_d3dstate(uint32_t state) return "STATE_VDECL"; if (STATE_IS_VIEWPORT(state)) return "STATE_VIEWPORT"; - if (STATE_IS_LIGHT_TYPE(state)) - return "STATE_LIGHT_TYPE"; if (STATE_IS_SCISSORRECT(state)) return "STATE_SCISSORRECT"; if (STATE_IS_CLIPPLANE(state)) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index a194377b8c6..d6f935f15ea 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1748,10 +1748,7 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state #define STATE_VIEWPORT (STATE_VDECL + 1) #define STATE_IS_VIEWPORT(a) ((a) == STATE_VIEWPORT)
-#define STATE_LIGHT_TYPE (STATE_VIEWPORT + 1) -#define STATE_IS_LIGHT_TYPE(a) ((a) == STATE_LIGHT_TYPE) - -#define STATE_SCISSORRECT (STATE_LIGHT_TYPE + 1) +#define STATE_SCISSORRECT (STATE_VIEWPORT + 1) #define STATE_IS_SCISSORRECT(a) ((a) == STATE_SCISSORRECT)
#define STATE_CLIPPLANE(a) (STATE_SCISSORRECT + 1 + (a))