Add API for making buffers write-only, and allow reading from them by default #320
+59
−27
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In #313, I added a note that reading from the pixel buffer is discouraged, because I wanted to set
kIOSurfaceMapWriteCombineCacheon macOS once I got around to implementing properIOSurfacesupport. See e.g. the following links for a few places where it's used in the wild:I thought this was fine, because I couldn't see a use-case where you'd need to read from the pixel buffer, but that was perhaps a bit hasty, I found at least one use-case: converting the alpha mode (premultiplying components or making the alpha channel opaque) by modifying the buffer in-place in a separate step before presenting it buffer.
This means that the argument for only having the mutable version instead of distinct
pixels/pixels_mut,pixel_rows/pixel_rows_mutandpixels_iter/pixels_iter_mutmethods is a bit weaker.WDYT? Should we provide both immutable and mutable methods on
Buffer<'_>?