fix(ImageBuf): Copy ctor of IC-backed ImageBuf zeroed bufspan strides#5244
Open
lgritz wants to merge 1 commit into
Open
fix(ImageBuf): Copy ctor of IC-backed ImageBuf zeroed bufspan strides#5244lgritz wants to merge 1 commit into
lgritz wants to merge 1 commit into
Conversation
When copy-constructing an ImageCache-backed ImageBuf, the "cache-based or
deep" branch set `m_bufspan = {}`, a default-constructed image_span whose
strides are all zero. retile() addresses a pixel within a cache tile as
`offset = pixelindex * m_bufspan.xstride()`, so a zero xstride made every
pixel resolve to tile offset 0 -- the whole copied image read back as a
constant color (the value of pixel 0,0).
Fixes 5243
Added a regression test (test_copy_of_imagecache_backed) that copies a
cache-backed buffer with distinct per-pixel values and verifies the copy
does not read back a constant.
Assisted-by: Claude Code / Claude Opus 4.8
Signed-off-by: Larry Gritz <lg@larrygritz.com>
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.
When copy-constructing an ImageCache-backed ImageBuf, the "cache-based or deep" branch set
m_bufspan = {}, a default-constructed image_span whose strides are all zero. retile() addresses a pixel within a cache tile asoffset = pixelindex * m_bufspan.xstride(), so a zero xstride made every pixel resolve to tile offset 0 -- the whole copied image read back as a constant color (the value of pixel 0,0).Fixes #5243
Added a regression test (test_copy_of_imagecache_backed) that copies a cache-backed buffer with distinct per-pixel values and verifies the copy does not read back a constant.
Assisted-by: Claude Code / Claude Opus 4.8