Open kvark opened 1 year ago
The rayon solution is mostly meant as an "easy" API, but it did occur to me that the rayon-specific code might really belong into the cli rather than the library itself.
I would also like to make the API more ergonomic to use in a massively parallel manner (OpenCL / compute shaders). Not sure how well iterators specifically lend themselves to that directly but as long as there is a "compress 1 block" API, producing an iterator over all blocks should be a zero-cost operation so I think that is a safe way to approach it.
It appears that, currently, if I want to contol the parallel compressions of multiple textures, the choice is either enable
rayon
or reimplementfn compress()
myself. I think it could be done better. For example,compress
could be implemented on top of a helper like this:This way, if I want
rayon
, I will just convert the regular iterator into sequential with something like into_par_iter().The advantage here is the following: