469{
470 uint32_t min_tile_size = 30;
471 uint32_t max_tile_size = 300;
472
473 for (uint8_t current_dimension = 0; current_dimension <= 1; current_dimension++)
474 {
475 uint32_t img_size = (current_dimension == 0) ? dimX : dimY;
476 uint32_t best_gap = max_tile_size;
477 uint32_t best_size = img_size;
478
479 if (img_size > max_tile_size)
480 {
481 for (uint32_t tile_size = max_tile_size; tile_size >= min_tile_size; tile_size--)
482 {
483 uint32_t gap = img_size % tile_size;
484 if (gap < best_gap)
485 {
486 best_gap = gap;
487 best_size = tile_size;
488 }
489 }
490 }
491
492 if (current_dimension == 0)
493 *tileX = best_size;
494 else
495 *tileY = best_size;
496 }
497}