Mesa (9.0): nv50: point vertex runout at a valid address

Maarten Lankhorst mlankhorst at kemper.freedesktop.org
Tue Nov 20 18:32:33 UTC 2012


Module: Mesa
Branch: 9.0
Commit: 51ba1c1ae1ea6eff0e0c727aeec48d3433ec5bce
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=51ba1c1ae1ea6eff0e0c727aeec48d3433ec5bce

Author: Ben Skeggs <bskeggs at redhat.com>
Date:   Mon Oct  8 10:25:39 2012 +1000

nv50: point vertex runout at a valid address

Reviewed-by: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
(cherry picked from commit 63c3a799aecff5348ecec3c4c13355996e4bf820)

---

 src/gallium/drivers/nv50/nv50_screen.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
index 3d510ea..982948e 100644
--- a/src/gallium/drivers/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nv50/nv50_screen.c
@@ -454,6 +454,18 @@ nv50_screen_init_hwctx(struct nv50_screen *screen)
    PUSH_DATA (push, (NV50_CB_AUX << 12) | 0xf21);
    PUSH_DATA (push, (NV50_CB_AUX << 12) | 0xf31);
 
+   /* return { 0.0, 0.0, 0.0, 0.0 } on out-of-bounds vtxbuf access */
+   BEGIN_NV04(push, NV50_3D(CB_ADDR), 1);
+   PUSH_DATA (push, ((1 << 9) << 6) | NV50_CB_AUX);
+   BEGIN_NI04(push, NV50_3D(CB_DATA(0)), 4);
+   PUSH_DATAf(push, 0.0f);
+   PUSH_DATAf(push, 0.0f);
+   PUSH_DATAf(push, 0.0f);
+   PUSH_DATAf(push, 0.0f);
+   BEGIN_NV04(push, NV50_3D(VERTEX_RUNOUT_ADDRESS_HIGH), 2);
+   PUSH_DATAh(push, screen->uniforms->offset + (3 << 16) + (1 << 9));
+   PUSH_DATA (push, screen->uniforms->offset + (3 << 16) + (1 << 9));
+
    /* max TIC (bits 4:8) & TSC bindings, per program type */
    for (i = 0; i < 3; ++i) {
       BEGIN_NV04(push, NV50_3D(TEX_LIMITS(i)), 1);




More information about the mesa-commit mailing list