We were ignoring MULTISAMPLEMASK for non-maskable multisample modes, but we were missing the non-multisampled case.
Fixes a crash in Halo. Signed-off-by: Axel Davy <axel.d...@ens.fr> --- src/gallium/state_trackers/nine/device9.c | 4 ++-- src/gallium/state_trackers/nine/nine_state.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c index 62f2e8e..3523748 100644 --- a/src/gallium/state_trackers/nine/device9.c +++ b/src/gallium/state_trackers/nine/device9.c @@ -1842,8 +1842,8 @@ NineDevice9_SetRenderTarget( struct NineDevice9 *This, This->state.changed.group |= NINE_STATE_VIEWPORT | NINE_STATE_SCISSOR | NINE_STATE_MULTISAMPLE; if (This->state.rt[0] && - (This->state.rt[0]->desc.MultiSampleType == D3DMULTISAMPLE_NONMASKABLE) != - (rt->desc.MultiSampleType == D3DMULTISAMPLE_NONMASKABLE)) + (This->state.rt[0]->desc.MultiSampleType <= D3DMULTISAMPLE_NONMASKABLE) != + (rt->desc.MultiSampleType <= D3DMULTISAMPLE_NONMASKABLE)) This->state.changed.group |= NINE_STATE_SAMPLE_MASK; } diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c index 503ff5c..9e2dfc6 100644 --- a/src/gallium/state_trackers/nine/nine_state.c +++ b/src/gallium/state_trackers/nine/nine_state.c @@ -1100,7 +1100,7 @@ nine_update_state(struct NineDevice9 *device) pipe->set_blend_color(pipe, &color); } if (group & NINE_STATE_SAMPLE_MASK) { - if (state->rt[0]->desc.MultiSampleType == D3DMULTISAMPLE_NONMASKABLE) { + if (state->rt[0]->desc.MultiSampleType <= D3DMULTISAMPLE_NONMASKABLE) { pipe->set_sample_mask(pipe, ~0); } else { pipe->set_sample_mask(pipe, state->rs[D3DRS_MULTISAMPLEMASK]); -- 2.10.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev