From a4e9bbb8f81f85f49d59dd472257ae3e034b91d9 Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Sun, 23 Sep 2018 22:28:07 +0200 Subject: [PATCH] st/nine: Don't update unused world matrices While to the application we have to track accurately all 256 world matrices (including in stateblocks), hw vertex processing enables to set a limit to the number of world matrices the hardware can access to in the advertised caps, which is 8 for nine. Thus don't bother in the stateblock code to send the updated values for the unreachable matrices. Signed-off-by: Axel Davy --- src/gallium/state_trackers/nine/nine_state.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c index c9901209189..f4d9b423510 100644 --- a/src/gallium/state_trackers/nine/nine_state.c +++ b/src/gallium/state_trackers/nine/nine_state.c @@ -2059,6 +2059,12 @@ nine_context_apply_stateblock(struct NineDevice9 *device, for (s = i * 32; s < (i * 32 + 32); ++s) { if (!(src->ff.changed.transform[i] & (1 << (s % 32)))) continue; + /* MaxVertexBlendMatrixIndex is 8, which means + * we don't read past index D3DTS_WORLDMATRIX(8). + * swvp is supposed to allow all 256, but we don't + * implement it for now. */ + if (s > D3DTS_WORLDMATRIX(8)) + break; nine_context_set_transform(device, s, nine_state_access_transform( (struct nine_ff_state *)&src->ff, -- 2.30.2