nv30, nv40: unify nv[34]0_context.c
authorLuca Barbieri <luca@luca-barbieri.com>
Sun, 21 Feb 2010 13:40:32 +0000 (14:40 +0100)
committerYounes Manton <younes.m@gmail.com>
Mon, 15 Mar 2010 04:03:03 +0000 (00:03 -0400)
They are now almost identical, except for nv30 vs nv40 fragtex
initialization.

src/gallium/drivers/nv30/Makefile
src/gallium/drivers/nv40/Makefile
src/gallium/drivers/nv40/nv40_context.c [deleted file]
src/gallium/drivers/nvfx/Makefile
src/gallium/drivers/nvfx/nvfx_context.c [moved from src/gallium/drivers/nv30/nv30_context.c with 90% similarity]
src/gallium/drivers/nvfx/nvfx_context.h
src/gallium/drivers/nvfx/nvfx_screen.c

index ef3ce7e..0a20de9 100644 (file)
@@ -4,7 +4,6 @@ include $(TOP)/configs/current
 LIBNAME = nv30
 
 C_SOURCES = \
-       nv30_context.c \
        nv30_fragtex.c \
        nv30_state.c
 
index a37446d..6e76451 100644 (file)
@@ -4,7 +4,6 @@ include $(TOP)/configs/current
 LIBNAME = nv40
 
 C_SOURCES = \
-       nv40_context.c \
        nv40_fragtex.c \
        nv40_state.c
 
diff --git a/src/gallium/drivers/nv40/nv40_context.c b/src/gallium/drivers/nv40/nv40_context.c
deleted file mode 100644 (file)
index 5a52642..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#include "draw/draw_context.h"
-#include "pipe/p_defines.h"
-
-#include "nvfx_context.h"
-#include "nvfx_screen.h"
-
-static void
-nv40_flush(struct pipe_context *pipe, unsigned flags,
-          struct pipe_fence_handle **fence)
-{
-       struct nvfx_context *nvfx = nvfx_context(pipe);
-       struct nvfx_screen *screen = nvfx->screen;
-       struct nouveau_channel *chan = screen->base.channel;
-       struct nouveau_grobj *eng3d = screen->eng3d;
-
-       if (flags & PIPE_FLUSH_TEXTURE_CACHE) {
-               BEGIN_RING(chan, eng3d, 0x1fd8, 1);
-               OUT_RING  (chan, 2);
-               BEGIN_RING(chan, eng3d, 0x1fd8, 1);
-               OUT_RING  (chan, 1);
-       }
-
-       FIRE_RING(chan);
-       if (fence)
-               *fence = NULL;
-}
-
-static void
-nv40_destroy(struct pipe_context *pipe)
-{
-       struct nvfx_context *nvfx = nvfx_context(pipe);
-       unsigned i;
-
-       for (i = 0; i < NVFX_STATE_MAX; i++) {
-               if (nvfx->state.hw[i])
-                       so_ref(NULL, &nvfx->state.hw[i]);
-       }
-
-       if (nvfx->draw)
-               draw_destroy(nvfx->draw);
-       FREE(nvfx);
-}
-
-struct pipe_context *
-nv40_create(struct pipe_screen *pscreen, void *priv)
-{
-       struct nvfx_screen *screen = nvfx_screen(pscreen);
-       struct pipe_winsys *ws = pscreen->winsys;
-       struct nvfx_context *nvfx;
-       struct nouveau_winsys *nvws = screen->nvws;
-
-       nvfx = CALLOC(1, sizeof(struct nvfx_context));
-       if (!nvfx)
-               return NULL;
-       nvfx->screen = screen;
-
-       nvfx->nvws = nvws;
-
-       nvfx->pipe.winsys = ws;
-       nvfx->pipe.priv = priv;
-       nvfx->pipe.screen = pscreen;
-       nvfx->pipe.destroy = nv40_destroy;
-       nvfx->pipe.draw_arrays = nvfx_draw_arrays;
-       nvfx->pipe.draw_elements = nvfx_draw_elements;
-       nvfx->pipe.clear = nvfx_clear;
-       nvfx->pipe.flush = nv40_flush;
-
-       nvfx->pipe.is_texture_referenced = nouveau_is_texture_referenced;
-       nvfx->pipe.is_buffer_referenced = nouveau_is_buffer_referenced;
-
-       screen->base.channel->user_private = nvfx;
-       screen->base.channel->flush_notify = nvfx_state_flush_notify;
-
-       nvfx->is_nv4x = screen->is_nv4x;
-
-       nvfx_init_query_functions(nvfx);
-       nvfx_init_surface_functions(nvfx);
-       nvfx_init_state_functions(nvfx);
-       nvfx_init_transfer_functions(nvfx);
-
-       /* Create, configure, and install fallback swtnl path */
-       nvfx->draw = draw_create();
-       draw_wide_point_threshold(nvfx->draw, 9999999.0);
-       draw_wide_line_threshold(nvfx->draw, 9999999.0);
-       draw_enable_line_stipple(nvfx->draw, FALSE);
-       draw_enable_point_sprites(nvfx->draw, FALSE);
-       draw_set_rasterize_stage(nvfx->draw, nvfx_draw_render_stage(nvfx));
-
-       return &nvfx->pipe;
-}
index e2c24eb..aa03a15 100644 (file)
@@ -4,6 +4,7 @@ include $(TOP)/configs/current
 LIBNAME = nvfx
 
 C_SOURCES = \
+       nvfx_context.c \
        nvfx_clear.c \
        nvfx_draw.c \
        nvfx_fragprog.c \
similarity index 90%
rename from src/gallium/drivers/nv30/nv30_context.c
rename to src/gallium/drivers/nvfx/nvfx_context.c
index 7e3fd83..fc3cbdb 100644 (file)
@@ -5,7 +5,7 @@
 #include "nvfx_screen.h"
 
 static void
-nv30_flush(struct pipe_context *pipe, unsigned flags,
+nvfx_flush(struct pipe_context *pipe, unsigned flags,
           struct pipe_fence_handle **fence)
 {
        struct nvfx_context *nvfx = nvfx_context(pipe);
@@ -26,7 +26,7 @@ nv30_flush(struct pipe_context *pipe, unsigned flags,
 }
 
 static void
-nv30_destroy(struct pipe_context *pipe)
+nvfx_destroy(struct pipe_context *pipe)
 {
        struct nvfx_context *nvfx = nvfx_context(pipe);
        unsigned i;
@@ -42,7 +42,7 @@ nv30_destroy(struct pipe_context *pipe)
 }
 
 struct pipe_context *
-nv30_create(struct pipe_screen *pscreen, void *priv)
+nvfx_create(struct pipe_screen *pscreen, void *priv)
 {
        struct nvfx_screen *screen = nvfx_screen(pscreen);
        struct pipe_winsys *ws = pscreen->winsys;
@@ -59,11 +59,11 @@ nv30_create(struct pipe_screen *pscreen, void *priv)
        nvfx->pipe.winsys = ws;
        nvfx->pipe.screen = pscreen;
        nvfx->pipe.priv = priv;
-       nvfx->pipe.destroy = nv30_destroy;
+       nvfx->pipe.destroy = nvfx_destroy;
        nvfx->pipe.draw_arrays = nvfx_draw_arrays;
        nvfx->pipe.draw_elements = nvfx_draw_elements;
        nvfx->pipe.clear = nvfx_clear;
-       nvfx->pipe.flush = nv30_flush;
+       nvfx->pipe.flush = nvfx_flush;
 
        nvfx->pipe.is_texture_referenced = nouveau_is_texture_referenced;
        nvfx->pipe.is_buffer_referenced = nouveau_is_buffer_referenced;
index 46cc736..0bd37a7 100644 (file)
@@ -198,13 +198,9 @@ extern struct nvfx_state_entry nvfx_state_zsa;
 extern void nvfx_init_query_functions(struct nvfx_context *nvfx);
 extern void nvfx_init_surface_functions(struct nvfx_context *nvfx);
 
-/* nv30_context.c */
+/* nvfx_context.c */
 struct pipe_context *
-nv30_create(struct pipe_screen *pscreen, void *priv);
-
-/* nv40_context.c */
-struct pipe_context *
-nv40_create(struct pipe_screen *pscreen, void *priv);
+nvfx_create(struct pipe_screen *pscreen, void *priv);
 
 /* nvfx_clear.c */
 extern void nvfx_clear(struct pipe_context *pipe, unsigned buffers,
index 0c906ec..8138715 100644 (file)
@@ -208,7 +208,6 @@ nvfx_screen_destroy(struct pipe_screen *pscreen)
 
 static void nv30_screen_init(struct nvfx_screen *screen, struct nouveau_stateobj* so)
 {
-       screen->base.base.context_create = nv30_create;
        int i;
 
        /* TODO: perhaps we should do some of this on nv40 too? */
@@ -268,8 +267,6 @@ static void nv30_screen_init(struct nvfx_screen *screen, struct nouveau_stateobj
 
 static void nv40_screen_init(struct nvfx_screen *screen, struct nouveau_stateobj* so)
 {
-       screen->base.base.context_create = nv40_create;
-
        so_method(so, screen->eng3d, NV40TCL_DMA_COLOR2, 2);
        so_data  (so, screen->base.channel->vram->handle);
        so_data  (so, screen->base.channel->vram->handle);
@@ -325,6 +322,7 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
        pscreen->get_param = nvfx_screen_get_param;
        pscreen->get_paramf = nvfx_screen_get_paramf;
        pscreen->is_format_supported = nvfx_screen_surface_format_supported;
+       pscreen->context_create = nvfx_create;
 
        switch (dev->chipset & 0xf0) {
        case 0x30: