From 6ad1bc695cd0c71ce6b6bc376f72af6a7b9a1dc5 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/8] 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 9fd9c7d72ba..8a3f8e1d1b7 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": [
@@ -2397,6 +2411,8 @@
"postProcessingModel": "Post-Processing Model",
"scale": "Scale",
"tileControl": "Tile Control",
+ "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 1dba07b197d..df840b0b330 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -8,6 +8,8 @@ import ParamTileControlNetModel from 'features/parameters/components/Upscale/Par
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';
@@ -75,6 +77,8 @@ export const UpscaleTabAdvancedSettingsAccordion = memo(() => {
+
+
);
From 6d83ccc18ef7cd4640b5bc92e1fa3c28c5674d5a 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/8] 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 df840b0b330..b9e1fe61b73 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -5,11 +5,11 @@ 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 ParamTileControlNetModel from 'features/parameters/components/Upscale/ParamTileControlNetModel';
+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 2eb92af1e2a4a995fa300d77cd40dfa70fbf3b60 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/8] 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 e1aa56ff0cf8f02eff2ff6944ee608eebeae49c1 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/8] 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 b9e1fe61b73..eeb1c79e096 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -10,6 +10,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 db696ae971eaffe650743fd3162f69ef70097d1c 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/8] 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 eeb1c79e096..b9e1fe61b73 100644
--- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
+++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx
@@ -10,8 +10,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 208fe26b72fcd86466147c618d5d3737a3b974f9 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/8] 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 9930fc68e7b175841512fd857b9758dc7397d100 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/8] 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 = () => {
From 5e9ba681d68b3f5fa2cde4ae9f0f31e79bcd98e7 Mon Sep 17 00:00:00 2001
From: psychedelicious <4822129+psychedelicious@users.noreply.github.com>
Date: Thu, 17 Jul 2025 14:18:52 +1000
Subject: [PATCH 8/8] fix(ui): remove unnecessary coalescing operator
---
.../nodes/util/graph/buildMultidiffusionUpscaleGraph.ts | 4 ++--
1 file changed, 2 insertions(+), 2 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 fafedd1a5df..e36497b573c 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts
@@ -92,7 +92,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
id: getPrefixedId('tiled_multidiffusion_denoise_latents'),
tile_height: tileSize,
tile_width: tileSize,
- tile_overlap: tileOverlap || 128,
+ tile_overlap: tileOverlap,
steps,
cfg_scale,
scheduler,
@@ -194,7 +194,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise
creativity,
structure,
tile_size: tileSize,
- tile_overlap: tileOverlap || 128,
+ tile_overlap: tileOverlap,
upscale_initial_image: {
image_name: upscaleInitialImage.image_name,
width: upscaleInitialImage.width,