From aa69bb684875fb22fa1c4dd5f0da86552ca73ff2 Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Sat, 24 Sep 2016 22:49:31 +0200 Subject: [PATCH] st/nine: Use materials if source is not given. Deduced by test on windows. Signed-off-by: Axel Davy --- src/gallium/state_trackers/nine/nine_ff.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gallium/state_trackers/nine/nine_ff.c b/src/gallium/state_trackers/nine/nine_ff.c index 4c929206684..86e142011c6 100644 --- a/src/gallium/state_trackers/nine/nine_ff.c +++ b/src/gallium/state_trackers/nine/nine_ff.c @@ -1585,10 +1585,11 @@ nine_ff_get_vs(struct NineDevice9 *device) key.lighting = 0; } if ((key.lighting | key.darkness) && state->rs[D3DRS_COLORVERTEX]) { - key.mtl_diffuse = state->rs[D3DRS_DIFFUSEMATERIALSOURCE]; - key.mtl_ambient = state->rs[D3DRS_AMBIENTMATERIALSOURCE]; - key.mtl_specular = state->rs[D3DRS_SPECULARMATERIALSOURCE]; - key.mtl_emissive = state->rs[D3DRS_EMISSIVEMATERIALSOURCE]; + uint32_t mask = (key.color0in_one ? 0 : 1) | (key.color1in_zero ? 0 : 2); + key.mtl_diffuse = state->rs[D3DRS_DIFFUSEMATERIALSOURCE] & mask; + key.mtl_ambient = state->rs[D3DRS_AMBIENTMATERIALSOURCE] & mask; + key.mtl_specular = state->rs[D3DRS_SPECULARMATERIALSOURCE] & mask; + key.mtl_emissive = state->rs[D3DRS_EMISSIVEMATERIALSOURCE] & mask; } key.fog = !!state->rs[D3DRS_FOGENABLE]; key.fog_mode = (!key.position_t && state->rs[D3DRS_FOGENABLE]) ? state->rs[D3DRS_FOGVERTEXMODE] : 0; -- 2.30.2