Add API for making buffers write-only, and allow reading from them by default#320
Open
Add API for making buffers write-only, and allow reading from them by default#320
Conversation
To allow reading from the buffer by default.
ids1024
reviewed
Jan 27, 2026
| /// Set the buffer as optimized for only being written to. | ||
| /// | ||
| /// Setting this allows the underlying storage to bypass certain caches and reduce cache | ||
| /// pollution. In turn, this may make reading from the buffer data perform very poorly. |
Member
There was a problem hiding this comment.
So it's not really "write only", but more optimized for not reading? Though I guess it should generally be treated the same...
Not sure if any other name would be more appropriate for this method. Maybe not.
Member
Author
There was a problem hiding this comment.
Maybe write_optimized? Or read_penalized?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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<'_>?