@@ -1301,7 +1301,8 @@ class StableDiffusionGGML {
13011301 }
13021302
13031303
1304- void get_tile_sizes (int & tile_size_x, int & tile_size_y, float & tile_overlap, const sd_tiling_params_t & params, int latent_x, int latent_y) {
1304+ void get_tile_sizes (int & tile_size_x, int & tile_size_y, float & tile_overlap, const sd_tiling_params_t & params,
1305+ int latent_x, int latent_y, float encoding_factor = 1 .0f ) {
13051306 tile_overlap = std::max (std::min (params.target_overlap , 0 .5f ), 0 .0f );
13061307 auto get_tile_size = [&](int requested_size, float factor, int latent_size) {
13071308 const int default_tile_size = 32 ;
@@ -1317,6 +1318,7 @@ class StableDiffusionGGML {
13171318 else if (requested_size >= min_tile_dimension) {
13181319 tile_size = requested_size;
13191320 }
1321+ tile_size *= encoding_factor;
13201322 return std::max (std::min (tile_size, latent_size), min_tile_dimension);
13211323 };
13221324
@@ -1341,12 +1343,8 @@ class StableDiffusionGGML {
13411343 if (!use_tiny_autoencoder) {
13421344 float tile_overlap;
13431345 int tile_size_x, tile_size_y;
1344- get_tile_sizes (tile_size_x, tile_size_y, tile_overlap, vae_tiling_params, W, H);
1345-
1346- // TODO: also use an arg for this one?
13471346 // multiply tile size for encode to keep the compute buffer size consistent
1348- tile_size_x *= 1.30539 ;
1349- tile_size_y *= 1.30539 ;
1347+ get_tile_sizes (tile_size_x, tile_size_y, tile_overlap, vae_tiling_params, W, H, 1.30539 );
13501348
13511349 LOG_DEBUG (" VAE Tile size: %dx%d" , tile_size_x, tile_size_y);
13521350
0 commit comments