mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
Support AMD GPUs on Desktop (#7799)
Add AMD ROCm GPU option to the desktop installer ## What changed - Add an AMD GPU choice to the installer picker with updated recommended badge logic, logo asset, and i18n copy. - Accept and auto-select the new `amd` device type in the install flow when it is detected. - Update `@comfyorg/comfyui-electron-types` and lockfile entries required for the new device enum. ## Why - Desktop users with AMD GPUs need a first-class install path instead of falling back to CPU/manual options. - This reuses the existing picker/device model to keep the change scoped and consistent with current UX. - Tradeoffs: torch mirror selection still falls back to the CPU mirror for AMD until a dedicated ROCm mirror is available. ## Evidence - Interactive Storybook file `apps/desktop-ui/src/components/install/GpuPicker.stories.ts` <img width="1377" height="834" alt="image" src="https://github.com/user-attachments/assets/34145f46-d8cc-4e59-b587-0ab5ee79f888" />
This commit is contained in:
1
THIRD_PARTY_NOTICES.md
Normal file
1
THIRD_PARTY_NOTICES.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
AMD and the AMD Arrow logo are trademarks of Advanced Micro Devices, Inc.
|
||||||
BIN
apps/desktop-ui/public/assets/images/amd-rocm-logo.png
Normal file
BIN
apps/desktop-ui/public/assets/images/amd-rocm-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
84
apps/desktop-ui/src/components/install/GpuPicker.stories.ts
Normal file
84
apps/desktop-ui/src/components/install/GpuPicker.stories.ts
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
// eslint-disable-next-line storybook/no-renderer-packages
|
||||||
|
import type { Meta, StoryObj } from '@storybook/vue3'
|
||||||
|
import type {
|
||||||
|
ElectronAPI,
|
||||||
|
TorchDeviceType
|
||||||
|
} from '@comfyorg/comfyui-electron-types'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
import GpuPicker from './GpuPicker.vue'
|
||||||
|
|
||||||
|
type Platform = ReturnType<ElectronAPI['getPlatform']>
|
||||||
|
type ElectronAPIStub = Pick<ElectronAPI, 'getPlatform'>
|
||||||
|
type WindowWithElectron = Window & { electronAPI?: ElectronAPIStub }
|
||||||
|
|
||||||
|
const meta: Meta<typeof GpuPicker> = {
|
||||||
|
title: 'Desktop/Components/GpuPicker',
|
||||||
|
component: GpuPicker,
|
||||||
|
parameters: {
|
||||||
|
layout: 'padded',
|
||||||
|
backgrounds: {
|
||||||
|
default: 'dark',
|
||||||
|
values: [
|
||||||
|
{ name: 'dark', value: '#0a0a0a' },
|
||||||
|
{ name: 'neutral-900', value: '#171717' },
|
||||||
|
{ name: 'neutral-950', value: '#0a0a0a' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default meta
|
||||||
|
type Story = StoryObj<typeof meta>
|
||||||
|
|
||||||
|
function createElectronDecorator(platform: Platform) {
|
||||||
|
function getPlatform() {
|
||||||
|
return platform
|
||||||
|
}
|
||||||
|
|
||||||
|
return function ElectronDecorator() {
|
||||||
|
const windowWithElectron = window as WindowWithElectron
|
||||||
|
windowWithElectron.electronAPI = { getPlatform }
|
||||||
|
return { template: '<story />' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderWithDevice(device: TorchDeviceType | null) {
|
||||||
|
return function Render() {
|
||||||
|
return {
|
||||||
|
components: { GpuPicker },
|
||||||
|
setup() {
|
||||||
|
const selected = ref<TorchDeviceType | null>(device)
|
||||||
|
return { selected }
|
||||||
|
},
|
||||||
|
template: `
|
||||||
|
<div class="min-h-screen bg-neutral-950 p-8">
|
||||||
|
<GpuPicker v-model:device="selected" />
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const windowsDecorator = createElectronDecorator('win32')
|
||||||
|
const macDecorator = createElectronDecorator('darwin')
|
||||||
|
|
||||||
|
export const WindowsNvidiaSelected: Story = {
|
||||||
|
decorators: [windowsDecorator],
|
||||||
|
render: renderWithDevice('nvidia')
|
||||||
|
}
|
||||||
|
|
||||||
|
export const WindowsAmdSelected: Story = {
|
||||||
|
decorators: [windowsDecorator],
|
||||||
|
render: renderWithDevice('amd')
|
||||||
|
}
|
||||||
|
|
||||||
|
export const WindowsCpuSelected: Story = {
|
||||||
|
decorators: [windowsDecorator],
|
||||||
|
render: renderWithDevice('cpu')
|
||||||
|
}
|
||||||
|
|
||||||
|
export const MacMpsSelected: Story = {
|
||||||
|
decorators: [macDecorator],
|
||||||
|
render: renderWithDevice('mps')
|
||||||
|
}
|
||||||
@@ -11,29 +11,32 @@
|
|||||||
<!-- Apple Metal / NVIDIA -->
|
<!-- Apple Metal / NVIDIA -->
|
||||||
<HardwareOption
|
<HardwareOption
|
||||||
v-if="platform === 'darwin'"
|
v-if="platform === 'darwin'"
|
||||||
:image-path="'./assets/images/apple-mps-logo.png'"
|
image-path="./assets/images/apple-mps-logo.png"
|
||||||
placeholder-text="Apple Metal"
|
placeholder-text="Apple Metal"
|
||||||
subtitle="Apple Metal"
|
subtitle="Apple Metal"
|
||||||
:value="'mps'"
|
|
||||||
:selected="selected === 'mps'"
|
:selected="selected === 'mps'"
|
||||||
:recommended="true"
|
|
||||||
@click="pickGpu('mps')"
|
@click="pickGpu('mps')"
|
||||||
/>
|
/>
|
||||||
|
<template v-else>
|
||||||
<HardwareOption
|
<HardwareOption
|
||||||
v-else
|
image-path="./assets/images/nvidia-logo-square.jpg"
|
||||||
:image-path="'./assets/images/nvidia-logo-square.jpg'"
|
|
||||||
placeholder-text="NVIDIA"
|
placeholder-text="NVIDIA"
|
||||||
:subtitle="$t('install.gpuPicker.nvidiaSubtitle')"
|
:subtitle="$t('install.gpuPicker.nvidiaSubtitle')"
|
||||||
:value="'nvidia'"
|
|
||||||
:selected="selected === 'nvidia'"
|
:selected="selected === 'nvidia'"
|
||||||
:recommended="true"
|
|
||||||
@click="pickGpu('nvidia')"
|
@click="pickGpu('nvidia')"
|
||||||
/>
|
/>
|
||||||
|
<HardwareOption
|
||||||
|
image-path="./assets/images/amd-rocm-logo.png"
|
||||||
|
placeholder-text="AMD"
|
||||||
|
:subtitle="$t('install.gpuPicker.amdSubtitle')"
|
||||||
|
:selected="selected === 'amd'"
|
||||||
|
@click="pickGpu('amd')"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
<!-- CPU -->
|
<!-- CPU -->
|
||||||
<HardwareOption
|
<HardwareOption
|
||||||
placeholder-text="CPU"
|
placeholder-text="CPU"
|
||||||
:subtitle="$t('install.gpuPicker.cpuSubtitle')"
|
:subtitle="$t('install.gpuPicker.cpuSubtitle')"
|
||||||
:value="'cpu'"
|
|
||||||
:selected="selected === 'cpu'"
|
:selected="selected === 'cpu'"
|
||||||
@click="pickGpu('cpu')"
|
@click="pickGpu('cpu')"
|
||||||
/>
|
/>
|
||||||
@@ -41,7 +44,6 @@
|
|||||||
<HardwareOption
|
<HardwareOption
|
||||||
placeholder-text="Manual Install"
|
placeholder-text="Manual Install"
|
||||||
:subtitle="$t('install.gpuPicker.manualSubtitle')"
|
:subtitle="$t('install.gpuPicker.manualSubtitle')"
|
||||||
:value="'unsupported'"
|
|
||||||
:selected="selected === 'unsupported'"
|
:selected="selected === 'unsupported'"
|
||||||
@click="pickGpu('unsupported')"
|
@click="pickGpu('unsupported')"
|
||||||
/>
|
/>
|
||||||
@@ -81,13 +83,15 @@ const selected = defineModel<TorchDeviceType | null>('device', {
|
|||||||
const electron = electronAPI()
|
const electron = electronAPI()
|
||||||
const platform = electron.getPlatform()
|
const platform = electron.getPlatform()
|
||||||
|
|
||||||
const showRecommendedBadge = computed(
|
const recommendedDevices: TorchDeviceType[] = ['mps', 'nvidia', 'amd']
|
||||||
() => selected.value === 'mps' || selected.value === 'nvidia'
|
const showRecommendedBadge = computed(() =>
|
||||||
|
selected.value ? recommendedDevices.includes(selected.value) : false
|
||||||
)
|
)
|
||||||
|
|
||||||
const descriptionKeys = {
|
const descriptionKeys = {
|
||||||
mps: 'appleMetal',
|
mps: 'appleMetal',
|
||||||
nvidia: 'nvidia',
|
nvidia: 'nvidia',
|
||||||
|
amd: 'amd',
|
||||||
cpu: 'cpu',
|
cpu: 'cpu',
|
||||||
unsupported: 'manual'
|
unsupported: 'manual'
|
||||||
} as const
|
} as const
|
||||||
@@ -97,7 +101,7 @@ const descriptionText = computed(() => {
|
|||||||
return st(`install.gpuPicker.${key}Description`, '')
|
return st(`install.gpuPicker.${key}Description`, '')
|
||||||
})
|
})
|
||||||
|
|
||||||
const pickGpu = (value: TorchDeviceType) => {
|
function pickGpu(value: TorchDeviceType) {
|
||||||
selected.value = value
|
selected.value = value
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ export const AppleMetalSelected: Story = {
|
|||||||
imagePath: '/assets/images/apple-mps-logo.png',
|
imagePath: '/assets/images/apple-mps-logo.png',
|
||||||
placeholderText: 'Apple Metal',
|
placeholderText: 'Apple Metal',
|
||||||
subtitle: 'Apple Metal',
|
subtitle: 'Apple Metal',
|
||||||
value: 'mps',
|
|
||||||
selected: true
|
selected: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,7 +38,6 @@ export const AppleMetalUnselected: Story = {
|
|||||||
imagePath: '/assets/images/apple-mps-logo.png',
|
imagePath: '/assets/images/apple-mps-logo.png',
|
||||||
placeholderText: 'Apple Metal',
|
placeholderText: 'Apple Metal',
|
||||||
subtitle: 'Apple Metal',
|
subtitle: 'Apple Metal',
|
||||||
value: 'mps',
|
|
||||||
selected: false
|
selected: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,7 +46,6 @@ export const CPUOption: Story = {
|
|||||||
args: {
|
args: {
|
||||||
placeholderText: 'CPU',
|
placeholderText: 'CPU',
|
||||||
subtitle: 'Subtitle',
|
subtitle: 'Subtitle',
|
||||||
value: 'cpu',
|
|
||||||
selected: false
|
selected: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -57,7 +54,6 @@ export const ManualInstall: Story = {
|
|||||||
args: {
|
args: {
|
||||||
placeholderText: 'Manual Install',
|
placeholderText: 'Manual Install',
|
||||||
subtitle: 'Subtitle',
|
subtitle: 'Subtitle',
|
||||||
value: 'unsupported',
|
|
||||||
selected: false
|
selected: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,7 +63,6 @@ export const NvidiaSelected: Story = {
|
|||||||
imagePath: '/assets/images/nvidia-logo-square.jpg',
|
imagePath: '/assets/images/nvidia-logo-square.jpg',
|
||||||
placeholderText: 'NVIDIA',
|
placeholderText: 'NVIDIA',
|
||||||
subtitle: 'NVIDIA',
|
subtitle: 'NVIDIA',
|
||||||
value: 'nvidia',
|
|
||||||
selected: true
|
selected: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,17 +36,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { TorchDeviceType } from '@comfyorg/comfyui-electron-types'
|
|
||||||
|
|
||||||
import { cn } from '@/utils/tailwindUtil'
|
import { cn } from '@/utils/tailwindUtil'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
imagePath?: string
|
imagePath?: string
|
||||||
placeholderText: string
|
placeholderText: string
|
||||||
subtitle?: string
|
subtitle?: string
|
||||||
value: TorchDeviceType
|
|
||||||
selected?: boolean
|
selected?: boolean
|
||||||
recommended?: boolean
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defineProps<Props>()
|
defineProps<Props>()
|
||||||
|
|||||||
@@ -104,8 +104,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { TorchDeviceType } from '@comfyorg/comfyui-electron-types'
|
|
||||||
import { TorchMirrorUrl } from '@comfyorg/comfyui-electron-types'
|
import { TorchMirrorUrl } from '@comfyorg/comfyui-electron-types'
|
||||||
|
import type { TorchDeviceType } from '@comfyorg/comfyui-electron-types'
|
||||||
import { isInChina } from '@comfyorg/shared-frontend-utils/networkUtil'
|
import { isInChina } from '@comfyorg/shared-frontend-utils/networkUtil'
|
||||||
import Accordion from 'primevue/accordion'
|
import Accordion from 'primevue/accordion'
|
||||||
import AccordionContent from 'primevue/accordioncontent'
|
import AccordionContent from 'primevue/accordioncontent'
|
||||||
@@ -155,7 +155,7 @@ const activeAccordionIndex = ref<string[] | undefined>(undefined)
|
|||||||
const electron = electronAPI()
|
const electron = electronAPI()
|
||||||
|
|
||||||
// Mirror configuration logic
|
// Mirror configuration logic
|
||||||
const getTorchMirrorItem = (device: TorchDeviceType): UVMirror => {
|
function getTorchMirrorItem(device: TorchDeviceType): UVMirror {
|
||||||
const settingId = 'Comfy-Desktop.UV.TorchInstallMirror'
|
const settingId = 'Comfy-Desktop.UV.TorchInstallMirror'
|
||||||
switch (device) {
|
switch (device) {
|
||||||
case 'mps':
|
case 'mps':
|
||||||
@@ -170,6 +170,7 @@ const getTorchMirrorItem = (device: TorchDeviceType): UVMirror => {
|
|||||||
mirror: TorchMirrorUrl.Cuda,
|
mirror: TorchMirrorUrl.Cuda,
|
||||||
fallbackMirror: TorchMirrorUrl.Cuda
|
fallbackMirror: TorchMirrorUrl.Cuda
|
||||||
}
|
}
|
||||||
|
case 'amd':
|
||||||
case 'cpu':
|
case 'cpu':
|
||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ const taskStore = useMaintenanceTaskStore()
|
|||||||
defineProps<{
|
defineProps<{
|
||||||
displayAsList: string
|
displayAsList: string
|
||||||
filter: MaintenanceFilter
|
filter: MaintenanceFilter
|
||||||
isRefreshing: boolean
|
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const executeTask = async (task: MaintenanceTask) => {
|
const executeTask = async (task: MaintenanceTask) => {
|
||||||
|
|||||||
@@ -143,6 +143,8 @@ const goToPreviousStep = () => {
|
|||||||
const electron = electronAPI()
|
const electron = electronAPI()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const install = async () => {
|
const install = async () => {
|
||||||
|
if (!device.value) return
|
||||||
|
|
||||||
const options: InstallOptions = {
|
const options: InstallOptions = {
|
||||||
installPath: installPath.value,
|
installPath: installPath.value,
|
||||||
autoUpdate: autoUpdate.value,
|
autoUpdate: autoUpdate.value,
|
||||||
@@ -152,7 +154,6 @@ const install = async () => {
|
|||||||
pythonMirror: pythonMirror.value,
|
pythonMirror: pythonMirror.value,
|
||||||
pypiMirror: pypiMirror.value,
|
pypiMirror: pypiMirror.value,
|
||||||
torchMirror: torchMirror.value,
|
torchMirror: torchMirror.value,
|
||||||
// @ts-expect-error fixme ts strict error
|
|
||||||
device: device.value
|
device: device.value
|
||||||
}
|
}
|
||||||
electron.installComfyUI(options)
|
electron.installComfyUI(options)
|
||||||
@@ -166,7 +167,11 @@ onMounted(async () => {
|
|||||||
if (!electron) return
|
if (!electron) return
|
||||||
|
|
||||||
const detectedGpu = await electron.Config.getDetectedGpu()
|
const detectedGpu = await electron.Config.getDetectedGpu()
|
||||||
if (detectedGpu === 'mps' || detectedGpu === 'nvidia') {
|
if (
|
||||||
|
detectedGpu === 'mps' ||
|
||||||
|
detectedGpu === 'nvidia' ||
|
||||||
|
detectedGpu === 'amd'
|
||||||
|
) {
|
||||||
device.value = detectedGpu
|
device.value = detectedGpu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,6 @@
|
|||||||
class="border-neutral-700 border-solid border-x-0 border-y"
|
class="border-neutral-700 border-solid border-x-0 border-y"
|
||||||
:filter
|
:filter
|
||||||
:display-as-list
|
:display-as-list
|
||||||
:is-refreshing
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Actions -->
|
<!-- Actions -->
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
"prepare": "husky || true && git config blame.ignoreRevsFile .git-blame-ignore-revs || true",
|
"prepare": "husky || true && git config blame.ignoreRevsFile .git-blame-ignore-revs || true",
|
||||||
"preview": "nx preview",
|
"preview": "nx preview",
|
||||||
"storybook": "nx storybook",
|
"storybook": "nx storybook",
|
||||||
|
"storybook:desktop": "nx run @comfyorg/desktop-ui:storybook",
|
||||||
"stylelint:fix": "stylelint --cache --fix '{apps,packages,src}/**/*.{css,vue}'",
|
"stylelint:fix": "stylelint --cache --fix '{apps,packages,src}/**/*.{css,vue}'",
|
||||||
"stylelint": "stylelint --cache '{apps,packages,src}/**/*.{css,vue}'",
|
"stylelint": "stylelint --cache '{apps,packages,src}/**/*.{css,vue}'",
|
||||||
"test:browser": "pnpm exec nx e2e",
|
"test:browser": "pnpm exec nx e2e",
|
||||||
|
|||||||
14
pnpm-lock.yaml
generated
14
pnpm-lock.yaml
generated
@@ -10,8 +10,8 @@ catalogs:
|
|||||||
specifier: ^5.2.0
|
specifier: ^5.2.0
|
||||||
version: 5.2.0
|
version: 5.2.0
|
||||||
'@comfyorg/comfyui-electron-types':
|
'@comfyorg/comfyui-electron-types':
|
||||||
specifier: 0.5.5
|
specifier: 0.6.2
|
||||||
version: 0.5.5
|
version: 0.6.2
|
||||||
'@eslint/js':
|
'@eslint/js':
|
||||||
specifier: ^9.39.1
|
specifier: ^9.39.1
|
||||||
version: 9.39.1
|
version: 9.39.1
|
||||||
@@ -337,7 +337,7 @@ importers:
|
|||||||
version: 1.3.1
|
version: 1.3.1
|
||||||
'@comfyorg/comfyui-electron-types':
|
'@comfyorg/comfyui-electron-types':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 0.5.5
|
version: 0.6.2
|
||||||
'@comfyorg/design-system':
|
'@comfyorg/design-system':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:packages/design-system
|
version: link:packages/design-system
|
||||||
@@ -737,7 +737,7 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@comfyorg/comfyui-electron-types':
|
'@comfyorg/comfyui-electron-types':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 0.5.5
|
version: 0.6.2
|
||||||
'@comfyorg/shared-frontend-utils':
|
'@comfyorg/shared-frontend-utils':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/shared-frontend-utils
|
version: link:../../packages/shared-frontend-utils
|
||||||
@@ -1477,8 +1477,8 @@ packages:
|
|||||||
'@cacheable/utils@2.3.2':
|
'@cacheable/utils@2.3.2':
|
||||||
resolution: {integrity: sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==}
|
resolution: {integrity: sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==}
|
||||||
|
|
||||||
'@comfyorg/comfyui-electron-types@0.5.5':
|
'@comfyorg/comfyui-electron-types@0.6.2':
|
||||||
resolution: {integrity: sha512-f3XOXpMsALIwHakz7FekVPm4/Fh2pvJPEi8tRe8jYGBt8edsd4Mkkq31Yjs2Weem3BP7yNwbdNuSiQdP/pxJyg==}
|
resolution: {integrity: sha512-r3By5Wbizq8jagUrhtcym79HYUTinsvoBnYkFFWbUmrURBWIaC0HduFVkRkI1PNdI76piW+JSOJJnw00YCVXeg==}
|
||||||
|
|
||||||
'@csstools/color-helpers@5.1.0':
|
'@csstools/color-helpers@5.1.0':
|
||||||
resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
|
resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
|
||||||
@@ -9179,7 +9179,7 @@ snapshots:
|
|||||||
hashery: 1.3.0
|
hashery: 1.3.0
|
||||||
keyv: 5.5.5
|
keyv: 5.5.5
|
||||||
|
|
||||||
'@comfyorg/comfyui-electron-types@0.5.5': {}
|
'@comfyorg/comfyui-electron-types@0.6.2': {}
|
||||||
|
|
||||||
'@csstools/color-helpers@5.1.0': {}
|
'@csstools/color-helpers@5.1.0': {}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ packages:
|
|||||||
|
|
||||||
catalog:
|
catalog:
|
||||||
'@alloc/quick-lru': ^5.2.0
|
'@alloc/quick-lru': ^5.2.0
|
||||||
'@comfyorg/comfyui-electron-types': 0.5.5
|
'@comfyorg/comfyui-electron-types': 0.6.2
|
||||||
'@eslint/js': ^9.39.1
|
'@eslint/js': ^9.39.1
|
||||||
'@iconify-json/lucide': ^1.1.178
|
'@iconify-json/lucide': ^1.1.178
|
||||||
'@iconify/json': ^2.2.380
|
'@iconify/json': ^2.2.380
|
||||||
|
|||||||
@@ -508,10 +508,12 @@
|
|||||||
"title": "Choose your hardware setup",
|
"title": "Choose your hardware setup",
|
||||||
"recommended": "RECOMMENDED",
|
"recommended": "RECOMMENDED",
|
||||||
"nvidiaSubtitle": "NVIDIA CUDA",
|
"nvidiaSubtitle": "NVIDIA CUDA",
|
||||||
|
"amdSubtitle": "AMD ROCm™",
|
||||||
"cpuSubtitle": "CPU Mode",
|
"cpuSubtitle": "CPU Mode",
|
||||||
"manualSubtitle": "Manual Setup",
|
"manualSubtitle": "Manual Setup",
|
||||||
"appleMetalDescription": "Leverages your Mac's GPU for faster speed and a better overall experience",
|
"appleMetalDescription": "Leverages your Mac's GPU for faster speed and a better overall experience",
|
||||||
"nvidiaDescription": "Use your NVIDIA GPU with CUDA acceleration for the best performance.",
|
"nvidiaDescription": "Use your NVIDIA GPU with CUDA acceleration for the best performance.",
|
||||||
|
"amdDescription": "Use your AMD GPU with ROCm™ acceleration for the best performance.",
|
||||||
"cpuDescription": "Use CPU mode for compatibility when GPU acceleration is not available",
|
"cpuDescription": "Use CPU mode for compatibility when GPU acceleration is not available",
|
||||||
"manualDescription": "Configure ComfyUI manually for advanced setups or unsupported hardware"
|
"manualDescription": "Configure ComfyUI manually for advanced setups or unsupported hardware"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user