115# pragma GCC diagnostic push
116# pragma GCC diagnostic ignored "-Warray-bounds"
118 switch (size_hints.
type) {
121 return size * range.
size() <= threshold;
124 const std::optional<int64_t> &full_size =
126 if (full_size.has_value()) {
127 if (*full_size <= threshold) {
134 const int64_t accumulated_size =
136 .lookup_accumulated_size(range);
137 return accumulated_size <= threshold;
141# pragma GCC diagnostic pop
159 auto array_fn = [
fn = std::forward<Fn>(
fn)](
const IndexRange range,
161 for (
const int64_t i : range.index_range()) {
162 r_sizes[
i] =
fn(range[
i]);
#define BLI_assert_unreachable()
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
constexpr int64_t size() const
TaskSizeHints(const Type type)
int64_t lookup_accumulated_size(const IndexRange range) const override
TaskSizeHints_AccumulatedLookupFn(Fn fn)
TaskSizeHints_AccumulatedLookup()
virtual int64_t lookup_accumulated_size(IndexRange range) const =0
TaskSizeHints_IndividualLookupFn(Fn fn, const std::optional< int64_t > full_size)
void lookup_individual_sizes(const IndexRange range, MutableSpan< int64_t > r_sizes) const override
TaskSizeHints_IndividualLookup(std::optional< int64_t > full_size)
std::optional< int64_t > full_size
virtual void lookup_individual_sizes(IndexRange, MutableSpan< int64_t > r_sizes) const =0
TaskSizeHints_Static(const int64_t size)
auto individual_task_sizes(Fn &&fn, const std::optional< int64_t > full_size=std::nullopt)
auto accumulated_task_sizes(Fn &&fn)
bool use_single_thread(const TaskSizeHints &size_hints, const IndexRange range, const int64_t threshold)