diff options
| author | Francisco Jerez <currojerez@riseup.net> | 2010-04-06 15:11:58 -0400 |
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2010-04-08 20:15:43 -0400 |
| commit | 2295e17a4a0c339ca8507deb2cab5f339007e5e5 (patch) | |
| tree | 32743318c2919042412bb96156a3fdcff386cd67 | |
| parent | eaeefba154a19aeab9037b1d29478e5303a992fe (diff) | |
drm/nv40: Init some tiling-related PGRAPH state.
Fixes garbled 3D on an nv46 card.
Reported-by: Francesco Marella <francesco.marella@gmail.com>
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv40_graph.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nv40_graph.c b/drivers/gpu/drm/nouveau/nv40_graph.c index 53e8afe1dcd1..0616c96e4b67 100644 --- a/drivers/gpu/drm/nouveau/nv40_graph.c +++ b/drivers/gpu/drm/nouveau/nv40_graph.c | |||
| @@ -335,6 +335,27 @@ nv40_graph_init(struct drm_device *dev) | |||
| 335 | nv_wr32(dev, 0x400b38, 0x2ffff800); | 335 | nv_wr32(dev, 0x400b38, 0x2ffff800); |
| 336 | nv_wr32(dev, 0x400b3c, 0x00006000); | 336 | nv_wr32(dev, 0x400b3c, 0x00006000); |
| 337 | 337 | ||
| 338 | /* Tiling related stuff. */ | ||
| 339 | switch (dev_priv->chipset) { | ||
| 340 | case 0x44: | ||
| 341 | case 0x4a: | ||
| 342 | nv_wr32(dev, 0x400bc4, 0x1003d888); | ||
| 343 | nv_wr32(dev, 0x400bbc, 0xb7a7b500); | ||
| 344 | break; | ||
| 345 | case 0x46: | ||
| 346 | nv_wr32(dev, 0x400bc4, 0x0000e024); | ||
| 347 | nv_wr32(dev, 0x400bbc, 0xb7a7b520); | ||
| 348 | break; | ||
| 349 | case 0x4c: | ||
| 350 | case 0x4e: | ||
| 351 | case 0x67: | ||
| 352 | nv_wr32(dev, 0x400bc4, 0x1003d888); | ||
| 353 | nv_wr32(dev, 0x400bbc, 0xb7a7b540); | ||
| 354 | break; | ||
| 355 | default: | ||
| 356 | break; | ||
| 357 | } | ||
| 358 | |||
| 338 | /* Turn all the tiling regions off. */ | 359 | /* Turn all the tiling regions off. */ |
| 339 | for (i = 0; i < pfb->num_tiles; i++) | 360 | for (i = 0; i < pfb->num_tiles; i++) |
| 340 | nv40_graph_set_region_tiling(dev, i, 0, 0, 0); | 361 | nv40_graph_set_region_tiling(dev, i, 0, 0, 0); |
