nouveau: hand nouveau_winsys in with pipe_screen init
authorBen Skeggs <skeggsb@gmail.com>
Fri, 29 Feb 2008 11:54:40 +0000 (22:54 +1100)
committerBen Skeggs <skeggsb@gmail.com>
Fri, 29 Feb 2008 11:54:40 +0000 (22:54 +1100)
src/gallium/drivers/nouveau/nouveau_winsys.h
src/gallium/drivers/nv30/nv30_context.c
src/gallium/drivers/nv30/nv30_screen.c
src/gallium/drivers/nv30/nv30_screen.h
src/gallium/drivers/nv40/nv40_context.c
src/gallium/drivers/nv40/nv40_screen.c
src/gallium/drivers/nv40/nv40_screen.h
src/gallium/drivers/nv50/nv50_context.c
src/gallium/drivers/nv50/nv50_screen.c
src/gallium/drivers/nv50/nv50_screen.h
src/gallium/winsys/dri/nouveau/nouveau_winsys.c

index 98d95e9..11ca7e8 100644 (file)
@@ -50,21 +50,24 @@ struct nouveau_winsys {
 };
 
 extern struct pipe_screen *
-nv30_screen_create(struct pipe_winsys *ws, unsigned chipset);
+nv30_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *,
+                  unsigned chipset);
 
 extern struct pipe_context *
-nv30_create(struct pipe_screen *, struct nouveau_winsys *);
+nv30_create(struct pipe_screen *);
 
 extern struct pipe_screen *
-nv40_screen_create(struct pipe_winsys *ws, unsigned chipset);
+nv40_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *,
+                  unsigned chipset);
 
 extern struct pipe_context *
-nv40_create(struct pipe_screen *, struct nouveau_winsys *);
+nv40_create(struct pipe_screen *);
 
 extern struct pipe_screen *
-nv50_screen_create(struct pipe_winsys *ws, unsigned chipset);
+nv50_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *,
+                  unsigned chipset);
 
 extern struct pipe_context *
-nv50_create(struct pipe_screen *, struct nouveau_winsys *);
+nv50_create(struct pipe_screen *);
 
 #endif
index b8452e2..522fb13 100644 (file)
@@ -265,9 +265,10 @@ nv30_init_hwctx(struct nv30_context *nv30, int rankine_class)
 #define NV35TCL_CHIPSET_3X_MASK 0x000001e0
 
 struct pipe_context *
-nv30_create(struct pipe_screen *screen, struct nouveau_winsys *nvws)
+nv30_create(struct pipe_screen *screen)
 {
        struct pipe_winsys *pipe_winsys = screen->winsys;
+       struct nouveau_winsys *nvws = nv30_screen(screen)->nvws;
        unsigned chipset = nv30_screen(screen)->chipset;
        struct nv30_context *nv30;
        int rankine_class = 0, ret;
index 6d64025..39f2ac1 100644 (file)
@@ -125,7 +125,8 @@ nv30_screen_destroy(struct pipe_screen *screen)
 }
 
 struct pipe_screen *
-nv30_screen_create(struct pipe_winsys *winsys, unsigned chipset)
+nv30_screen_create(struct pipe_winsys *winsys, struct nouveau_winsys *nvws,
+                  unsigned chipset)
 {
        struct nv30_screen *nv30screen = CALLOC_STRUCT(nv30_screen);
 
@@ -133,6 +134,7 @@ nv30_screen_create(struct pipe_winsys *winsys, unsigned chipset)
                return NULL;
 
        nv30screen->chipset = chipset;
+       nv30screen->nvws = nvws;
 
        nv30screen->screen.winsys = winsys;
 
index e55242f..f878f81 100644 (file)
@@ -5,6 +5,8 @@
 
 struct nv30_screen {
        struct pipe_screen screen;
+
+       struct nouveau_winsys *nvws;
        unsigned chipset;
 };
 
@@ -14,7 +16,4 @@ nv30_screen(struct pipe_screen *screen)
        return (struct nv30_screen *)screen;
 }
 
-extern struct pipe_screen *
-nv30_screen_create(struct pipe_winsys *winsys, unsigned chipset);
-
 #endif
index a7f64c6..679c2dd 100644 (file)
@@ -196,11 +196,12 @@ nv40_destroy(struct pipe_context *pipe)
 }
 
 struct pipe_context *
-nv40_create(struct pipe_screen *pscreen, struct nouveau_winsys *nvws)
+nv40_create(struct pipe_screen *pscreen)
 {
        struct pipe_winsys *ws = pscreen->winsys;
        struct nv40_context *nv40;
        unsigned chipset = nv40_screen(pscreen)->chipset;
+       struct nouveau_winsys *nvws = nv40_screen(pscreen)->nvws;
 
        nv40 = CALLOC(1, sizeof(struct nv40_context));
        if (!nv40)
index 1941598..66e84b6 100644 (file)
@@ -125,7 +125,8 @@ nv40_screen_destroy(struct pipe_screen *pscreen)
 }
 
 struct pipe_screen *
-nv40_screen_create(struct pipe_winsys *ws, unsigned chipset)
+nv40_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *nvws,
+                  unsigned chipset)
 {
        struct nv40_screen *screen = CALLOC_STRUCT(nv40_screen);
 
@@ -133,6 +134,7 @@ nv40_screen_create(struct pipe_winsys *ws, unsigned chipset)
                return NULL;
 
        screen->chipset = chipset;
+       screen->nvws = nvws;
 
        screen->pipe.winsys = ws;
        screen->pipe.destroy = nv40_screen_destroy;
index b30a6c5..88b8fed 100644 (file)
@@ -5,6 +5,8 @@
 
 struct nv40_screen {
        struct pipe_screen pipe;
+
+       struct nouveau_winsys *nvws;
        unsigned chipset;
 };
 
@@ -14,7 +16,4 @@ nv40_screen(struct pipe_screen *screen)
        return (struct nv40_screen *)screen;
 }
 
-extern struct pipe_screen *
-nv40_screen_create(struct pipe_winsys *winsys, unsigned chipset);
-
 #endif
index 9802280..e5054e3 100644 (file)
@@ -56,9 +56,10 @@ nv50_init_hwctx(struct nv50_context *nv50, int tesla_class)
 #define GRCLASS5097_CHIPSETS 0x00000000
 #define GRCLASS8297_CHIPSETS 0x00000010
 struct pipe_context *
-nv50_create(struct pipe_screen *pscreen, struct nouveau_winsys *nvws)
+nv50_create(struct pipe_screen *pscreen)
 {
        struct pipe_winsys *pipe_winsys = pscreen->winsys;
+       struct nouveau_winsys *nvws = nv50_screen(pscreen)->nvws;
        unsigned chipset = nv50_screen(pscreen)->chipset;
        struct nv50_context *nv50;
        int tesla_class, ret;
index 8bf82eb..f091779 100644 (file)
@@ -90,7 +90,8 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
 }
 
 struct pipe_screen *
-nv50_screen_create(struct pipe_winsys *ws, unsigned chipset)
+nv50_screen_create(struct pipe_winsys *ws, struct nouveau_winsys *nvws,
+                  unsigned chipset)
 {
        struct nv50_screen *screen = CALLOC_STRUCT(nv50_screen);
 
@@ -98,6 +99,7 @@ nv50_screen_create(struct pipe_winsys *ws, unsigned chipset)
                return NULL;
 
        screen->chipset = chipset;
+       screen->nvws = nvws;
 
        screen->pipe.winsys = ws;
 
index 45ebbb8..d664816 100644 (file)
@@ -5,6 +5,8 @@
 
 struct nv50_screen {
        struct pipe_screen pipe;
+
+       struct nouveau_winsys *nvws;
        unsigned chipset;
 };
 
@@ -14,7 +16,4 @@ nv50_screen(struct pipe_screen *screen)
        return (struct nv50_screen *)screen;
 }
 
-extern struct pipe_screen *
-nv50_screen_create(struct pipe_winsys *winsys, unsigned chipset);
-
 #endif
index 1d758e2..529f577 100644 (file)
@@ -73,9 +73,9 @@ nouveau_pipe_create(struct nouveau_context *nv)
 {
        struct nouveau_winsys *nvws = CALLOC_STRUCT(nouveau_winsys);
        struct pipe_screen *(*hws_create)(struct pipe_winsys *,
+                                         struct nouveau_winsys *,
                                          unsigned chipset);
-       struct pipe_context *(*hw_create)(struct pipe_screen *,
-                                         struct nouveau_winsys *);
+       struct pipe_context *(*hw_create)(struct pipe_screen *);
        struct pipe_winsys *ws;
        struct pipe_screen *pscreen;
 
@@ -126,7 +126,7 @@ nouveau_pipe_create(struct nouveau_context *nv)
        nvws->surface_fill      = nouveau_pipe_surface_fill;
 
        ws = nouveau_create_pipe_winsys(nv);
-       pscreen = hws_create(ws, nv->chipset);
-       return hw_create(pscreen, nvws);
+       pscreen = hws_create(ws, nvws, nv->chipset);
+       return hw_create(pscreen);
 }