diff options
Diffstat (limited to 'src/gallium/drivers/nv04/nv04_surface_2d.c')
-rw-r--r-- | src/gallium/drivers/nv04/nv04_surface_2d.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/gallium/drivers/nv04/nv04_surface_2d.c b/src/gallium/drivers/nv04/nv04_surface_2d.c index e8fd3166ab8..3c8257ad256 100644 --- a/src/gallium/drivers/nv04/nv04_surface_2d.c +++ b/src/gallium/drivers/nv04/nv04_surface_2d.c @@ -437,13 +437,17 @@ nv04_surface_2d_init(struct nouveau_winsys *nvws) return NULL; } - if (chan->device->chipset < 0x10) { - class = NV04_SCALED_IMAGE_FROM_MEMORY; - } else - if (chan->device->chipset < 0x40) { - class = NV10_SCALED_IMAGE_FROM_MEMORY; - } else { + switch (chan->device->chipset & 0xf0) { + case 0x30: + class = NV30_SCALED_IMAGE_FROM_MEMORY; + break; + case 0x40: + case 0x60: class = NV40_SCALED_IMAGE_FROM_MEMORY; + break; + default: + class = NV04_SCALED_IMAGE_FROM_MEMORY; + break; } ret = nouveau_grobj_alloc(chan, handle++, class, &ctx->sifm); |