On Sat, 2010-01-30 at 04:06 -0800, Corbin Simpson wrote:
> Handful of random things bugging me.

Bellow some answers for the things I know enough to comment.

> 1) Team Fortress 2 (and probably other Source games, haven't really
> checked) request some fairly large VBOs and indexbufs, beyond what I
> can provide. Is there any good example code on how to use
> translate/indices to slice up buffers for multiple render runs?

Draw module has some code to break large VBOs. But I don't know how to
set it up so that it does that without doing vertex processing though.
Keith's might help you with that.

> 3) Is there still interest in the translate helper I proposed a couple
> weeks ago? It would take a list of "safe" formats, a list of VBO
> elements, and a list of VBOs (corresponding), and return a list of VBO
> elements and VBOs that only contain those "safe" formats. State
> trackers would call a pipe_screen (or pipe_context?) method with just
> the VBOs and elements, and it would fix them up without exposing the
> list of safe formats.

I've missed that mail. I've read the thread and I agree with Keith's
reply. In summary, there are more than one way to skin this cat but your
proposed helper seems an useful thing to have.

> 5) How const is const for CSO? e.g. r300_state.c:498, we're not
> copying pipe_framebuffer_state but just the pointer. It appears to
> work, but is it actually safe? 

The const means the driver cannot change it. Not that it won't change.

The long answer is depends on how the driver is implemented and commands
batched. The next time the set_framebuffer_state is called the previous
object may have been destroyed/modified, so if you have internal
references to it they would cause segfault. But if by the time that
happens you no longer have references to it -- e.g. you just have
references to the BOs that hold the frambuffer storage -- then it would
work fine.

Short answer is -- it is better to just make a local copy.

> Also, on the topic of framebuffers, is
> it okay to refuse to render if no MRTs or Z buffer are present?

Not really. At least not as it stands. If the hardware requires these
then they'll need to be created internally by the pipe driver.

We could add a caps for this but I see no point for it, since it's so
easy to create a dummy framebuffer internally.

> I think that's it for now. Sorry for all the questions, but I'm really
> starting to get a good handle on the hardware and interface, and I'm
> ready to start beating the classic driver in serious benchmarks; I
> think that r300's probably the most mature driver alongside nv50 and
> maybe nv40.

That's great to hear. 

It has been really nice to see gallium driver development lately on so
many different hardware, and with that seeing gallium interface more
polished to abstract well more hardware. 

I think you've been doing a great work not only with the driver
development, but also making the right questions, and documenting
interfaces.

Jose


------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to