-
Notifications
You must be signed in to change notification settings - Fork 148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tracking issue: Documenting Vello's architecture #488
Comments
This is a great recap and summary of the architecture, but we should also talk about how we will make the documentation available to the users and help them accomplish their tasks. "Who is our customer?" for this documentation. I 100% agree the blogs are not good documentation. That being said, I also want to be candid and say probably 1% of people using Vello have a desire to contribute. Most people want to use vello, not learn it. Similarly, those needing to use wgpu/vulkan don't care about how the graphics calls translate to machine instructions. These areas of focus seem more interesting:
I don't think it would be too hard to get off the ground with something like docusaurus. |
I mean, this is very much a "I don't have time to do this, anyone else feel free to" post. I do hope it inspires someone (or even myself in the future) to go and do the thing. If you get enough momentum to get it off the ground, I'd be super grateful. |
Any thoughts in particular? Beyond the general "clone the project, run the tests, don't harass the maintainers" advice? |
I feel like documenting the concepts behind Vello from a user perspective would be useful. As a user I don't need to know about what a sum prefix or a stack monoid is, but I do want to know what a |
Nothing in particular there. Just that we should be focusing on the customer stories, like Nico said: "As a user..." e.g. "How can I get involved contributing? How can I draw a triangle or curve? How can I render an SVG?" and go from there, rather than trying to explain the universe. So to be clear, I'm not against explaining what a prefix sum or a stack monoid is, but that should be tucked away in "extra reading", not part of core tutorial/documentation. |
I've seen your feedback and I'm going to try to make time soon to address it. I think your note around the density of arrows is valid. Raph and I have discussed making different level-of-detail versions of the diagram and I think that's worth doing (I'll start with this and adding a legend). The current diagram is intentionally laid out to fully capture the data flow between the architecture stages and prioritizes serving as a detailed map, and I would like to keep it that way. I think your other comments about the visual direction of the flow can be addressed by adding different lower LOD versions, derived from the bigger diagram.
I agree, and I think many of these can be in Wiki pages under this repository. I wrote some of this documentation before while adding the vello engine definitions in Skia. I think I can adapt much of that into a wiki page (or some markdown) to accompany the diagram. Having that documentation is important for those who may want to contribute to the guts of Vello or build a custom engine with the shaders and encoding crates. I'd be happy to contribute to this as much as possible. I also agree with @nicoburns and @simbleau that the project really needs some sort of user guide / documentation. |
For the record, I'd like a dedicated site hosted on a static site generator like Docusaurus over GitHub Wiki. |
I think the Linebender wiki would be the obvious place for this to go |
In the process of the 0.1 release, I've written an ARCHITECTURE.md document. However, while that document lists files and resources, it only skims the conceptual architecture of Vello.
Right now, as far as I'm aware, the best resources for learning about Vello (besides reading the code and asking questions on Zulip) are the Vello pipeline diagram and the docs page listing Raph's blog articles.
The diagram
I've written my feedback to the diagram in a zulip thread:
I think this feedback still stands.
Overall, a better architecture diagram could be a great launching point for a documentation effort; but of course, that's easier said than done.
The blog articles
Our doc page mentions these articles about Vello:
And these articles about GPU compute:
My recap of the Vello articles
In chronological order:
2D Graphics on Modern GPU
piet-gpu progress report
A sort-middle architecture for 2D graphics
Fast 2D rendering on GPU
piet-gpu progress: clipping
Requiem for piet-gpu-hal
My recap of the posts on GPU compute
In chronological order:
Prefix sum on Vulkan
The stack monoid
The stack monoid revisited
Prefix sum on portable compute shaders
These blog posts aren't great documentation
A lot of these articles explore Vulkan, Metal, memory models, the limitations of such and such platform, etc, in a messy way. They overlap and cover designs we moved on from. They reflect Raph's thought process as he was trying different things in sequence and recording why they didn't work, and his understanding solidified.
In particular, there are three areas where these articles are not ideal as documentation:
My ideal documentation
Ideally, I'd like our documentation to include:
Obviously this is easier said than done.
Any incremental work that gets our documentation closer to that state would be very welcome.
The text was updated successfully, but these errors were encountered: