|
2 | 2 |
|
3 | 3 | #include <cstring> |
4 | 4 | #include <stdexcept> |
| 5 | +#include <string> |
5 | 6 |
|
6 | 7 | #define STB_IMAGE_WRITE_IMPLEMENTATION |
7 | 8 | #define STB_IMAGE_WRITE_STATIC |
@@ -84,6 +85,7 @@ ImageGenerator::ImageGenerator(std::shared_ptr<TaskStateManager> task_state_mana |
84 | 85 | interrupted_(false), |
85 | 86 | vae_on_cpu_(server_params.vae_on_cpu), |
86 | 87 | vae_tiling_(server_params.vae_tiling), |
| 88 | + vae_tile_size_(server_params.vae_tile_size), |
87 | 89 | offload_to_cpu_(server_params.offload_to_cpu), |
88 | 90 | diffusion_fa_(server_params.diffusion_fa), |
89 | 91 | control_net_cpu_(server_params.control_net_cpu), |
@@ -202,12 +204,33 @@ std::vector<std::string> ImageGenerator::generateInternal(const ImageGenerationP |
202 | 204 | // VAE tiling (if enabled via CLI) |
203 | 205 | if (vae_tiling_) { |
204 | 206 | gen_params.vae_tiling_params.enabled = true; |
205 | | - gen_params.vae_tiling_params.tile_size_x = 512; // Default tile size |
206 | | - gen_params.vae_tiling_params.tile_size_y = 512; |
| 207 | + |
| 208 | + // Parse tile size |
| 209 | + int tile_size_x = 256; |
| 210 | + int tile_size_y = 256; |
| 211 | + if (!vae_tile_size_.empty()) { |
| 212 | + size_t x_pos = vae_tile_size_.find('x'); |
| 213 | + try { |
| 214 | + if (x_pos != std::string::npos) { |
| 215 | + std::string tile_x_str = vae_tile_size_.substr(0, x_pos); |
| 216 | + std::string tile_y_str = vae_tile_size_.substr(x_pos + 1); |
| 217 | + tile_size_x = std::stoi(tile_x_str); |
| 218 | + tile_size_y = std::stoi(tile_y_str); |
| 219 | + } else { |
| 220 | + tile_size_x = tile_size_y = std::stoi(vae_tile_size_); |
| 221 | + } |
| 222 | + } catch (const std::exception& e) { |
| 223 | + LOG_WARNING("Invalid VAE tile size '%s', using default 256x256", vae_tile_size_.c_str()); |
| 224 | + tile_size_x = tile_size_y = 256; |
| 225 | + } |
| 226 | + } |
| 227 | + |
| 228 | + gen_params.vae_tiling_params.tile_size_x = tile_size_x; |
| 229 | + gen_params.vae_tiling_params.tile_size_y = tile_size_y; |
207 | 230 | gen_params.vae_tiling_params.target_overlap = 0.5f; |
208 | 231 | gen_params.vae_tiling_params.rel_size_x = 1.0f; |
209 | 232 | gen_params.vae_tiling_params.rel_size_y = 1.0f; |
210 | | - LOG_INFO("VAE tiling enabled with tile size 512x512"); |
| 233 | + LOG_INFO("VAE tiling enabled with tile size %dx%d", tile_size_x, tile_size_y); |
211 | 234 | } |
212 | 235 |
|
213 | 236 | // Generate images |
|
0 commit comments