diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2022-04-19 13:54:12 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2022-04-19 15:31:31 -0700 |
commit | ca14c4bf346a200ab8a66be293d8e71d49e09e32 (patch) | |
tree | 1408ada97b8710d0bf244e9b8c250e99410feb2b | |
parent | 4e52861bb580ac41eaf8df2dd4c99029c3706cf3 (diff) |
til_fb: introduce til_fb_fragment_fill()
Just adding a convenience function targeting simple overlay use
cases where the fragmenter is exploited for producing patterns
and the renderer may wish to fill those fragments vs. zero them.
A future commit should also really rename til_fb_fragment_zero()
to til_fb_fragment_clear()
-rw-r--r-- | src/til_fb.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/til_fb.h b/src/til_fb.h index bc553c6..f441d36 100644 --- a/src/til_fb.h +++ b/src/til_fb.h @@ -90,17 +90,24 @@ static inline int til_fb_fragment_put_pixel_checked(til_fb_fragment_t *fragment, } -/* zero a fragment */ -static inline void til_fb_fragment_zero(til_fb_fragment_t *fragment) +/* fill a fragment with an arbitrary pixel */ +static inline void til_fb_fragment_fill(til_fb_fragment_t *fragment, uint32_t pixel) { void *buf = fragment->buf; + /* TODO: there should be a fast-path for non-divided fragments where there's no stride to skip */ + for (int y = 0; y < fragment->height; y++, buf += fragment->pitch) + memset(buf, pixel, fragment->pitch - fragment->stride); +} + + +/* zero a fragment */ +static inline void til_fb_fragment_zero(til_fb_fragment_t *fragment) +{ if (fragment->zeroed) return; - /* TODO: there should be a fast-path for non-divided fragments where there's no stride to skip */ - for (int y = 0; y < fragment->height; y++, buf += fragment->pitch) - memset(buf, 0, fragment->pitch - fragment->stride); + til_fb_fragment_fill(fragment, 0); fragment->zeroed = 1; } |