I’ve noticed in the past few months a new warning in the console when a sketch loads image files: p5.js:80807 Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: HTML Standard
And I wonder if anyone has found or knows a way to set the willReadFrequently attribute on the canvas to true?
THANK!
1 Like
mnse
November 20, 2022, 10:06pm
2
Hi @mattobject ,
This is maybe of interest for you…
opened 04:40AM - 19 Oct 22 UTC
Enhancement
Area:Core
### Increasing Access
Making canvas operations more performant would make ske… tches run better on mobile and lower-end hardware.
### Most appropriate sub-area of p5.js?
- [ ] Accessibility
- [ ] Color
- [X] Core/Environment/Rendering
- [ ] Data
- [ ] DOM
- [ ] Events
- [ ] Image
- [ ] IO
- [ ] Math
- [ ] Typography
- [ ] Utilities
- [ ] WebGL
- [ ] Build Process
- [ ] Unit Testing
- [ ] Internalization
- [ ] Friendly Errors
- [ ] Other (specify if possible)
### Feature enhancement details
When using `tint()` I get a canvas2d warning that says:
`Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true.`
The [canvas specs say](https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently) that passing `{ willReadFrequently: true }` to `getContext()` will disable hardware acceleration on the canvas, making it perform better with `getImageData()`. This looks like a recent addition for Chrome at least? [It's discussed in a blog post here](https://developer.chrome.com/blog/canvas2d/#will-read-frequently)
Would this be something that would be helpful to add wherever `getImageData()` is called?
Below is an example that triggers this warning. In this case it's the `Filters._toPixels()` call in `p5.Renderer2D.prototype._getTintedImageCanvas`.
```
let pg0;
function setup() {
createCanvas(400, 400);
pg0 = createGraphics(400,400);
}
function draw() {
background(220);
tint(255, 100);
image(pg0,0,0);
}
```
Cheers
— mnse
2 Likes
Hi mnse
Thanks for the link. Looks like I can ignore for now.