forked from MeloNX/MeloNX
Compare commits
13 Commits
c8a3124cca
...
08ee9b18ea
Author | SHA1 | Date | |
---|---|---|---|
08ee9b18ea | |||
aadc258187 | |||
1c75d22190 | |||
57c297369a | |||
56544db198 | |||
6ec2ad2841 | |||
9d6c7d9900 | |||
9ddc6a969c | |||
|
1b69c0bdc6 | ||
|
18d98755f6 | ||
|
c6de4abce3 | ||
|
e5c5e8572e | ||
c0e8570293 |
@ -18,12 +18,18 @@ git clone https://git.743378673.xyz/MeloNX/MeloNX.git
|
||||
cd MeloNX
|
||||
./compile.sh
|
||||
```
|
||||
|
||||
You may need to run this command if compilation fails, then run the `./compile.sh` command again (You will need to put in your user password. Your password will not be shown at all.)
|
||||
```
|
||||
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
|
||||
```
|
||||
|
||||
|
||||
However, if you only need to update MeloNX, make sure you have cd into the directory then run this then skip to step 5
|
||||
```
|
||||
git pull
|
||||
./compile.sh
|
||||
```
|
||||
|
||||
### 2. Open the Xcode Project
|
||||
|
||||
Navigate to the **Xcode project file** located at:
|
||||
|
14
LICENSE.txt
14
LICENSE.txt
@ -1,9 +1,15 @@
|
||||
MIT License
|
||||
MeloNX License
|
||||
|
||||
Copyright (c) Ryujinx Team and Contributors
|
||||
Copyright (c) MeloNX Team and Contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
Permission is hereby granted, free of charge, to any person (except anyone who has previously attempted or is currently attempting to merge MeloNX with Pomelo) obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. Every file is under this license, and all copies must be redistributed under the same license.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Anyone who attempts or has attempted to merge MeloNX with Pomelo, or otherwise use this source code in conjunction with Pomelo, is prohibited from using, copying, modifying, or distributing the source code without first obtaining explicit, written permission from Stossy11.
|
||||
|
||||
Additionally, the names of the developers or contributors to this project may not be used to endorse or promote products derived from this software without specific, prior written permission from the respective developer(s).
|
||||
|
||||
Ryujinx is licensed under the MIT License. Copyright (c) Ryujinx contributors. All rights to Ryujinx are held by its respective copyright holders, and its use is subject to the terms of the MIT License.
|
14
README.md
14
README.md
@ -14,12 +14,12 @@
|
||||
|
||||
<p align="center">
|
||||
MeloNX is an iOS Nintendo Switch emulator based on Ryujinx, written primarily in C#. Designed to bring accurate performance and a user-friendly interface to iOS, MeloNX makes Switch games accessible on Apple devices.
|
||||
Developed from the ground up, MeloNX is open-source and available on Github under the <a href="https://github.com/MeloNX-Emu/MeloNX/blob/master/LICENSE.txt" target="_blank">MIT license</a>. <br
|
||||
Developed from the ground up, MeloNX is open-source and available on Github under the <a href="https://github.com/MeloNX-Emu/MeloNX/blob/master/LICENSE.txt" target="_blank">MeloNX license (Based on MIT)</a>. <br
|
||||
</p>
|
||||
|
||||
# Compatibility
|
||||
|
||||
MeloNX works on iPhone X and later and iPad 7th Gen and later. Check out the Compatibility on the <a href="https://melonx.org/compatibility/$0" target="_blank">website</a>.
|
||||
MeloNX works on iPhone X and later and iPad 7th Gen and later. Check out the Compatibility on the <a href="https://melonx.org/compatibility/" target="_blank">website</a>.
|
||||
|
||||
# Usage
|
||||
|
||||
@ -53,8 +53,10 @@ MeloNX works on iPhone X and later and iPad 7th Gen and later. Check out the Com
|
||||
- Use your preferred method to enable Just-In-Time (JIT) compilation.
|
||||
|
||||
5. **Add Necessary Files**
|
||||
|
||||
If having Issues installing firmware (Make sure your Keys are installed first)
|
||||
- If needed, install firmware and keys from **Ryujinx Desktop**.
|
||||
- Copy the **bis** and **system** folders if you encounter issues.
|
||||
- Copy the **bis** and **system** folders
|
||||
|
||||
### Xcode
|
||||
|
||||
@ -62,8 +64,10 @@ MeloNX works on iPhone X and later and iPad 7th Gen and later. Check out the Com
|
||||
- Visit the [guide here](https://git.743378673.xyz/MeloNX/MeloNX/src/branch/XC-ios-ht/Compile.md).
|
||||
|
||||
2. **Add Necessary Files**
|
||||
|
||||
If having Issues installing firmware (Make sure your Keys are installed first)
|
||||
- If needed, install firmware and keys from **Ryujinx Desktop**.
|
||||
- Copy the **bis** and **system** folders if you encounter issues.
|
||||
- Copy the **bis** and **system** folders
|
||||
|
||||
## Features
|
||||
|
||||
@ -104,7 +108,7 @@ MeloNX works on iPhone X and later and iPad 7th Gen and later. Check out the Com
|
||||
|
||||
## License
|
||||
|
||||
This software is licensed under the terms of the [MIT license](LICENSE.txt).
|
||||
This software is licensed under the terms of the [MeloNX license (Based on MIT License)](LICENSE.txt).
|
||||
This project makes use of code authored by the libvpx project, licensed under BSD and the ffmpeg project, licensed under LGPLv3.
|
||||
See [LICENSE.txt](LICENSE.txt) and [THIRDPARTY.md](distribution/legal/THIRDPARTY.md) for more details.
|
||||
|
||||
|
@ -54,6 +54,16 @@
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
4E50F49E2D5CC28B0080F1D1 /* Embed Watch Content */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "$(CONTENTS_FOLDER_PATH)/Watch";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Watch Content";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4E80AA092CD6FAA800029585 /* Embed Libraries */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -269,6 +279,7 @@
|
||||
4E80A98A2CD6F54500029585 /* Frameworks */,
|
||||
4E80A98B2CD6F54500029585 /* Resources */,
|
||||
4E80AA092CD6FAA800029585 /* Embed Libraries */,
|
||||
4E50F49E2D5CC28B0080F1D1 /* Embed Watch Content */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@ -339,7 +350,7 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = 1;
|
||||
LastSwiftUpdateCheck = 1610;
|
||||
LastSwiftUpdateCheck = 1620;
|
||||
LastUpgradeCheck = 1610;
|
||||
TargetAttributes = {
|
||||
4E80A98C2CD6F54500029585 = {
|
||||
@ -641,6 +652,10 @@
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
);
|
||||
GCC_OPTIMIZATION_LEVEL = fast;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@ -687,8 +702,16 @@
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
);
|
||||
MARKETING_VERSION = 0.0.8;
|
||||
MARKETING_VERSION = 1.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
@ -728,6 +751,10 @@
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
);
|
||||
GCC_OPTIMIZATION_LEVEL = fast;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@ -774,8 +801,16 @@
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
|
||||
);
|
||||
MARKETING_VERSION = 0.0.8;
|
||||
MARKETING_VERSION = 1.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
|
Binary file not shown.
@ -12,12 +12,12 @@
|
||||
<key>Ryujinx.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>com.Stossy11.MeloNX.RyujinxAg.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
<integer>4</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
|
@ -91,6 +91,8 @@ class Ryujinx {
|
||||
var ignoreMissingServices: Bool
|
||||
var expandRam: Bool
|
||||
var dfsIntegrityChecks: Bool
|
||||
var disablePTC: Bool
|
||||
var disablevsync: Bool
|
||||
|
||||
|
||||
init(gamepath: String,
|
||||
@ -112,7 +114,9 @@ class Ryujinx {
|
||||
ignoreMissingServices: Bool = false,
|
||||
hypervisor: Bool = false,
|
||||
expandRam: Bool = false,
|
||||
dfsIntegrityChecks: Bool = false
|
||||
dfsIntegrityChecks: Bool = false,
|
||||
disablePTC: Bool = false,
|
||||
disablevsync: Bool = false
|
||||
) {
|
||||
self.gamepath = gamepath
|
||||
self.inputids = inputids
|
||||
@ -134,6 +138,8 @@ class Ryujinx {
|
||||
self.ignoreMissingServices = ignoreMissingServices
|
||||
self.hypervisor = hypervisor
|
||||
self.dfsIntegrityChecks = dfsIntegrityChecks
|
||||
self.disablePTC = disablePTC
|
||||
self.disablevsync = disablevsync
|
||||
}
|
||||
}
|
||||
|
||||
@ -261,8 +267,14 @@ class Ryujinx {
|
||||
args.append("--correct-controller")
|
||||
}
|
||||
|
||||
if config.disablePTC {
|
||||
args.append("--disable-ptc")
|
||||
}
|
||||
|
||||
if config.disablevsync {
|
||||
args.append("--disable-vsync")
|
||||
}
|
||||
|
||||
// args.append("--disable-vsync")
|
||||
|
||||
if config.hypervisor {
|
||||
args.append("--use-hypervisor")
|
||||
|
@ -42,6 +42,7 @@ struct ContentView: View {
|
||||
@AppStorage("quit") var quit: Bool = false
|
||||
@State var quits: Bool = false
|
||||
@AppStorage("MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS") var mVKPreFillBuffer: Bool = true
|
||||
@AppStorage("MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS") var syncqsubmits: Bool = false
|
||||
|
||||
// Loading Animation
|
||||
@State private var clumpOffset: CGFloat = -100
|
||||
@ -62,6 +63,7 @@ struct ContentView: View {
|
||||
MoltenVKSettings(string: "MVK_USE_METAL_PRIVATE_API", value: "1"),
|
||||
MoltenVKSettings(string: "MVK_CONFIG_USE_METAL_PRIVATE_API", value: "1"),
|
||||
MoltenVKSettings(string: "MVK_DEBUG", value: "0"),
|
||||
MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "0"),
|
||||
// MoltenVKSettings(string: "MVK_CONFIG_LOG_LEVEL", value: "0"),
|
||||
// MVK_CONFIG_LOG_LEVEL
|
||||
//MVK_DEBUG
|
||||
@ -354,6 +356,11 @@ struct ContentView: View {
|
||||
setenv(setting.string, setting.value, 1)
|
||||
}
|
||||
|
||||
if syncqsubmits {
|
||||
let setting = MoltenVKSettings(string: "MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", value: "2")
|
||||
setenv(setting.string, setting.value, 1)
|
||||
}
|
||||
|
||||
if config.inputids.isEmpty {
|
||||
config.inputids.append("0")
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ struct ControllerView: View {
|
||||
DPadView()
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
Spacer()
|
||||
VStack {
|
||||
ShoulderButtonsViewRight()
|
||||
ZStack {
|
||||
@ -53,7 +53,6 @@ struct ControllerView: View {
|
||||
ABXYView()
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
|
||||
HStack {
|
||||
@ -63,8 +62,8 @@ struct ControllerView: View {
|
||||
.padding(.horizontal, 40)
|
||||
}
|
||||
}
|
||||
.padding(.bottom, geometry.size.height / 3.2) // very broken
|
||||
}
|
||||
|
||||
} else {
|
||||
// could be landscape
|
||||
VStack {
|
||||
@ -100,12 +99,12 @@ struct ControllerView: View {
|
||||
// Spacer()
|
||||
VStack {
|
||||
// Spacer()
|
||||
ButtonView(button: .back) // Adding the + button
|
||||
ButtonView(button: .back) // Adding the - button
|
||||
}
|
||||
Spacer()
|
||||
VStack {
|
||||
// Spacer()
|
||||
ButtonView(button: .start) // Adding the - button
|
||||
ButtonView(button: .start) // Adding the + button
|
||||
}
|
||||
// Spacer()
|
||||
}
|
||||
|
@ -14,8 +14,18 @@ struct MetalView: UIViewRepresentable {
|
||||
|
||||
func makeUIView(context: Context) -> UIView {
|
||||
let metalLayer = Ryujinx.shared.metalLayer!
|
||||
metalLayer.frame = Ryujinx.shared.emulationUIView.bounds
|
||||
Ryujinx.shared.emulationUIView.contentScaleFactor = metalLayer.contentsScale // Right size and Fix Touch :3
|
||||
|
||||
var view = UIView()
|
||||
|
||||
metalLayer.frame = view.bounds
|
||||
if airplay {
|
||||
metalLayer.contentsScale = view.contentScaleFactor
|
||||
} else {
|
||||
Ryujinx.shared.emulationUIView.contentScaleFactor = metalLayer.contentsScale // Right size and Fix Touch :3
|
||||
}
|
||||
|
||||
Ryujinx.shared.emulationUIView = view
|
||||
|
||||
if !Ryujinx.shared.emulationUIView.subviews.contains(where: { $0 == metalLayer }) {
|
||||
Ryujinx.shared.emulationUIView.layer.addSublayer(metalLayer)
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ struct SettingsView: View {
|
||||
@AppStorage("showScreenShotButton") var ssb: Bool = false
|
||||
|
||||
@AppStorage("MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS") var mVKPreFillBuffer: Bool = false
|
||||
@AppStorage("MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS") var syncqsubmits: Bool = false
|
||||
|
||||
@AppStorage("performacehud") var performacehud: Bool = false
|
||||
|
||||
@ -71,6 +72,11 @@ struct SettingsView: View {
|
||||
}
|
||||
.tint(.blue)
|
||||
|
||||
Toggle(isOn: $config.disablevsync) {
|
||||
labelWithIcon("Disable VSync", iconName: "arrow.triangle.2.circlepath")
|
||||
}
|
||||
.tint(.blue)
|
||||
|
||||
|
||||
Toggle(isOn: $config.enableTextureRecompression) {
|
||||
labelWithIcon("Texture Recompression", iconName: "rectangle.compress.vertical")
|
||||
@ -85,8 +91,7 @@ struct SettingsView: View {
|
||||
Toggle(isOn: $config.macroHLE) {
|
||||
labelWithIcon("Macro HLE", iconName: "gearshape")
|
||||
}.tint(.blue)
|
||||
|
||||
|
||||
|
||||
|
||||
VStack(alignment: .leading, spacing: 10) {
|
||||
HStack {
|
||||
@ -302,8 +307,12 @@ struct SettingsView: View {
|
||||
}
|
||||
}
|
||||
|
||||
Toggle(isOn: $config.disablePTC) {
|
||||
labelWithIcon("Disable PTC", iconName: "cpu")
|
||||
}.tint(.blue)
|
||||
|
||||
if let cpuInfo = getCPUInfo(), cpuInfo.hasPrefix("Apple M") {
|
||||
if #available (iOS 16.4, *), getEntitlementValue("com.apple.private.hypervisor") {
|
||||
if #available (iOS 16.4, *) {
|
||||
Toggle(isOn: .constant(false)) {
|
||||
labelWithIcon("Hypervisor", iconName: "bolt.fill")
|
||||
}
|
||||
@ -312,19 +321,18 @@ struct SettingsView: View {
|
||||
.onAppear() {
|
||||
print("CPU Info: \(cpuInfo)")
|
||||
}
|
||||
} else {
|
||||
} else if getEntitlementValue("com.apple.private.hypervisor") {
|
||||
Toggle(isOn: $config.hypervisor) {
|
||||
labelWithIcon("Hypervisor", iconName: "bolt.fill")
|
||||
}
|
||||
.tint(.blue)
|
||||
.onAppear() {
|
||||
print("CPU Info: \(cpuInfo)")
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} header: {
|
||||
Text("CPU Mode")
|
||||
Text("CPU")
|
||||
.font(.title3.weight(.semibold))
|
||||
.textCase(nil)
|
||||
.headerProminence(.increased)
|
||||
@ -391,6 +399,24 @@ struct SettingsView: View {
|
||||
.tint(.blue)
|
||||
}
|
||||
|
||||
Toggle(isOn: $syncqsubmits) {
|
||||
labelWithIcon("MVK: Synchronous Queue Submits", iconName: "line.diagonal")
|
||||
}.tint(.blue)
|
||||
.contextMenu() {
|
||||
Button {
|
||||
if let mainWindow = UIApplication.shared.windows.last {
|
||||
let alertController = UIAlertController(title: "About MVK: Synchronous Queue Submits", message: "Enable this option if Mario Kart 8 is crashing at Grand Prix mode.", preferredStyle: .alert)
|
||||
|
||||
let doneButton = UIAlertAction(title: "OK", style: .cancel, handler: nil)
|
||||
alertController.addAction(doneButton)
|
||||
|
||||
mainWindow.rootViewController?.present(alertController, animated: true)
|
||||
}
|
||||
} label: {
|
||||
Text("About")
|
||||
}
|
||||
}
|
||||
|
||||
DisclosureGroup {
|
||||
Toggle(isOn: $config.debuglogs) {
|
||||
labelWithIcon("Debug Logs", iconName: "exclamationmark.bubble")
|
||||
|
Binary file not shown.
@ -23,13 +23,9 @@ namespace Ryujinx.Graphics.Vulkan.MoltenVK
|
||||
|
||||
config.UseMetalArgumentBuffers = true;
|
||||
|
||||
if (OperatingSystem.IsIOSVersionAtLeast(17)) {
|
||||
config.SemaphoreSupportStyle = MVKVkSemaphoreSupportStyle.MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE;
|
||||
}
|
||||
config.SemaphoreSupportStyle = MVKVkSemaphoreSupportStyle.MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE;
|
||||
|
||||
config.MaxActiveMetalCommandBuffersPerQueue = 1024;
|
||||
|
||||
config.SynchronousQueueSubmits = false;
|
||||
|
||||
config.ResumeLostDevice = true;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user