From: Axel Davy Date: Wed, 19 Oct 2016 21:36:50 +0000 (+0200) Subject: st/nine: Refactor LightEnable X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bb62ea925a9aaebb053f0df14a9b7c995fdb6537;p=mesa.git st/nine: Refactor LightEnable Call a helper function. Signed-off-by: Axel Davy --- diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c index 74c1bea7857..3fd1cdffab9 100644 --- a/src/gallium/state_trackers/nine/device9.c +++ b/src/gallium/state_trackers/nine/device9.c @@ -2123,7 +2123,6 @@ NineDevice9_LightEnable( struct NineDevice9 *This, BOOL Enable ) { struct nine_state *state = This->update; - unsigned i; DBG("This=%p Index=%u Enable=%i\n", This, Index, Enable); @@ -2139,30 +2138,8 @@ NineDevice9_LightEnable( struct NineDevice9 *This, light.Direction.z = 1.0f; NineDevice9_SetLight(This, Index, &light); } - user_assert(Index < state->ff.num_lights, D3DERR_INVALIDCALL); - - for (i = 0; i < state->ff.num_lights_active; ++i) { - if (state->ff.active_light[i] == Index) - break; - } - if (Enable) { - if (i < state->ff.num_lights_active) - return D3D_OK; - /* XXX wine thinks this should still succeed: - */ - user_assert(i < NINE_MAX_LIGHTS_ACTIVE, D3DERR_INVALIDCALL); - - state->ff.active_light[i] = Index; - state->ff.num_lights_active++; - } else { - if (i == state->ff.num_lights_active) - return D3D_OK; - --state->ff.num_lights_active; - for (; i < state->ff.num_lights_active; ++i) - state->ff.active_light[i] = state->ff.active_light[i + 1]; - } - state->changed.group |= NINE_STATE_FF_LIGHTING; + nine_state_light_enable(&state->ff, &state->changed.group, Index, Enable); return D3D_OK; } diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c index 0767126db3c..7737027ffd5 100644 --- a/src/gallium/state_trackers/nine/nine_state.c +++ b/src/gallium/state_trackers/nine/nine_state.c @@ -2854,6 +2854,41 @@ nine_state_set_light(struct nine_ff_state *ff_state, DWORD Index, return D3D_OK; } +HRESULT +nine_state_light_enable(struct nine_ff_state *ff_state, uint32_t *change_group, + DWORD Index, BOOL Enable) +{ + unsigned i; + + user_assert(Index < ff_state->num_lights, D3DERR_INVALIDCALL); + + for (i = 0; i < ff_state->num_lights_active; ++i) { + if (ff_state->active_light[i] == Index) + break; + } + + if (Enable) { + if (i < ff_state->num_lights_active) + return D3D_OK; + /* XXX wine thinks this should still succeed: + */ + user_assert(i < NINE_MAX_LIGHTS_ACTIVE, D3DERR_INVALIDCALL); + + ff_state->active_light[i] = Index; + ff_state->num_lights_active++; + } else { + if (i == ff_state->num_lights_active) + return D3D_OK; + --ff_state->num_lights_active; + for (; i < ff_state->num_lights_active; ++i) + ff_state->active_light[i] = ff_state->active_light[i + 1]; + } + + *change_group |= NINE_STATE_FF_LIGHTING; + + return D3D_OK; +} + #define D3DRS_TO_STRING_CASE(n) case D3DRS_##n: return "D3DRS_"#n const char *nine_d3drs_to_string(DWORD State) { diff --git a/src/gallium/state_trackers/nine/nine_state.h b/src/gallium/state_trackers/nine/nine_state.h index 314dd7c06e4..4d1e8a48337 100644 --- a/src/gallium/state_trackers/nine/nine_state.h +++ b/src/gallium/state_trackers/nine/nine_state.h @@ -465,6 +465,10 @@ nine_state_access_transform(struct nine_ff_state *, D3DTRANSFORMSTATETYPE, HRESULT nine_state_set_light(struct nine_ff_state *, DWORD, const D3DLIGHT9 *); +HRESULT +nine_state_light_enable(struct nine_ff_state *, uint32_t *, + DWORD, BOOL); + const char *nine_d3drs_to_string(DWORD State); #endif /* _NINE_STATE_H_ */