This PR adds the optimization to memory usage when dealing with large number of strokes by using background context to load core data entities and by using kernel shader to generate vertices.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/dscyrescotti/Memola/pull/22
**Author:** [@dscyrescotti](https://github.com/dscyrescotti)
**Created:** 5/12/2024
**Status:** ✅ Merged
**Merged:** 5/12/2024
**Merged by:** [@dscyrescotti](https://github.com/dscyrescotti)
**Base:** `main` ← **Head:** `feature/memory`
---
### 📝 Commits (10+)
- [`1f9c176`](https://github.com/dscyrescotti/Memola/commit/1f9c176eb07cfb29d98ece4c9a46dba5760b54df) feat: reduce memory footprint
- [`0fc277c`](https://github.com/dscyrescotti/Memola/commit/0fc277ca5bfa4e03201aa1cd9f81b6a152ea27b7) feat: update undo and redo
- [`cd6048b`](https://github.com/dscyrescotti/Memola/commit/cd6048bbd0b73250f56a8bba366fbce112fbe67c) feat: modify entities
- [`1d91da8`](https://github.com/dscyrescotti/Memola/commit/1d91da844564ae0eb196c95f88da79b86b5f8323) feat: enhance vertex loading
- [`335d7e5`](https://github.com/dscyrescotti/Memola/commit/335d7e52e9d1177b03e933fbf8c33f9f9377650f) feat: update stroke generator factor
- [`5109cc5`](https://github.com/dscyrescotti/Memola/commit/5109cc53fc2c249aec535b4aa77fecb6db211734) refactor: clean up
- [`74297b7`](https://github.com/dscyrescotti/Memola/commit/74297b762787643d0b7ad6ccc6a2031ba4f12ab1) feat: add quad entity instead of storing in array
- [`9c1398c`](https://github.com/dscyrescotti/Memola/commit/9c1398ce5e131c27aa1d747469969bdf88b315e4) Merge branch 'feature/quad-entity' into feature/memory
- [`a903a5e`](https://github.com/dscyrescotti/Memola/commit/a903a5eed3f5a42bff2196772f2d1ccf968cdad4) refactor: clean up
- [`10e7350`](https://github.com/dscyrescotti/Memola/commit/10e7350511d705bbff2677a6923747192e4bbd93) feat: execute core data related logic in background context
### 📊 Changes
**31 files changed** (+747 additions, -346 deletions)
<details>
<summary>View changed files</summary>
📝 `Memola.xcodeproj/project.pbxproj` (+55 -15)
➕ `Memola.xcodeproj/xcshareddata/xcschemes/Memola.xcscheme` (+78 -0)
📝 `Memola/App/MemolaApp.swift` (+1 -1)
📝 `Memola/Canvas/Contexts/GraphicContext.swift` (+62 -34)
📝 `Memola/Canvas/Core/Canvas.swift` (+23 -60)
📝 `Memola/Canvas/Core/PipelineStates.swift` (+9 -0)
📝 `Memola/Canvas/Geometries/Primitives/Quad.swift` (+38 -88)
➕ `Memola/Canvas/Geometries/Primitives/QuadShape.swift` (+13 -0)
📝 `Memola/Canvas/Geometries/Stroke/Generators/SolidPointStrokeGenerator.swift` (+7 -31)
📝 `Memola/Canvas/Geometries/Stroke/Stroke.swift` (+100 -58)
📝 `Memola/Canvas/History/History.swift` (+11 -0)
📝 `Memola/Canvas/RenderPasses/CacheRenderPass.swift` (+2 -1)
📝 `Memola/Canvas/RenderPasses/GraphicRenderPass.swift` (+1 -1)
📝 `Memola/Canvas/RenderPasses/StrokeRenderPass.swift` (+30 -2)
➕ `Memola/Canvas/Shaders/Quad.metal` (+54 -0)
📝 `Memola/Canvas/Tool/Pen/Core/Pen.swift` (+12 -1)
📝 `Memola/Canvas/View/Bridge/ViewController/CanvasViewController.swift` (+8 -0)
📝 `Memola/Canvas/View/Bridge/Views/DrawingView.swift` (+1 -1)
➕ `Memola/Extensions/Float++.swift` (+14 -0)
➕ `Memola/Extensions/NSManagedObject++.swift` (+15 -0)
_...and 11 more files_
</details>
### 📄 Description
### Description
This PR adds the optimization to memory usage when dealing with large number of strokes by using background context to load core data entities and by using kernel shader to generate vertices.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/dscyrescotti/Memola/pull/22
Author: @dscyrescotti
Created: 5/12/2024
Status: ✅ Merged
Merged: 5/12/2024
Merged by: @dscyrescotti
Base:
main← Head:feature/memory📝 Commits (10+)
1f9c176feat: reduce memory footprint0fc277cfeat: update undo and redocd6048bfeat: modify entities1d91da8feat: enhance vertex loading335d7e5feat: update stroke generator factor5109cc5refactor: clean up74297b7feat: add quad entity instead of storing in array9c1398cMerge branch 'feature/quad-entity' into feature/memorya903a5erefactor: clean up10e7350feat: execute core data related logic in background context📊 Changes
31 files changed (+747 additions, -346 deletions)
View changed files
📝
Memola.xcodeproj/project.pbxproj(+55 -15)➕
Memola.xcodeproj/xcshareddata/xcschemes/Memola.xcscheme(+78 -0)📝
Memola/App/MemolaApp.swift(+1 -1)📝
Memola/Canvas/Contexts/GraphicContext.swift(+62 -34)📝
Memola/Canvas/Core/Canvas.swift(+23 -60)📝
Memola/Canvas/Core/PipelineStates.swift(+9 -0)📝
Memola/Canvas/Geometries/Primitives/Quad.swift(+38 -88)➕
Memola/Canvas/Geometries/Primitives/QuadShape.swift(+13 -0)📝
Memola/Canvas/Geometries/Stroke/Generators/SolidPointStrokeGenerator.swift(+7 -31)📝
Memola/Canvas/Geometries/Stroke/Stroke.swift(+100 -58)📝
Memola/Canvas/History/History.swift(+11 -0)📝
Memola/Canvas/RenderPasses/CacheRenderPass.swift(+2 -1)📝
Memola/Canvas/RenderPasses/GraphicRenderPass.swift(+1 -1)📝
Memola/Canvas/RenderPasses/StrokeRenderPass.swift(+30 -2)➕
Memola/Canvas/Shaders/Quad.metal(+54 -0)📝
Memola/Canvas/Tool/Pen/Core/Pen.swift(+12 -1)📝
Memola/Canvas/View/Bridge/ViewController/CanvasViewController.swift(+8 -0)📝
Memola/Canvas/View/Bridge/Views/DrawingView.swift(+1 -1)➕
Memola/Extensions/Float++.swift(+14 -0)➕
Memola/Extensions/NSManagedObject++.swift(+15 -0)...and 11 more files
📄 Description
Description
This PR adds the optimization to memory usage when dealing with large number of strokes by using background context to load core data entities and by using kernel shader to generate vertices.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.