From: Keith W. <ke...@va...> - 2000-12-26 05:10:50
|
I've just committed the first iteration of my reworked software tnl module. The goals of this work are to improve the clarity, flexibility and performance of the t&l module, particularly with regard to driving cards with partial hardware support for the opengl pipeline. Some highlights of the change: - tnl pipeline mechanism completely reworked. - tnl vertex buffer recast as a struct of pointers with no storage - tnl pipeline stages become black boxes, manage their own storage - cva and immediate data handled on the same pipeline and vertex buffer transparently - major cleanup of cva code (try and find it...) - rework of immediate-mode vertex-copying and fixup - copy *untransformed* data only - avoid some unnecessary fixup on immediate path - rework of DrawArrays/DrawElements/DrawRangeElements per new pipeline code. - rework of core mesa statechange operations to try and avoid vertex flushing (disabled in this commit). - lots of other cleanup in tnl. Almost every file in tnl has been reworked, renamed or removed... There is a new module 'array_cache' to manage translations of client data to formats understandable by 'tnl' as well as any driver-supplied tranformation code. This is a large change, and I am aware of at least a few outstanding bugs: - wireframe clipping is wrong. - demos/fire gives odd looking trees - some performance issues remaining (I do a lot of unnecessary operations at the moment for debugging) I've tested only against the Mesa demos so far, so I'm interested to hear how this works elsewhere. Don't be too suprised if you see some breakages; consider this a checkpoint rather than anything final. In addition I've got a few items left on the todo list: - restore support for driver supplied begin/end engines (simple) - restore the fx fastpath as an alternate render pipeline stage. - lots more testing, including glean and conformance - compile better quality display lists. Anyway, enjoy... Keith |