From 75678164ca7eb7e16fc1aa94a1c996181a65237f Mon Sep 17 00:00:00 2001
From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com>
Date: Fri, 11 Jul 2025 23:21:28 -0400
Subject: [PATCH 1/7] commit tile size controls
---
invokeai/frontend/web/public/locales/en.json | 16 ++++++
.../InformationalPopover/constants.ts | 2 +
.../ModelInstallQueue/ModelInstallQueue.tsx | 4 +-
.../graph/buildMultidiffusionUpscaleGraph.ts | 25 ++++++---
.../components/Upscale/ParamTileOverlap.tsx | 53 +++++++++++++++++++
.../components/Upscale/ParamTileSize.tsx | 53 +++++++++++++++++++
.../features/parameters/store/upscaleSlice.ts | 14 +++++
.../UpscaleTabAdvancedSettingsAccordion.tsx | 4 ++
8 files changed, 162 insertions(+), 9 deletions(-)
create mode 100644 invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx
create mode 100644 invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx
diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json
index 5f8e2070c37..56619756283 100644
--- a/invokeai/frontend/web/public/locales/en.json
+++ b/invokeai/frontend/web/public/locales/en.json
@@ -1775,6 +1775,20 @@
"Structure controls how closely the output image will keep to the layout of the original. Low structure allows major changes, while high structure strictly maintains the original composition and layout."
]
},
+ "tileSize": {
+ "heading": "Tile Size",
+ "paragraphs": [
+ "Controls the size of tiles used during the upscaling process. Larger tiles use more memory but may produce better results.",
+ "SD1.5 models default to 768, while SDXL models default to 1024. Reduce tile size if you encounter memory issues."
+ ]
+ },
+ "tileOverlap": {
+ "heading": "Tile Overlap",
+ "paragraphs": [
+ "Controls the overlap between adjacent tiles during upscaling. Higher overlap values help reduce visible seams between tiles but use more memory.",
+ "The default value of 128 works well for most cases, but you can adjust based on your specific needs and memory constraints."
+ ]
+ },
"fluxDevLicense": {
"heading": "Non-Commercial License",
"paragraphs": [
@@ -2396,6 +2410,8 @@
"upscaleModel": "Upscale Model",
"postProcessingModel": "Post-Processing Model",
"scale": "Scale",
+ "tileSize": "Tile Size",
+ "tileOverlap": "Tile Overlap",
"postProcessingMissingModelWarning": "Visit the Model Manager to install a post-processing (image to image) model.",
"missingModelsWarning": "Visit the Model Manager to install the required models:",
"mainModelDesc": "Main model (SD1.5 or SDXL architecture)",
diff --git a/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts b/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts
index f115ab3a640..22a813b6de1 100644
--- a/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts
+++ b/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts
@@ -67,6 +67,8 @@ export type Feature =
| 'scale'
| 'creativity'
| 'structure'
+ | 'tileSize'
+ | 'tileOverlap'
| 'optimizedDenoising'
| 'fluxDevLicense';
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
index f124462e8b4..c2443dde6b0 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
@@ -55,9 +55,7 @@ export const ModelInstallQueue = memo(() => {
- {data?.map((model) => (
-
- ))}
+ {data?.map((model) => )}
diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
index 7c6192e06a4..c91344926b3 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
@@ -12,7 +12,16 @@ import type { GraphBuilderReturn } from './types';
export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise => {
const { model, upscaleCfgScale: cfg_scale, upscaleScheduler: scheduler, steps, vaePrecision, vae } = state.params;
- const { upscaleModel, upscaleInitialImage, structure, creativity, tileControlnetModel, scale } = state.upscale;
+ const {
+ upscaleModel,
+ upscaleInitialImage,
+ structure,
+ creativity,
+ tileControlnetModel,
+ scale,
+ tileSize,
+ tileOverlap,
+ } = state.upscale;
assert(model, 'No model selected');
assert(model.base === 'sd-1' || model.base === 'sdxl', 'Multi-Diffusion upscaling requires a SD1.5 or SDXL model');
@@ -58,11 +67,13 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
g.addEdge(unsharpMask, 'width', noise, 'width');
g.addEdge(unsharpMask, 'height', noise, 'height');
+ const effectiveTileSize = tileSize;
+
const i2l = g.addNode({
type: 'i2l',
id: getPrefixedId('i2l'),
fp32: vaePrecision === 'fp32',
- tile_size: 1024,
+ tile_size: effectiveTileSize,
tiled: true,
});
@@ -72,7 +83,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
type: 'l2i',
id: getPrefixedId('l2i'),
fp32: vaePrecision === 'fp32',
- tile_size: 1024,
+ tile_size: effectiveTileSize,
tiled: true,
board: getBoardField(state),
is_intermediate: false,
@@ -81,9 +92,9 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
const tiledMultidiffusion = g.addNode({
type: 'tiled_multi_diffusion_denoise_latents',
id: getPrefixedId('tiled_multidiffusion_denoise_latents'),
- tile_height: 1024, // is this dependent on base model
- tile_width: 1024, // is this dependent on base model
- tile_overlap: 128,
+ tile_height: effectiveTileSize,
+ tile_width: effectiveTileSize,
+ tile_overlap: tileOverlap || 128,
steps,
cfg_scale,
scheduler,
@@ -184,6 +195,8 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
upscale_model: Graph.getModelMetadataField(upscaleModelConfig),
creativity,
structure,
+ tile_size: effectiveTileSize,
+ tile_overlap: tileOverlap || 128,
upscale_initial_image: {
image_name: upscaleInitialImage.image_name,
width: upscaleInitialImage.width,
diff --git a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx
new file mode 100644
index 00000000000..7834e53309b
--- /dev/null
+++ b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx
@@ -0,0 +1,53 @@
+import { CompositeNumberInput, CompositeSlider, FormControl, FormLabel } from '@invoke-ai/ui-library';
+import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
+import { selectTileOverlap, tileOverlapChanged } from 'features/parameters/store/upscaleSlice';
+import { useCallback } from 'react';
+import { useTranslation } from 'react-i18next';
+
+const initial = 128;
+const sliderMin = 32;
+const sliderMax = 256;
+const numberInputMin = 16;
+const numberInputMax = 512;
+const coarseStep = 16;
+const fineStep = 8;
+const marks = [sliderMin, 128, sliderMax];
+
+const ParamTileOverlap = () => {
+ const tileOverlap = useAppSelector(selectTileOverlap);
+ const dispatch = useAppDispatch();
+ const { t } = useTranslation();
+ const onChange = useCallback(
+ (v: number) => {
+ dispatch(tileOverlapChanged(v));
+ },
+ [dispatch]
+ );
+
+ return (
+
+ {t('upscaling.tileOverlap')}
+
+
+
+ );
+};
+
+export default ParamTileOverlap;
diff --git a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx
new file mode 100644
index 00000000000..083e5ecf49f
--- /dev/null
+++ b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx
@@ -0,0 +1,53 @@
+import { CompositeNumberInput, CompositeSlider, FormControl, FormLabel } from '@invoke-ai/ui-library';
+import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
+import { selectTileSize, tileSizeChanged } from 'features/parameters/store/upscaleSlice';
+import { useCallback } from 'react';
+import { useTranslation } from 'react-i18next';
+
+const initial = 1024;
+const sliderMin = 512;
+const sliderMax = 1536;
+const numberInputMin = 512;
+const numberInputMax = 1536;
+const coarseStep = 64;
+const fineStep = 32;
+const marks = [sliderMin, 1024, sliderMax];
+
+const ParamTileSize = () => {
+ const tileSize = useAppSelector(selectTileSize);
+ const dispatch = useAppDispatch();
+ const { t } = useTranslation();
+ const onChange = useCallback(
+ (v: number) => {
+ dispatch(tileSizeChanged(v));
+ },
+ [dispatch]
+ );
+
+ return (
+
+ {t('upscaling.tileSize')}
+
+
+
+ );
+};
+
+export default ParamTileSize;
diff --git a/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts b/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts
index a3fa9ae0aae..294d88fb481 100644
--- a/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts
+++ b/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts
@@ -13,6 +13,8 @@ export interface UpscaleState {
tileControlnetModel: ControlNetModelConfig | null;
scale: number;
postProcessingModel: ParameterSpandrelImageToImageModel | null;
+ tileSize: number;
+ tileOverlap: number;
}
const initialUpscaleState: UpscaleState = {
@@ -24,6 +26,8 @@ const initialUpscaleState: UpscaleState = {
tileControlnetModel: null,
scale: 4,
postProcessingModel: null,
+ tileSize: 1024,
+ tileOverlap: 128,
};
export const upscaleSlice = createSlice({
@@ -51,6 +55,12 @@ export const upscaleSlice = createSlice({
postProcessingModelChanged: (state, action: PayloadAction) => {
state.postProcessingModel = action.payload;
},
+ tileSizeChanged: (state, action: PayloadAction) => {
+ state.tileSize = action.payload;
+ },
+ tileOverlapChanged: (state, action: PayloadAction) => {
+ state.tileOverlap = action.payload;
+ },
},
});
@@ -62,6 +72,8 @@ export const {
tileControlnetModelChanged,
scaleChanged,
postProcessingModelChanged,
+ tileSizeChanged,
+ tileOverlapChanged,
} = upscaleSlice.actions;
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
@@ -88,3 +100,5 @@ export const selectTileControlNetModel = createUpscaleSelector((upscale) => upsc
export const selectStructure = createUpscaleSelector((upscale) => upscale.structure);
export const selectUpscaleInitialImage = createUpscaleSelector((upscale) => upscale.upscaleInitialImage);
export const selectUpscaleScale = createUpscaleSelector((upscale) => upscale.scale);
+export const selectTileSize = createUpscaleSelector((upscale) => upscale.tileSize);
+export const selectTileOverlap = createUpscaleSelector((upscale) => upscale.tileOverlap);
diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
index 4aa0708ac03..470f8447f5d 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -7,6 +7,8 @@ import { ParamSeed } from 'features/parameters/components/Seed/ParamSeed';
import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect';
import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect';
import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision';
+import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap';
+import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize';
import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
@@ -73,6 +75,8 @@ export const UpscaleTabAdvancedSettingsAccordion = memo(() => {
{!isFLUX && !isSD3 && }
+
+
);
From cd585385424bd3b41acee1f94af3e6176267e6ff Mon Sep 17 00:00:00 2001
From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com>
Date: Fri, 11 Jul 2025 23:31:42 -0400
Subject: [PATCH 2/7] lint
---
.../UpscaleTabAdvancedSettingsAccordion.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
index 470f8447f5d..efeddb35940 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -4,11 +4,11 @@ import { createMemoizedSelector } from 'app/store/createMemoizedSelector';
import { useAppSelector } from 'app/store/storeHooks';
import { selectIsFLUX, selectIsSD3, selectParamsSlice, selectVAEKey } from 'features/controlLayers/store/paramsSlice';
import { ParamSeed } from 'features/parameters/components/Seed/ParamSeed';
+import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap';
+import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize';
import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect';
import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect';
import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision';
-import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap';
-import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize';
import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
From c3575df3ae60fd5077200b0f88499d6105495f23 Mon Sep 17 00:00:00 2001
From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com>
Date: Sat, 12 Jul 2025 00:35:25 -0400
Subject: [PATCH 3/7] unlint.
---
.../AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
index c2443dde6b0..f124462e8b4 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
@@ -55,7 +55,9 @@ export const ModelInstallQueue = memo(() => {
- {data?.map((model) => )}
+ {data?.map((model) => (
+
+ ))}
From af49faa58d9c048bed5755398d405690e4433761 Mon Sep 17 00:00:00 2001
From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com>
Date: Fri, 11 Jul 2025 23:21:28 -0400
Subject: [PATCH 4/7] commit tile size controls
---
.../AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx | 4 +---
.../UpscaleTabAdvancedSettingsAccordion.tsx | 2 ++
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
index f124462e8b4..c2443dde6b0 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
@@ -55,9 +55,7 @@ export const ModelInstallQueue = memo(() => {
- {data?.map((model) => (
-
- ))}
+ {data?.map((model) => )}
diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
index efeddb35940..b214614b478 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -9,6 +9,8 @@ import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize'
import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect';
import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect';
import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision';
+import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap';
+import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize';
import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
From 9d7b919a831138e1dfd2e33344528cbff9500d99 Mon Sep 17 00:00:00 2001
From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com>
Date: Fri, 11 Jul 2025 23:31:42 -0400
Subject: [PATCH 5/7] lint
---
.../UpscaleTabAdvancedSettingsAccordion.tsx | 2 --
1 file changed, 2 deletions(-)
diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
index b214614b478..efeddb35940 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -9,8 +9,6 @@ import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize'
import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect';
import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect';
import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision';
-import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap';
-import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize';
import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
From 851b6b5e8a0eb7bc7f8db12a1dc0765027e8be1e Mon Sep 17 00:00:00 2001
From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com>
Date: Sat, 12 Jul 2025 00:35:25 -0400
Subject: [PATCH 6/7] unlint.
---
.../AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
index c2443dde6b0..f124462e8b4 100644
--- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
+++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx
@@ -55,7 +55,9 @@ export const ModelInstallQueue = memo(() => {
- {data?.map((model) => )}
+ {data?.map((model) => (
+
+ ))}
From 390ac45f4060f06ff2274814bcd3684b45ffdb69 Mon Sep 17 00:00:00 2001
From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com>
Date: Tue, 15 Jul 2025 15:40:49 -0400
Subject: [PATCH 7/7] address comments
---
.../util/graph/buildMultidiffusionUpscaleGraph.ts | 12 +++++-------
.../parameters/components/Upscale/ParamTileSize.tsx | 2 +-
2 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
index c91344926b3..fafedd1a5df 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
@@ -67,13 +67,11 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
g.addEdge(unsharpMask, 'width', noise, 'width');
g.addEdge(unsharpMask, 'height', noise, 'height');
- const effectiveTileSize = tileSize;
-
const i2l = g.addNode({
type: 'i2l',
id: getPrefixedId('i2l'),
fp32: vaePrecision === 'fp32',
- tile_size: effectiveTileSize,
+ tile_size: tileSize,
tiled: true,
});
@@ -83,7 +81,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
type: 'l2i',
id: getPrefixedId('l2i'),
fp32: vaePrecision === 'fp32',
- tile_size: effectiveTileSize,
+ tile_size: tileSize,
tiled: true,
board: getBoardField(state),
is_intermediate: false,
@@ -92,8 +90,8 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
const tiledMultidiffusion = g.addNode({
type: 'tiled_multi_diffusion_denoise_latents',
id: getPrefixedId('tiled_multidiffusion_denoise_latents'),
- tile_height: effectiveTileSize,
- tile_width: effectiveTileSize,
+ tile_height: tileSize,
+ tile_width: tileSize,
tile_overlap: tileOverlap || 128,
steps,
cfg_scale,
@@ -195,7 +193,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
upscale_model: Graph.getModelMetadataField(upscaleModelConfig),
creativity,
structure,
- tile_size: effectiveTileSize,
+ tile_size: tileSize,
tile_overlap: tileOverlap || 128,
upscale_initial_image: {
image_name: upscaleInitialImage.image_name,
diff --git a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx
index 083e5ecf49f..c0443cb6fe1 100644
--- a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx
@@ -10,7 +10,7 @@ const sliderMax = 1536;
const numberInputMin = 512;
const numberInputMax = 1536;
const coarseStep = 64;
-const fineStep = 32;
+const fineStep = 64;
const marks = [sliderMin, 1024, sliderMax];
const ParamTileSize = () => {