The specified stride was not correct, resulting in erases overlapping and part of the zcull regions being not erased at all.
Signed-off-by: Pierre Moreau pierre.morrow@free.fr --- drivers/gpu/drm/nouveau/core/engine/graph/nv50.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c b/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c index 2c7809e..a36adcd 100644 --- a/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c @@ -991,10 +991,10 @@ nv50_graph_init(struct nouveau_object *object)
/* zero out zcull regions */ for (i = 0; i < 8; i++) { - nv_wr32(priv, 0x402c20 + (i * 8), 0x00000000); - nv_wr32(priv, 0x402c24 + (i * 8), 0x00000000); - nv_wr32(priv, 0x402c28 + (i * 8), 0x00000000); - nv_wr32(priv, 0x402c2c + (i * 8), 0x00000000); + nv_wr32(priv, 0x402c20 + (i * 0x10), 0x00000000); + nv_wr32(priv, 0x402c24 + (i * 0x10), 0x00000000); + nv_wr32(priv, 0x402c28 + (i * 0x10), 0x00000000); + nv_wr32(priv, 0x402c2c + (i * 0x10), 0x00000000); } return 0; }
The blob does not seem to write at that place for my NVAC, though it does for my NV96, agreeing with what is done in the if/else structure below. I guess someone forgot to remove the line when the if/else was put in place.
Signed-off-by: Pierre Moreau pierre.morrow@free.fr --- drivers/gpu/drm/nouveau/core/engine/graph/nv50.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c b/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c index a36adcd..ca1b886 100644 --- a/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c @@ -976,7 +976,6 @@ nv50_graph_init(struct nouveau_object *object) break; case 0xa0: default: - nv_wr32(priv, 0x402cc0, 0x00000000); if (nv_device(priv)->chipset == 0xa0 || nv_device(priv)->chipset == 0xaa || nv_device(priv)->chipset == 0xac) {
On Fri, Jun 13, 2014 at 10:34 AM, Pierre Moreau pierre.morrow@free.fr wrote:
The specified stride was not correct, resulting in erases overlapping and part of the zcull regions being not erased at all.
Hey Pierre,
Thanks, I've merged both patches.
Signed-off-by: Pierre Moreau pierre.morrow@free.fr
drivers/gpu/drm/nouveau/core/engine/graph/nv50.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c b/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c index 2c7809e..a36adcd 100644 --- a/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/graph/nv50.c @@ -991,10 +991,10 @@ nv50_graph_init(struct nouveau_object *object)
/* zero out zcull regions */ for (i = 0; i < 8; i++) {
nv_wr32(priv, 0x402c20 + (i * 8), 0x00000000);
nv_wr32(priv, 0x402c24 + (i * 8), 0x00000000);
nv_wr32(priv, 0x402c28 + (i * 8), 0x00000000);
nv_wr32(priv, 0x402c2c + (i * 8), 0x00000000);
nv_wr32(priv, 0x402c20 + (i * 0x10), 0x00000000);
nv_wr32(priv, 0x402c24 + (i * 0x10), 0x00000000);
nv_wr32(priv, 0x402c28 + (i * 0x10), 0x00000000);
nv_wr32(priv, 0x402c2c + (i * 0x10), 0x00000000); } return 0;
}
2.0.0
Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
dri-devel@lists.freedesktop.org