summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/nine
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2018-09-23 22:28:07 +0200
committerAxel Davy <[email protected]>2018-10-26 22:16:16 +0200
commita4e9bbb8f81f85f49d59dd472257ae3e034b91d9 (patch)
tree0f6200bc09554709d325f9b102d03e04332fe00e /src/gallium/state_trackers/nine
parent2e51c4c7cc43232cf13659f7fface771cd49037e (diff)
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 <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/nine')
-rw-r--r--src/gallium/state_trackers/nine/nine_state.c6
1 files changed, 6 insertions, 0 deletions
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,