processing/p5.js

Add a way to clean up image texture resources in WebGL

Open

#7,700 opened on Apr 4, 2025

View on GitHub
 (1 comment) (0 reactions) (0 assignees)JavaScript (20,784 stars) (3,178 forks)batch import
Area:WebGLFeature RequestHelp Wanted

Description

Increasing access

This can help support larger p5 projects, in terms of resolution (e.g. for a 4K TV in a gallery) or just size of content, where currently you'll run into memory limitations that force projects to be smaller.

Most appropriate sub-area of p5.js?

  • Accessibility
  • Color
  • Core/Environment/Rendering
  • Data
  • DOM
  • Events
  • Image
  • IO
  • Math
  • Typography
  • Utilities
  • WebGL
  • Build process
  • Unit testing
  • Internationalization
  • Friendly errors
  • Other (specify if possible)

Feature request details

When you drawn an image or any other texture to the canvas in WebGL, we create a new texture on the GPU. For most things, there is no way to clear this out to make room for more. The exception is p5.Framebuffer, where you can call .remove() on it, and it cleans up all its GPU resources, and p5.Geometry, which you can pass into freeGeometry() to clear its GPU resources.

Ideally I'd like something similar to clear image GPU resources (which just means it might be a bit slower the next time you try to draw it), and possibly also an LRU cache that automatically can clear out least recently used GPU resources. (The latter is a little hard because it doesnt seem like there's a reliable way to get GPU memory limits? so manual management is probably fine, since this only comes up when a project has already become fairly advanced.)

Contributor guide

Add a way to clean up image texture resources in WebGL · processing/p5.js#7700 | Good First Issue