Skip to content

Commit 99616b9

Browse files
committed
avoid crash with invalid tile sizes, use 0 for default
1 parent 987ced8 commit 99616b9

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

stable-diffusion.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class StableDiffusionGGML {
108108

109109
std::string taesd_path;
110110
bool use_tiny_autoencoder = false;
111-
sd_tiling_params_t vae_tiling_params = {false, 32, 32, 0.5f, false, 0, 0};
111+
sd_tiling_params_t vae_tiling_params = {false, 0, 0, 0.5f, false, 0, 0};
112112
bool offload_params_to_cpu = false;
113113
bool stacked_id = false;
114114

@@ -1339,8 +1339,12 @@ class StableDiffusionGGML {
13391339
// TODO: args instead of env for tile size / overlap?
13401340
if (!use_tiny_autoencoder) {
13411341
float tile_overlap = vae_tiling_params.target_overlap;
1342-
int tile_size_x = vae_tiling_params.tile_size_x;
1343-
int tile_size_y = vae_tiling_params.tile_size_y;
1342+
int tile_size_x = (vae_tiling_params.tile_size_x >= 4)
1343+
? vae_tiling_params.tile_size_x
1344+
: 32;
1345+
int tile_size_y = (vae_tiling_params.tile_size_y >= 4)
1346+
? vae_tiling_params.tile_size_y
1347+
: 32;
13441348

13451349
if (vae_tiling_params.relative) {
13461350
get_relative_tile_sizes(tile_size_x, tile_size_y, tile_overlap, vae_tiling_params.rel_size_x, vae_tiling_params.rel_size_y, W, H);
@@ -1490,8 +1494,12 @@ class StableDiffusionGGML {
14901494
int64_t t0 = ggml_time_ms();
14911495
if (!use_tiny_autoencoder) {
14921496
float tile_overlap = vae_tiling_params.target_overlap;
1493-
int tile_size_x = vae_tiling_params.tile_size_x;
1494-
int tile_size_y = vae_tiling_params.tile_size_y;
1497+
int tile_size_x = (vae_tiling_params.tile_size_x >= 4)
1498+
? vae_tiling_params.tile_size_x
1499+
: 32;
1500+
int tile_size_y = (vae_tiling_params.tile_size_y >= 4)
1501+
? vae_tiling_params.tile_size_y
1502+
: 32;
14951503

14961504
if (vae_tiling_params.relative) {
14971505
get_relative_tile_sizes(tile_size_x, tile_size_y, tile_overlap, vae_tiling_params.rel_size_x, vae_tiling_params.rel_size_y, x->ne[0], x->ne[1]);
@@ -1769,7 +1777,7 @@ void sd_img_gen_params_init(sd_img_gen_params_t* sd_img_gen_params) {
17691777
sd_img_gen_params->control_strength = 0.9f;
17701778
sd_img_gen_params->style_strength = 20.f;
17711779
sd_img_gen_params->normalize_input = false;
1772-
sd_img_gen_params->vae_tiling_params = {false, 32, 32, 0.5f, false, 0.0f, 0.0f};
1780+
sd_img_gen_params->vae_tiling_params = {false, 0, 0, 0.5f, false, 0.0f, 0.0f};
17731781
}
17741782

17751783
char* sd_img_gen_params_to_str(const sd_img_gen_params_t* sd_img_gen_params) {

0 commit comments

Comments
 (0)