summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/drm/nouveau/common
diff options
context:
space:
mode:
authorStephane Marchesin <marchesin@icps.u-strasbg.fr>2009-02-02 02:12:46 +0100
committerStephane Marchesin <marchesin@icps.u-strasbg.fr>2009-02-02 02:12:46 +0100
commit4035e0f8989754ee7d31212e69d6461f1bbff008 (patch)
treefa7a95563d9f7795b779651e7841916cd36a5185 /src/gallium/winsys/drm/nouveau/common
parent462f09487efac27173c231b09861b4f5316eb11d (diff)
nv04: some old changes I had lying around.
Diffstat (limited to 'src/gallium/winsys/drm/nouveau/common')
-rw-r--r--src/gallium/winsys/drm/nouveau/common/nouveau_context.c2
-rw-r--r--src/gallium/winsys/drm/nouveau/common/nouveau_fence.c9
-rw-r--r--src/gallium/winsys/drm/nouveau/common/nouveau_winsys.c4
3 files changed, 12 insertions, 3 deletions
diff --git a/src/gallium/winsys/drm/nouveau/common/nouveau_context.c b/src/gallium/winsys/drm/nouveau/common/nouveau_context.c
index 2f245046d4..e093877381 100644
--- a/src/gallium/winsys/drm/nouveau/common/nouveau_context.c
+++ b/src/gallium/winsys/drm/nouveau/common/nouveau_context.c
@@ -84,6 +84,8 @@ nouveau_context_init(struct nouveau_screen *nv_screen,
int i;
switch (dev->chipset & 0xf0) {
+ case 0x00:
+ /* NV04 */
case 0x10:
case 0x20:
/* NV10 */
diff --git a/src/gallium/winsys/drm/nouveau/common/nouveau_fence.c b/src/gallium/winsys/drm/nouveau/common/nouveau_fence.c
index e7b0b4ff07..451011e112 100644
--- a/src/gallium/winsys/drm/nouveau/common/nouveau_fence.c
+++ b/src/gallium/winsys/drm/nouveau/common/nouveau_fence.c
@@ -148,9 +148,12 @@ nouveau_fence_emit(struct nouveau_fence *fence)
NOUVEAU_ERR("AII wrap unhandled\n");
/*XXX: assumes subc 0 is populated */
- RING_SPACE_CH(fence->channel, 2);
- OUT_RING_CH (fence->channel, 0x00040050);
- OUT_RING_CH (fence->channel, nvfence->sequence);
+ /* Not the way to fence on nv4 */
+ if (nvchan->base.device->chipset >= 0x10) {
+ RING_SPACE_CH(fence->channel, 2);
+ OUT_RING_CH (fence->channel, 0x00040050);
+ OUT_RING_CH (fence->channel, nvfence->sequence);
+ }
if (nvchan->fence_tail) {
nouveau_fence(nvchan->fence_tail)->next = fence;
diff --git a/src/gallium/winsys/drm/nouveau/common/nouveau_winsys.c b/src/gallium/winsys/drm/nouveau/common/nouveau_winsys.c
index 364340e1d3..722694e4a4 100644
--- a/src/gallium/winsys/drm/nouveau/common/nouveau_winsys.c
+++ b/src/gallium/winsys/drm/nouveau/common/nouveau_winsys.c
@@ -100,6 +100,10 @@ nouveau_pipe_create(struct nouveau_context *nv)
return NULL;
switch (chipset & 0xf0) {
+ case 0x00:
+ hws_create = nv04_screen_create;
+ hw_create = nv04_create;
+ break;
case 0x10:
hws_create = nv10_screen_create;
hw_create = nv10_create;