Francisco Jerez
2010-Feb-02 11:01 UTC
[Nouveau] [RFC] Merge of a reincarnation of the nouveau classic mesa driver.
For a long time the gallium pipe drivers for nvidia fixed function cards (nv0x, nv1x and, to some extent, nv2x) have remained unmaintained and godforsaken -- especially nv0x and nv1x had seen almost no progress since their creation. They've recently grown a classic mesa driver which implements many new features: texturing, hardware-accelerated tnl. However the killer feature is "it actually draws stuff" (and if you're lucky even some simple games at reasonable FPS) so I don't like to consider this a step back. Right now it is located in a git repo here [1], "mesa-next" is the branch I'm proposing to merge. I'll reply myself with the patches affecting core mesa it depends on, to give them more visibility. Of course driver-related comments are welcome too. [1] http://cgit.freedesktop.org/~currojerez/mesa/ configure.ac | 2 +- src/gallium/docs/source/distro.rst | 15 - src/gallium/drivers/nouveau/Makefile | 3 +- src/gallium/drivers/nouveau/nouveau_winsys.h | 18 - src/gallium/drivers/nouveau/nv04_surface_2d.c | 547 +++++++++++++ src/gallium/drivers/nouveau/nv04_surface_2d.h | 37 + src/gallium/drivers/nv04/Makefile | 21 - src/gallium/drivers/nv04/nv04_clear.c | 12 - src/gallium/drivers/nv04/nv04_context.c | 112 --- src/gallium/drivers/nv04/nv04_context.h | 148 ---- src/gallium/drivers/nv04/nv04_fragprog.c | 21 - src/gallium/drivers/nv04/nv04_fragtex.c | 73 -- src/gallium/drivers/nv04/nv04_miptree.c | 146 ---- src/gallium/drivers/nv04/nv04_prim_vbuf.c | 339 -------- src/gallium/drivers/nv04/nv04_screen.c | 222 ----- src/gallium/drivers/nv04/nv04_screen.h | 30 - src/gallium/drivers/nv04/nv04_state.c | 459 ----------- src/gallium/drivers/nv04/nv04_state.h | 72 -- src/gallium/drivers/nv04/nv04_state_emit.c | 246 ------ src/gallium/drivers/nv04/nv04_surface.c | 63 -- src/gallium/drivers/nv04/nv04_surface_2d.c | 547 ------------- src/gallium/drivers/nv04/nv04_surface_2d.h | 37 - src/gallium/drivers/nv04/nv04_transfer.c | 178 ----- src/gallium/drivers/nv04/nv04_vbo.c | 78 -- src/gallium/drivers/nv10/Makefile | 20 - src/gallium/drivers/nv10/nv10_clear.c | 14 - src/gallium/drivers/nv10/nv10_context.c | 298 ------- src/gallium/drivers/nv10/nv10_context.h | 151 ---- src/gallium/drivers/nv10/nv10_fragprog.c | 21 - src/gallium/drivers/nv10/nv10_fragtex.c | 130 --- src/gallium/drivers/nv10/nv10_miptree.c | 165 ---- src/gallium/drivers/nv10/nv10_prim_vbuf.c | 267 ------- src/gallium/drivers/nv10/nv10_screen.c | 208 ----- src/gallium/drivers/nv10/nv10_screen.h | 28 - src/gallium/drivers/nv10/nv10_state.c | 590 -------------- src/gallium/drivers/nv10/nv10_state.h | 140 ---- src/gallium/drivers/nv10/nv10_state_emit.c | 333 -------- src/gallium/drivers/nv10/nv10_surface.c | 63 -- src/gallium/drivers/nv10/nv10_transfer.c | 178 ----- src/gallium/drivers/nv10/nv10_vbo.c | 78 -- src/gallium/drivers/nv20/Makefile | 21 - src/gallium/drivers/nv20/nv20_clear.c | 14 - src/gallium/drivers/nv20/nv20_context.c | 424 ---------- src/gallium/drivers/nv20/nv20_context.h | 150 ---- src/gallium/drivers/nv20/nv20_fragprog.c | 21 - src/gallium/drivers/nv20/nv20_fragtex.c | 130 --- src/gallium/drivers/nv20/nv20_miptree.c | 226 ------ src/gallium/drivers/nv20/nv20_prim_vbuf.c | 440 ---------- src/gallium/drivers/nv20/nv20_screen.c | 204 ----- src/gallium/drivers/nv20/nv20_screen.h | 28 - src/gallium/drivers/nv20/nv20_state.c | 583 -------------- src/gallium/drivers/nv20/nv20_state.h | 140 ---- src/gallium/drivers/nv20/nv20_state_emit.c | 426 ---------- src/gallium/drivers/nv20/nv20_surface.c | 63 -- src/gallium/drivers/nv20/nv20_transfer.c | 178 ----- src/gallium/drivers/nv20/nv20_vbo.c | 79 -- src/gallium/drivers/nv20/nv20_vertprog.c | 841 -------------------- src/gallium/drivers/nv30/nv30_miptree.c | 2 +- src/gallium/drivers/nv30/nv30_screen.h | 2 +- src/gallium/drivers/nv40/nv40_miptree.c | 2 +- src/gallium/drivers/nv40/nv40_screen.h | 2 +- src/gallium/winsys/drm/nouveau/dri/Makefile | 3 - .../winsys/drm/nouveau/drm/nouveau_drm_api.c | 18 - src/gallium/winsys/drm/nouveau/egl/Makefile | 3 - src/gallium/winsys/drm/nouveau/xorg/Makefile | 3 - src/gallium/winsys/g3dvl/nouveau/Makefile | 5 +- src/mesa/drivers/directfb/idirectfbgl_mesa.c | 2 +- src/mesa/drivers/dri/intel/intel_screen.c | 2 +- src/mesa/drivers/dri/nouveau/Makefile | 59 ++ src/mesa/drivers/dri/nouveau/nouveau_bo_state.c | 184 +++++ src/mesa/drivers/dri/nouveau/nouveau_bo_state.h | 107 +++ src/mesa/drivers/dri/nouveau/nouveau_bufferobj.c | 172 ++++ src/mesa/drivers/dri/nouveau/nouveau_bufferobj.h | 39 + src/mesa/drivers/dri/nouveau/nouveau_context.c | 273 +++++++ src/mesa/drivers/dri/nouveau/nouveau_context.h | 105 +++ src/mesa/drivers/dri/nouveau/nouveau_driver.c | 140 ++++ src/mesa/drivers/dri/nouveau/nouveau_driver.h | 89 ++ src/mesa/drivers/dri/nouveau/nouveau_fbo.c | 277 +++++++ src/mesa/drivers/dri/nouveau/nouveau_fbo.h | 51 ++ src/mesa/drivers/dri/nouveau/nouveau_gldefs.h | 263 ++++++ src/mesa/drivers/dri/nouveau/nouveau_render.h | 98 +++ src/mesa/drivers/dri/nouveau/nouveau_render_t.c | 361 +++++++++ src/mesa/drivers/dri/nouveau/nouveau_screen.c | 269 +++++++ src/mesa/drivers/dri/nouveau/nouveau_screen.h | 54 ++ src/mesa/drivers/dri/nouveau/nouveau_span.c | 174 ++++ src/mesa/drivers/dri/nouveau/nouveau_state.c | 532 +++++++++++++ src/mesa/drivers/dri/nouveau/nouveau_state.h | 119 +++ src/mesa/drivers/dri/nouveau/nouveau_surface.c | 81 ++ src/mesa/drivers/dri/nouveau/nouveau_surface.h | 58 ++ src/mesa/drivers/dri/nouveau/nouveau_swtnl_t.c | 354 ++++++++ src/mesa/drivers/dri/nouveau/nouveau_texture.c | 456 +++++++++++ src/mesa/drivers/dri/nouveau/nouveau_texture.h | 49 ++ src/mesa/drivers/dri/nouveau/nouveau_util.h | 176 ++++ src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c | 409 ++++++++++ src/mesa/drivers/dri/nouveau/nv04_context.c | 118 +++ src/mesa/drivers/dri/nouveau/nv04_context.h | 52 ++ src/mesa/drivers/dri/nouveau/nv04_driver.h | 97 +++ src/mesa/drivers/dri/nouveau/nv04_render.c | 212 +++++ src/mesa/drivers/dri/nouveau/nv04_screen.c | 211 +++++ src/mesa/drivers/dri/nouveau/nv04_state_fb.c | 116 +++ src/mesa/drivers/dri/nouveau/nv04_state_frag.c | 261 ++++++ src/mesa/drivers/dri/nouveau/nv04_state_raster.c | 314 ++++++++ src/mesa/drivers/dri/nouveau/nv04_state_tex.c | 162 ++++ src/mesa/drivers/dri/nouveau/nv04_surface.c | 547 +++++++++++++ src/mesa/drivers/dri/nouveau/nv10_context.c | 91 +++ src/mesa/drivers/dri/nouveau/nv10_driver.h | 192 +++++ src/mesa/drivers/dri/nouveau/nv10_render.c | 201 +++++ src/mesa/drivers/dri/nouveau/nv10_screen.c | 364 +++++++++ src/mesa/drivers/dri/nouveau/nv10_state_fb.c | 190 +++++ src/mesa/drivers/dri/nouveau/nv10_state_frag.c | 416 ++++++++++ src/mesa/drivers/dri/nouveau/nv10_state_polygon.c | 126 +++ src/mesa/drivers/dri/nouveau/nv10_state_raster.c | 186 +++++ src/mesa/drivers/dri/nouveau/nv10_state_tex.c | 142 ++++ src/mesa/drivers/dri/nouveau/nv10_state_tnl.c | 514 ++++++++++++ src/mesa/drivers/dri/nouveau/nv20_context.c | 61 ++ src/mesa/drivers/dri/nouveau/nv20_driver.h | 112 +++ src/mesa/drivers/dri/nouveau/nv20_render.c | 225 ++++++ src/mesa/drivers/dri/nouveau/nv20_screen.c | 483 +++++++++++ src/mesa/drivers/dri/nouveau/nv20_state_fb.c | 123 +++ src/mesa/drivers/dri/nouveau/nv20_state_polygon.c | 44 + src/mesa/drivers/dri/nouveau/nv20_state_raster.c | 42 + src/mesa/drivers/dri/nouveau/nv20_state_tex.c | 167 ++++ src/mesa/drivers/dri/nouveau/nv20_state_tnl.c | 396 +++++++++ src/mesa/drivers/dri/radeon/radeon_screen.c | 2 +- src/mesa/drivers/dri/swrast/swrast.c | 2 +- src/mesa/drivers/fbdev/glfbdev.c | 2 +- src/mesa/drivers/windows/gdi/wmesa.c | 2 +- src/mesa/drivers/x11/xm_api.c | 2 +- src/mesa/main/bitset.h | 25 +- src/mesa/main/framebuffer.c | 41 +- src/mesa/main/framebuffer.h | 6 +- src/mesa/state_tracker/st_framebuffer.c | 2 +- src/mesa/vbo/vbo_split_inplace.c | 109 ++-- 133 files changed, 11831 insertions(+), 9598 deletions(-) -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 197 bytes Desc: not available Url : http://lists.freedesktop.org/archives/nouveau/attachments/20100202/3deaf177/attachment-0001.pgp
Keith Whitwell
2010-Feb-02 13:39 UTC
[Nouveau] [Mesa3d-dev] [RFC] Merge of a reincarnation of the nouveau classic mesa driver.
On Tue, 2010-02-02 at 03:01 -0800, Francisco Jerez wrote:> For a long time the gallium pipe drivers for nvidia fixed function cards > (nv0x, nv1x and, to some extent, nv2x) have remained unmaintained and > godforsaken -- especially nv0x and nv1x had seen almost no progress > since their creation. > > They've recently grown a classic mesa driver which implements many new > features: texturing, hardware-accelerated tnl. However the killer > feature is "it actually draws stuff" (and if you're lucky even some > simple games at reasonable FPS) so I don't like to consider this a step > back. > > Right now it is located in a git repo here [1], "mesa-next" is the > branch I'm proposing to merge. I'll reply myself with the patches > affecting core mesa it depends on, to give them more visibility. Of > course driver-related comments are welcome too. > > [1] http://cgit.freedesktop.org/~currojerez/mesa/This looks like an appropriate path forward for this hardware. Gallium hides the things they need to be operating on, and Mesa's driver interface is much closer to the requirements of this era of hardware. Keith
Xavier Chantry
2010-Feb-02 22:53 UTC
[Nouveau] [RFC] Merge of a reincarnation of the nouveau classic mesa driver.
On Tue, Feb 2, 2010 at 12:01 PM, Francisco Jerez <currojerez at riseup.net> wrote:> For a long time the gallium pipe drivers for nvidia fixed function cards > (nv0x, nv1x and, to some extent, nv2x) have remained unmaintained and > godforsaken -- especially nv0x and nv1x had seen almost no progress > since their creation. > > They've recently grown a classic mesa driver which implements many new > features: texturing, hardware-accelerated tnl. However the killer > feature is "it actually draws stuff" (and if you're lucky even some > simple games at reasonable FPS) so I don't like to consider this a step > back. > > Right now it is located in a git repo here [1], "mesa-next" is the > branch I'm proposing to merge. I'll reply myself with the patches > affecting core mesa it depends on, to give them more visibility. Of > course driver-related comments are welcome too. > > [1] http://cgit.freedesktop.org/~currojerez/mesa/ >I did some testing of a few opengl games, just for fun and by curiosity. Card is nv25 (64mb vram). - works perfectly openarena tremulous xmoto frozen-bubble hedgewars neverball supertux2 - works with some problems * teeworlds : perfect after a hack to workaround this issue : nv04_surface.c:246: nv04_surface_copy_swizzle: Assertion `!(dst->offset & 63)' failed. * foobillard : works but this error shows up : Mesa: User error: GL_STACK_OVERFLOW in glPushMatrix(mode=GL_TEXTURE, unit=0) * etracer : first few seconds are very very slow, then its still very slow compared to all the other games. Also some texture problems after a recent change. * bzflag : full screen mode broken but window mode ok. Fonts look weird (apparently some random corruptions) - fails glest : needs mesa 1.3 I think it's pretty good overall :)
Reasonably Related Threads
- [PATCH] nv04-nv40: Rewrite and unify miptree and transfer code (v2)
- [PATCH] nv04-nv40: Rewrite and unify miptree and transfer code
- [PATCH] Print NOUVEAU_NO_SWIZZLE and NOUVEAU_NO_TRANSFER messages only once
- [PATCH] drm/nouveau: allow nv04/nv50/nvc0+ parts of the driver to be separated
- [PATCH 1/3] nv50: remove vtxbuf stateobject after a referenced vtxbuf is mapped