From aa5a7dee06c635c0c2a41c163de7add33ed952a1 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Mon, 5 Jun 2023 18:00:18 -0700 Subject: modules/checkers: use til_module_create_contexts() for fill_module Just a boring replacement of the ad-hoc n_cpus context creates for the fill_module contexts with the newly added libtil equivalent function. Future commits will expand the libtil side to get module contexts registered for discovery purposes on-stream. This change moves a bit closer towards that goal... --- src/modules/checkers/checkers.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) (limited to 'src') 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; -- cgit v1.2.1