[PR #22] [MERGED] Optimize memory usage for huge number of strokes #48

Closed
opened 2025-12-29 05:19:17 +01:00 by adam · 0 comments
Owner

📋 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: mainHead: feature/memory


📝 Commits (10+)

  • 1f9c176 feat: reduce memory footprint
  • 0fc277c feat: update undo and redo
  • cd6048b feat: modify entities
  • 1d91da8 feat: enhance vertex loading
  • 335d7e5 feat: update stroke generator factor
  • 5109cc5 refactor: clean up
  • 74297b7 feat: add quad entity instead of storing in array
  • 9c1398c Merge branch 'feature/quad-entity' into feature/memory
  • a903a5e refactor: clean up
  • 10e7350 feat: 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.

## 📋 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>
adam added the pull-request label 2025-12-29 05:19:17 +01:00
adam closed this issue 2025-12-29 05:19:17 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/Memola#48