mirror of
https://github.com/utmapp/UTM.git
synced 2026-10-12 02:24:01 +00:00
qemu: enable support for CGL backend
Thanks to @startergo for the changes. This should enable OpenGL 4.1 on Linux Resolves #4285
This commit is contained in:
@@ -201,7 +201,7 @@ import Virtualization // for getting network interfaces
|
||||
} else {
|
||||
"streaming-video=filter"
|
||||
}
|
||||
"gl=\(isGLSupported && !isRemoteSpice ? "on" : "off")"
|
||||
"gl=\(glBackend)"
|
||||
f()
|
||||
f("-chardev")
|
||||
if isRemoteSpice {
|
||||
@@ -281,7 +281,28 @@ import Virtualization // for getting network interfaces
|
||||
display.hardware.rawValue.contains("-gl-") || display.hardware.rawValue.hasSuffix("-gl")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private var rendererBackend: UTMQEMURendererBackend {
|
||||
let rawValue = UserDefaults.standard.integer(forKey: "QEMURendererBackend")
|
||||
return UTMQEMURendererBackend(rawValue: rawValue) ?? .qemuRendererBackendDefault
|
||||
}
|
||||
|
||||
private var glBackend: String {
|
||||
if isGLSupported && !isRemoteSpice {
|
||||
#if os(macOS)
|
||||
if rendererBackend == .qemuRendererBackendCGL {
|
||||
return "core"
|
||||
} else {
|
||||
return "es"
|
||||
}
|
||||
#else
|
||||
return "on"
|
||||
#endif
|
||||
} else {
|
||||
return "off"
|
||||
}
|
||||
}
|
||||
|
||||
private var isSparc: Bool {
|
||||
system.architecture == .sparc || system.architecture == .sparc64
|
||||
}
|
||||
|
||||
@@ -232,6 +232,7 @@ struct DisplaySettingsView: View {
|
||||
Text("Default").tag(UTMQEMURendererBackend.qemuRendererBackendDefault)
|
||||
Text("ANGLE (OpenGL)").tag(UTMQEMURendererBackend.qemuRendererBackendAngleGL)
|
||||
Text("ANGLE (Metal)").tag(UTMQEMURendererBackend.qemuRendererBackendAngleMetal)
|
||||
Text("Apple Core OpenGL").tag(UTMQEMURendererBackend.qemuRendererBackendCGL)
|
||||
}.help("By default, the best renderer for this device will be used. You can override this with to always use a specific renderer. This only applies to QEMU VMs with GPU accelerated graphics.")
|
||||
HStack {
|
||||
Stepper("FPS Limit", value: $qemuRendererFpsLimit, in: 0...240, step: 15)
|
||||
|
||||
@@ -22,7 +22,8 @@ typedef NS_ENUM(NSInteger, UTMQEMURendererBackend) {
|
||||
kQEMURendererBackendDefault = 0,
|
||||
kQEMURendererBackendAngleGL = 1,
|
||||
kQEMURendererBackendAngleMetal = 2,
|
||||
kQEMURendererBackendMax = 3,
|
||||
kQEMURendererBackendCGL = 3,
|
||||
kQEMURendererBackendMax = 4,
|
||||
};
|
||||
|
||||
/// Specify the sound backend for this VM
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -42,9 +42,9 @@ WEBKIT_REPO="https://github.com/utmapp/WebKit.git"
|
||||
WEBKIT_COMMIT="e9f29559b009011a1ee420d67e1994d3d5295f1a"
|
||||
WEBKIT_SUBDIRS="Source/ThirdParty/ANGLE Configurations Tools/ccache"
|
||||
EPOXY_REPO="https://github.com/utmapp/libepoxy.git"
|
||||
EPOXY_COMMIT="266d2290a437c655f7419e85af06bfbb73a720c4"
|
||||
EPOXY_COMMIT="5014658f79e4d6872a1ad6754da9098ccd9d4fc5"
|
||||
VIRGLRENDERER_REPO="https://github.com/utmapp/virglrenderer.git"
|
||||
VIRGLRENDERER_COMMIT="dc039d9ecd74fc671a85bfbe7c4e4bc552b7b855"
|
||||
VIRGLRENDERER_COMMIT="31d91c3860749534aed7bd26af8f47f7de412681"
|
||||
|
||||
# Decompiled Hypervisor for iOS
|
||||
HYPERVISOR_REPO="https://github.com/utmapp/Hypervisor.git"
|
||||
|
||||
@@ -489,7 +489,7 @@ build_qemu_dependencies () {
|
||||
# GPU support
|
||||
build_angle
|
||||
meson_build $EPOXY_REPO -Dtests=false -Dglx=no -Degl=yes
|
||||
meson_build $VIRGLRENDERER_REPO -Dtests=false -Dcheck-gl-errors=false
|
||||
meson_build $VIRGLRENDERER_REPO -Dtests=false -Dcheck-gl-errors=false -Dvenus=true -Drender-server-worker=thread
|
||||
# Hypervisor for iOS
|
||||
if [ "$PLATFORM" == "ios" ] || [ "$PLATFORM" == "ios_simulator" ]; then
|
||||
build_hypervisor
|
||||
|
||||
Reference in New Issue
Block a user