summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/modules/checkers/checkers.c20
1 files changed, 2 insertions, 18 deletions
diff --git a/src/modules/checkers/checkers.c b/src/modules/checkers/checkers.c
index 36b20f8..ba78e1c 100644
--- a/src/modules/checkers/checkers.c
+++ b/src/modules/checkers/checkers.c
@@ -89,24 +89,8 @@ static til_module_context_t * checkers_create_context(const til_module_t *module
const til_module_t *module = ctxt->setup->fill_module;
/* since checkers is already threaded, create an n_cpus=1 context per-cpu */
- for (unsigned i = 0; i < n_cpus; i++) /* TODO: errors */
- (void) til_module_create_context(module, stream, seed, ticks, 1, ctxt->setup->fill_module_setup, &ctxt->fill_module_contexts[i]);
- /* FIXME TODO ^^^ sharing the fill_module_path across the per-cpu contexts aliases them _across_threads_ no less, this needs attention/thought FIXME TODO */
- /* but the problem with just doing something like suffixing the cpu # to give each context a unique path per-cpu is then the taps/pipes would all be
- * unique on a per-cpu basis. That's _very_ undesirable in terms of sequencing the pipes by name, we don't want sequencing tracks per-cpu and that's
- * a non-deterministic quantity depending on the host anyways. So the path can't encode a cpu number, that's just a hard NOPE. What may need to be
- * done here is to stop creating the context per-cpu in checkers and instead be able to simply do a single n_cpus create context at the single path,
- * then be able to perform a forced cpu-specific render on a given context. Then whatever the context-specific module does with threaded rendering
- * on a shared context is its problem, and we already told it the n_cpus value so it could do whatever it needed to. The problem with this as-is is
- * that some modules just don't implement threaded rendering at all and can't share their context across threads as a result, so checkers can't make
- * that assumption. This hack here of creating a context per-cpu works around that problem entirely, so even simple modules magically become threaded.
- * Maybe what needs to happen is everything path-bound needs to just have some magic surrounding cpu-local state. As in, the tap/tap-driving stuff could
- * just roll with the punches and share the first instance of tap variables then all the others just get left alone. FIXME TODO FIXME TODO
- */
-
- /* XXX: it would be interesting to support various patterns/layouts by varying the seed, but this will require
- * more complex context allocation strategies while also maintaining the per-cpu allocation.
- */
+ if (til_module_create_contexts(module, stream, seed, ticks, 1, ctxt->setup->fill_module_setup, n_cpus, ctxt->fill_module_contexts) < 0)
+ return til_module_context_free(&ctxt->til_module_context);
}
return &ctxt->til_module_context;
© All Rights Reserved