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 98d95e94a58d6809a815fb032522316f58dd7f7a..11ca7e80ddbc5c300ff5543bcaf32a755d252ecd 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 b8452e23b1608d90462599dc1e37ca5d83b24c1f..522fb132269900567e83ef3e2a1c2f818199de6f 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 6d64025528f69aa314dabd5b3839321e8d95f5a8..39f2ac1af5c8b770a78281a158b1136269297522 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 e55242fbf7ff0f25272ec353064b43b53b278d5a..f878f81e11f714e581723bd985dcc0d153f69d7a 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 a7f64c6e9e5708a6416c5cc64b5f4e61faf1fc67..679c2ddc6b5fdc1c4ae502c398805accaba8f449 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 1941598c641d653e8cecaf4cb458f60fa45b220a..66e84b689085266d6a9c23c89050a67daf136e3f 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 b30a6c5ad57e6386b71752f3a492be0d5da688fa..88b8fed26cf8ddd6bf1756739d136a1d600e1b81 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 98022809a6c72417420f39e802bf1f59d6e3657f..e5054e34f6b5fa79659fb33a789f08fa880fde03 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 8bf82eb0bc088c299e1db3ae926d8eed8cd6384c..f091779e3b028ed19dff6bcbfba316a4d8c5786b 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 45ebbb8051ba9362d518c4d854ba89ea3d4cdf0a..d664816a0313f300e09efe2affda36e23daaed3e 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 1d758e29e75553980573641a04bb74e3787b36b6..529f57718124bec5ddaee9faf12ab1812c89256c 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);
 }