Week 1: February 01 - 04
- Philipp suggested that I try triaging on a bi-weekly basis. So the first week will be a development week and the second week will be a triaging week.
- Started working the base components for the viewport compositor.
- Worked on the compositor compiler that computes the optimal evaluation schedule of the node tree.
- Worked on the public interface of node execution methods, the compositor context, and how nodes might compute their output.
- Worked on a texture pool for intermediate texture allocation and pooling.
- Worked on the compositor evaluator that evaluates the node tree using the aforementioned components.
- Worked on a minimal implementation of some nodes for testing purposes.
- Some of the work was pushed to the
temp-viewport-compositor-compilerbranch, though it doesn't do anything user-facing at the moment.
Week 2: February 07 - 11
- Involved in 157 reports.
Continue working on the viewport compositor.
Week 3: February 14 - 18
- Finished most of the essential features needed by the evaluator. Only handing of different input sizes and transforms is missing.
- Next we either start implementing nodes and their execution interface or work on the GPUMaterial-based node consolidation optimizations.
- Most of the work is in the
Week 4: February 21 - 25
- Involved in 124 reports.
Continue working on the viewport compositor.
Week 5: February 28 - March 4
- Reworked the evaluator to have a clear separation between different stages, allowing more granular caching and fit the engine API better.
- Added support for infinite canvas compositing.
- Added support for handing of different and arbitrary sizes of inputs in operations.
- Implemented transformation operations.
Week 6: March 7 - 11
- Involved in 206 reports.
Profiling and optimization of viewport compositor.
Week 7: March 14 - 18
- Alleviate redundant allocations by doing lazy result allocation.
- Reduce unnecessary result copies when an operation doesn't process its inputs using result pass-through.
- Store single values results in textures for more portable shaders.
- Added default input processors.
- Worked on the GPU material compiler and the needed changes in the GPU module.
Week 8: March 21 - 25
- Involved in 185 reports.
Finish the GPU material compiler started last week and implement more nodes.
Week 9: March 28 - April 1
- Finished the GPU material compiler and ported over existing node.
- Started implementing nodes again, currently at about 50 supported nodes.
- Replace domain inputs with domain priorities for more flexible domain computations.
- Inherit result domains from inputs to maintain domains without the need for early realization.
- Various improvements to the nodes implementation interfaces to ease implementation.
- Various fixes for issues discovered while implementing nodes.
Week 10: April 4 - April 8
This was a triaging week, but the last two days of the week were spent on development.
- Involved in 147 reports.
- Started preparing the viewport compositor for review and landing into master.
- Rewrote the execution scheduler and reimplemented recursive methods into iterative ones for robustness.
- Moved the viewport compositor into its own modules and separated it into smaller files.
Continue preparing the viewport compositor for review and landing into master, this will involve implementing stub operations for unsupported nodes, complete the engine implementation, refactoring compiler to use eager evaluations, and review node execution interface for commonalities.
Week 11: April 11 - 15
- Completed engine implementation.
- Added stub operations for unimplemented nodes.
- Refactor compositor to use eager evaluation.
- Further split the compositor over multiple files.
- Prepared the code for review.
- Started rebasing the viewport compositor on master.
Finish rebasing the viewport compositor on master and prepare everything for review. Split the changes into multiple patches and submit them for review. Look into the writing a TODO task with what is left as well as a blog post about the project.
Week 12: April 18 - 22
- Done rebasing the viewport compositor on master.
- Prepared the code for review and split it over multiple patches.
- Submitted patches for code that is needed but not strictly related to the viewport compositor.
- D14688, D14689, D14687, D14690, D14725.
- The viewport compositor is ready to submitted but needs the aforementioned patches to land first.
- Added shader pooling for more efficient shader use.
- Optimized scheduling of GPU material nodes by taking non-buffered links into account.
- Implemented multi-layer image support for image node.
- Various fixes mostly related to GPU material compilation.
Hopefully work on the submitted patches and submit more patches when they land. Support more nodes. Write the TODO task and article for code blog.
Week 13: April 25 - 29
- Review haven't started yet, so nothing changed on that front.
- Supported more nodes, including lens distortion and blurring.
- Supported stereoscopic compositing.
- Merged relevant changes from master and fixed various issues.
- Made multiple practical demos for the blog post.
Fix erroneous reference counting issue that came up during testing, which I expect will require some refactoring to fix properly. Finish the blog post and submit it for review. Continue implementing nodes and handle potential reviews.
Week 14: May 2 - 6
Shorter week due to national holiday, had to take two days off.
- Finish the blog post and demos and submitted them for review.
- Committed rBeac403b6.
- Committed rB8f6f28a0.
- Committed rBbdfee6d8.
- The viewport compositor rebased on master in now available in
- Refactor reference counting to work with eager evaluation.
Week 15: May 9 - 13
- Involved in 91 reports.
Spent some on Friday working on design documents for the viewport compositor. Not yet finished, however.
Continue working on design documents, fix GLSL compile errors or non-AMD GPUs, and either continue working on the viewport or handle potential reviews and do the necessary refactors.
Week 16: May 16 - 20
- Finished a design document for the viewport compositor to make review easier and explain some design choices.
- Reached out to artists from the studio to get feedback about UI/UX.
- Fixed Nvidia shader compiler errors. Thanks to Jeroen for the fix.
- Updated pending patches to handle review comments.
- Implemented couple of more nodes for the compositor to make vignette easier to do.
Week 17: May 23 - 27
- Involved in 183 reports.
The GPU module viewport compositor meeting is expected clarify what needs to be dome imminently, so the direction of development will be determined then.
Week 18: May 30 - June 3
- Wrote another document about the UX/UI of the real time compositor.
- Updated the real time compositor code to handle review, mostly non-functional changes.
- Investigated the technical requirements of unifying the real time compositor with the existing compositor, which will likely involve a CPU implementation.
- Surveyed the possible methods for implementing Fast Gaussian and Glare nodes, it seems there is a known state of the art method which we will likely study and implement.
Week 19: June 6 - 10
- Involved in 153 reports.
Further prepare the real time compositor for merging and work towards recursive filtering support for the real time compositor.
Week 20: June 13 - 17
- D15207 Render: Propagate view updates to draw engines.
- D15206 Realtime Compositor: Add initial evaluator and engine.
- D15232 Fix: Wrong output types for some compositor nodes.
- D15226 Realtime Compositor: Add basic output nodes.
- D15227 Realtime Compositor: Add basic input nodes.
- D15228 Realtime Compositor: Add basic color nodes.
- D15229 Realtime Compositor: Add basic convert and vector nodes.
- D15230 Realtime Compositor: Add basic matte nodes.
- D15231 Realtime Compositor: Add basic distort nodes.
Week 21: June 20 - 24
Had to take Tuesday off and so didn't triage that day.
- Involved in 90 reports.
Investigated the reviews on the realtime compositor patches.
Handle and updated patches according to review, create a task for the status of the project, and work on fixing the various compatibility issues with the existing compositor.
Week 22: June 27 - July 1
- Wrote T99210 to track the state of the realtime compositor.
- Updated the blog post and its demos. The blog post is currently pending review.
- Fixed many bugs and compatibility issues with the existing compositor.
- Updated the patches based on review and the aforementioned fixes.