Skip to content

Commit 0e56bc7

Browse files
committed
limit encoding tile to latent size
1 parent 06b4130 commit 0e56bc7

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

stable-diffusion.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)