From 52e7e0b31bb688789c0715604dd8e98f661e8812 Mon Sep 17 00:00:00 2001 From: mickr777 <115216705+mickr777@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:15:55 +1000 Subject: [PATCH 1/4] Missing def choose_torch_device --- invokeai/app/invocations/latent.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index 2800624235..6ec62ff117 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -38,6 +38,10 @@ from diffusers.models.attention_processor import ( XFormersAttnProcessor, ) +def choose_torch_device() -> str: + # Your device selection logic here + device = "cuda" if torch.cuda.is_available() else "cpu" + return device class LatentsField(BaseModel): """A latents field used for passing latents between invocations""" From 19d67b29e7fc10281e5964a71cd9d30c7a0bc71e Mon Sep 17 00:00:00 2001 From: mickr777 <115216705+mickr777@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:20:40 +1000 Subject: [PATCH 2/4] Remove not needed text --- invokeai/app/invocations/latent.py | 1 - 1 file changed, 1 deletion(-) diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index 6ec62ff117..28613b1a4d 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -39,7 +39,6 @@ from diffusers.models.attention_processor import ( ) def choose_torch_device() -> str: - # Your device selection logic here device = "cuda" if torch.cuda.is_available() else "cpu" return device From d8db618de0d943b1d2b0caeb85de1fe89d412fa4 Mon Sep 17 00:00:00 2001 From: mickr777 <115216705+mickr777@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:43:02 +1000 Subject: [PATCH 3/4] import choose_torch_device from ...backend.util.devices --- invokeai/app/invocations/latent.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index 28613b1a4d..743a648785 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -22,7 +22,7 @@ from ...backend.stable_diffusion.diffusers_pipeline import ( from ...backend.stable_diffusion.diffusion.shared_invokeai_diffusion import \ PostprocessingSettings from ...backend.stable_diffusion.schedulers import SCHEDULER_MAP -from ...backend.util.devices import torch_dtype +from ...backend.util.devices import choose_torch_device, torch_dtype from ..models.image import ImageCategory, ImageField, ResourceOrigin from .baseinvocation import (BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext) @@ -38,10 +38,6 @@ from diffusers.models.attention_processor import ( XFormersAttnProcessor, ) -def choose_torch_device() -> str: - device = "cuda" if torch.cuda.is_available() else "cpu" - return device - class LatentsField(BaseModel): """A latents field used for passing latents between invocations""" From 23f0c7035c6d1c0ef7cea987262d70c2aa918e8c Mon Sep 17 00:00:00 2001 From: mickr777 <115216705+mickr777@users.noreply.github.com> Date: Wed, 19 Jul 2023 18:54:50 +1000 Subject: [PATCH 4/4] Tweaks to Image Progress Node (#3833) * Update nodesSlice.ts * Update ProgressImageNode.tsx * remove unused code * Remove Fixed Ratio I was causing issues * fix: Progress Image Node Size --------- Co-authored-by: blessedcoolant <54517381+blessedcoolant@users.noreply.github.com> --- .../nodes/components/ProgressImageNode.tsx | 46 +++++++++++-------- .../src/features/nodes/store/nodesSlice.ts | 9 ++++ 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx b/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx index faaec06e49..142e2a2990 100644 --- a/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx @@ -1,33 +1,46 @@ import { Flex, Image } from '@chakra-ui/react'; -import { NodeProps } from 'reactflow'; -import { InvocationValue } from '../types/types'; - -import { useAppSelector } from 'app/store/storeHooks'; +import { RootState } from 'app/store/store'; import { IAINoContentFallback } from 'common/components/IAIImageFallback'; import { memo } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { NodeProps, OnResize } from 'reactflow'; +import { setProgressNodeSize } from '../store/nodesSlice'; import IAINodeHeader from './IAINode/IAINodeHeader'; import IAINodeResizer from './IAINode/IAINodeResizer'; import NodeWrapper from './NodeWrapper'; -const ProgressImageNode = (props: NodeProps) => { - const progressImage = useAppSelector((state) => state.system.progressImage); +const ProgressImageNode = (props: NodeProps) => { + const progressImage = useSelector( + (state: RootState) => state.system.progressImage + ); + const progressNodeSize = useSelector( + (state: RootState) => state.nodes.progressNodeSize + ); + const dispatch = useDispatch(); const { selected } = props; + const handleResize: OnResize = (_, newSize) => { + dispatch(setProgressNodeSize(newSize)); + }; + return ( - {progressImage ? ( @@ -42,22 +55,17 @@ const ProgressImageNode = (props: NodeProps) => { ) : ( )} - + ); }; diff --git a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts index 833a220336..997d0493dd 100644 --- a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts +++ b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts @@ -35,6 +35,7 @@ export type NodesState = { shouldShowFieldTypeLegend: boolean; shouldShowMinimapPanel: boolean; editorInstance: ReactFlowInstance | undefined; + progressNodeSize: { width: number; height: number }; }; export const initialNodesState: NodesState = { @@ -47,6 +48,7 @@ export const initialNodesState: NodesState = { shouldShowFieldTypeLegend: false, shouldShowMinimapPanel: true, editorInstance: undefined, + progressNodeSize: { width: 512, height: 512 }, }; const nodesSlice = createSlice({ @@ -157,6 +159,12 @@ const nodesSlice = createSlice({ loadFileEdges: (state, action: PayloadAction) => { state.edges = action.payload; }, + setProgressNodeSize: ( + state, + action: PayloadAction<{ width: number; height: number }> + ) => { + state.progressNodeSize = action.payload; + }, }, extraReducers: (builder) => { builder.addCase(receivedOpenAPISchema.fulfilled, (state, action) => { @@ -182,6 +190,7 @@ export const { setEditorInstance, loadFileNodes, loadFileEdges, + setProgressNodeSize, } = nodesSlice.actions; export default nodesSlice.reducer;