Merge branch 'mesa_7_7_branch'
[mesa.git] / src / gallium / drivers / nv10 / nv10_screen.c
index b03c291f9d92d10d23d770b9a3a56a5aee0bd7d2..69a6dab866a6f3c2c6e0f74f0672f2fa6cd92b7e 100644 (file)
@@ -15,8 +15,6 @@ nv10_screen_get_param(struct pipe_screen *screen, int param)
                return 0;
        case PIPE_CAP_GLSL:
                return 0;
-       case PIPE_CAP_S3TC:
-               return 0;
        case PIPE_CAP_ANISOTROPIC_FILTER:
                return 1;
        case PIPE_CAP_POINT_SPRITE:
@@ -35,6 +33,10 @@ nv10_screen_get_param(struct pipe_screen *screen, int param)
                return 12;
        case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
                return 0;
+       case PIPE_CAP_TGSI_CONT_SUPPORTED:
+               return 0;
+       case PIPE_CAP_BLEND_EQUATION_SEPARATE:
+               return 0;
        case NOUVEAU_CAP_HW_VTXBUF:
        case NOUVEAU_CAP_HW_IDXBUF:
                return 0;
@@ -74,7 +76,15 @@ nv10_screen_is_format_supported(struct pipe_screen *screen,
                switch (format) {
                case PIPE_FORMAT_A8R8G8B8_UNORM:
                case PIPE_FORMAT_R5G6B5_UNORM: 
+                        return TRUE;
+               default:
+                        break;
+               }
+       } else
+       if (tex_usage & PIPE_TEXTURE_USAGE_DEPTH_STENCIL) {
+               switch (format) {
                case PIPE_FORMAT_Z24S8_UNORM:
+               case PIPE_FORMAT_Z24X8_UNORM:
                case PIPE_FORMAT_Z16_UNORM:
                        return TRUE;
                default:
@@ -105,6 +115,9 @@ nv10_screen_destroy(struct pipe_screen *pscreen)
 
        nouveau_notifier_free(&screen->sync);
        nouveau_grobj_free(&screen->celsius);
+       nv04_surface_2d_takedown(&screen->eng2d);
+
+       nouveau_screen_fini(&screen->base);
 
        FREE(pscreen);
 }
@@ -167,7 +180,6 @@ nv10_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
                NOUVEAU_ERR("Error creating 3D object: %d\n", ret);
                return FALSE;
        }
-       BIND_RING(chan, screen->celsius, 7);
 
        /* 2D engine setup */
        screen->eng2d = nv04_surface_2d_init(&screen->base);