summaryrefslogtreecommitdiff
path: root/src/modules/sparkler/xplode.c
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2023-08-07 15:38:12 -0700
committerVito Caputo <vcaputo@pengaru.com>2023-08-07 16:40:13 -0700
commitf2c91ee49e2d4cc9711027cb404076ffba1bad6e (patch)
tree80022894753c67fe8ad0a0a9f5c397f5a2d008b7 /src/modules/sparkler/xplode.c
parente550c9e8c6ffcdc902b56393609e76a8b191b279 (diff)
modules/checkers: ensure all fill_module_contexts render
There's potential for some of the per-cpu fill_module_contexts to go unused for an entire frame. When this occurs, depending on the fill_module in use, it can lead to their context's state diverging. To mitigate this possibility, add a tidying up pass in checkers_finish_frame() where such straggler contexts are identified and forced to render once into a cell-sized waste_fb of off-screen memory. This ensures all contexts see all frames/ticks that any participated in, preserving their clone status across the board. Prior to this you could see jittering in something like '--module=checkers,fill_module=roto' as the roto contexts diverged on the r/rr variables when some didn't get in on the action of some frames. See large TODO comment for why this approach is used instead of something less wasteful of cpu time. If this approach is kept, it might make sense to do the waste rendering in parallel. Systems with large numbers of cores could end up with many stragglers, depending on how many cells there are vs. cpus. I don't have any such systems so it's difficult to test any efforts in that vein.
Diffstat (limited to 'src/modules/sparkler/xplode.c')
0 files changed, 0 insertions, 0 deletions
© All Rights Reserved