gallium: make p_winsys internal
[mesa.git] / src / gallium / drivers / nv30 / nv30_screen.c
index 910a3c456dd288679b538027f80de1878eae23c0..1fac6d3df831b77379a3a2ce9eec764219ebea53 100644 (file)
@@ -58,6 +58,8 @@ nv30_screen_get_param(struct pipe_screen *pscreen, int param)
                return 0;
        case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
                return 1;
+       case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
+               return 0;
        case NOUVEAU_CAP_HW_VTXBUF:
        case NOUVEAU_CAP_HW_IDXBUF:
                return 1;
@@ -96,7 +98,7 @@ nv30_screen_surface_format_supported(struct pipe_screen *pscreen,
        if (tex_usage & PIPE_TEXTURE_USAGE_RENDER_TARGET) {
                switch (format) {
                case PIPE_FORMAT_A8R8G8B8_UNORM:
-               case PIPE_FORMAT_R5G6B5_UNORM: 
+               case PIPE_FORMAT_R5G6B5_UNORM:
                case PIPE_FORMAT_Z24S8_UNORM:
                case PIPE_FORMAT_Z16_UNORM:
                        return TRUE;
@@ -108,7 +110,7 @@ nv30_screen_surface_format_supported(struct pipe_screen *pscreen,
                case PIPE_FORMAT_A8R8G8B8_UNORM:
                case PIPE_FORMAT_A1R5G5B5_UNORM:
                case PIPE_FORMAT_A4R4G4B4_UNORM:
-               case PIPE_FORMAT_R5G6B5_UNORM: 
+               case PIPE_FORMAT_R5G6B5_UNORM:
                case PIPE_FORMAT_L8_UNORM:
                case PIPE_FORMAT_A8_UNORM:
                case PIPE_FORMAT_I8_UNORM:
@@ -137,19 +139,21 @@ nv30_surface_map(struct pipe_screen *screen, struct pipe_surface *surface,
 
                if (!mt->shadow_tex) {
                        unsigned old_tex_usage = surface->texture->tex_usage;
-                       surface->texture->tex_usage = NOUVEAU_TEXTURE_USAGE_LINEAR;
+                       surface->texture->tex_usage = NOUVEAU_TEXTURE_USAGE_LINEAR |
+                                                     PIPE_TEXTURE_USAGE_DYNAMIC;
                        mt->shadow_tex = screen->texture_create(screen, surface->texture);
                        surface->texture->tex_usage = old_tex_usage;
 
                        assert(mt->shadow_tex->tex_usage & NOUVEAU_TEXTURE_USAGE_LINEAR);
-                       mt->shadow_surface = screen->get_tex_surface
-                       (
-                               screen, mt->shadow_tex,
-                               surface->face, surface->level, surface->zslice,
-                               surface->usage
-                       );
                }
 
+               mt->shadow_surface = screen->get_tex_surface
+               (
+                       screen, mt->shadow_tex,
+                       surface->face, surface->level, surface->zslice,
+                       surface->usage
+               );
+
                surface_to_map = mt->shadow_surface;
        }
        else
@@ -324,7 +328,7 @@ nv30_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *nvws)
        so_data  (so, 3);
        so_method(so, screen->rankine, 0x1450, 1);
        so_data  (so, 0x00030004);
-       
+
        /* NEW */
        so_method(so, screen->rankine, 0x1e98, 1);
        so_data  (so, 0);
@@ -380,4 +384,3 @@ nv30_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *nvws)
 
        return &screen->pipe;
 }
-