summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorTiziano Bacocco <tizbac2@gmail.com>2015-01-21 00:41:11 +0100
committerAxel Davy <axel.davy@ens.fr>2015-02-06 00:07:19 +0100
commita1d369e804623663e78002c0101d668bd3d42762 (patch)
tree8152305061f1689c2320f526242dda87bfc05a3e /src/gallium/state_trackers
parent1543defc5ea8a17cf5558bb6468031f9c29b9a15 (diff)
downloadexternal_mesa3d-a1d369e804623663e78002c0101d668bd3d42762.zip
external_mesa3d-a1d369e804623663e78002c0101d668bd3d42762.tar.gz
external_mesa3d-a1d369e804623663e78002c0101d668bd3d42762.tar.bz2
st/nine: Fix enabled lights in stateblocks
Reviewed-by: Axel Davy <axel.davy@ens.fr> Signed-off-by: Tiziano Bacocco <tizbac2@gmail.com>
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/nine/device9.c4
-rw-r--r--src/gallium/state_trackers/nine/stateblock9.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c
index fe251fe..c6bd052 100644
--- a/src/gallium/state_trackers/nine/device9.c
+++ b/src/gallium/state_trackers/nine/device9.c
@@ -1965,7 +1965,9 @@ NineDevice9_GetLightEnable( struct NineDevice9 *This,
for (i = 0; i < state->ff.num_lights_active; ++i)
if (state->ff.active_light[i] == Index)
break;
- *pEnable = i != state->ff.num_lights_active;
+
+ *pEnable = i != state->ff.num_lights_active ? 128 : 0; // Taken from wine
+
return D3D_OK;
}
diff --git a/src/gallium/state_trackers/nine/stateblock9.c b/src/gallium/state_trackers/nine/stateblock9.c
index 220b196..13217ae 100644
--- a/src/gallium/state_trackers/nine/stateblock9.c
+++ b/src/gallium/state_trackers/nine/stateblock9.c
@@ -275,7 +275,8 @@ nine_state_copy_common(struct nine_state *dst,
if (mask->ff.light[i].Type != NINED3DLIGHT_INVALID)
dst->ff.light[i] = src->ff.light[i];
- DBG("TODO: active lights\n");
+ memcpy(dst->ff.active_light, src->ff.active_light, sizeof(src->ff.active_light) );
+ dst->ff.num_lights_active = src->ff.num_lights_active;
}
if (mask->changed.group & NINE_STATE_FF_VSTRANSF) {
for (i = 0; i < Elements(mask->ff.changed.transform); ++i) {
@@ -415,7 +416,8 @@ nine_state_copy_common_all(struct nine_state *dst,
memcpy(dst->ff.light,
src->ff.light, src->ff.num_lights * sizeof(dst->ff.light[0]));
- DBG("TODO: active lights\n");
+ memcpy(dst->ff.active_light, src->ff.active_light, sizeof(src->ff.active_light) );
+ dst->ff.num_lights_active = src->ff.num_lights_active;
}
/* Transforms. */