Christoph Bumiller
2010-Mar-10 14:33 UTC
[Nouveau] nv50/gallium: a few comments about latest patches
Just wanted to communicate some thoughts I had while reading the diffs, even thought I didn't have the time to look at everything in detail yet. - nv50: use relocs rather than re-uploading TIC all the time It's nice that we can write relocs to arbitrary buffers, and it's much less work than emitting the whole state object obviously. Just, you forgot the card won't care until you write NV50TCL_TIC_FLUSH. I was waiting for our new memory manager to alleviate the problem. - nv50: rework state emission At some point we talked about getting rid of some of these non constant stateobjs, it doesn't really make much sense to allocate, emit, destroy them all the time, except for multiple contexts maybe; and even then for some state like stencil ref or blend color just using RING directly still seems to be better to me. Anyway, the code became nicer here :-) - nv50: always emit dummy relocs for all still-referenced buffers flush notify took care of that ... - nv50: remove horrific abuse of nouveau_channel.flush_notify Horrific ? The card doesn't complain about relocating between Begin/End, and I think I even remember testing that they take effect immediately. - nv50: move magic 0x142c stuff to after state emission It's not too magical, it's used when vertex buffers have been modified, and when you emit an OpenGL fence, for some reason ... - nv50: make use of scissor enable/disable method This isn't actually scissors but a VIEWPORT_HORIZ/VERT, it doesn't affect CLEAR_BUFFERS. VIEWPORT_HORIZ/VERT is scissors, and you can't turn that off. The blob never turns off 0xe00. - nv50: the whole vertex emission rewrite ... I've never seen any indication that index emission has to be split in some way if you have to use multiple push buffers. But I suspect you'll use that util to lift the edge flag to new heights, not relegating it to the slow push path ... The instance_init thing is done too often for my taste now. Regards, Christoph
Apparently Analagous Threads
- [PATCH v2 1/3] nvc0: implement multiple viewports/scissors, enable ARB_viewport_array
- [PATCH 1/3] nvc0: implement multiple viewports/scissors, enable ARB_viewport_array
- [Mesa-dev] [PATCH 02/12] nv50: setup scissors on clear_render_target/depth_stencil
- [PATCH v2 0/3] ARB_viewport_array for nvc0
- [libdrm PATCH] nouveau: disable flush_notify on channel_free