Mesa (master): st/nine: Don't update unused world matrices

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 26 20:16:37 UTC 2018


Module: Mesa
Branch: master
Commit: a4e9bbb8f81f85f49d59dd472257ae3e034b91d9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a4e9bbb8f81f85f49d59dd472257ae3e034b91d9

Author: Axel Davy <davyaxel0 at gmail.com>
Date:   Sun Sep 23 22:28:07 2018 +0200

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 <davyaxel0 at gmail.com>

---

 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 c990120918..f4d9b42351 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,




More information about the mesa-commit mailing list