diff --git a/distribution/macos/construct_universal_dylib.py b/distribution/macos/construct_universal_dylib.py
index 18b84399f..5d9321860 100644
--- a/distribution/macos/construct_universal_dylib.py
+++ b/distribution/macos/construct_universal_dylib.py
@@ -47,12 +47,14 @@ def get_new_name(
input_component = str(input_dylib_path).replace(str(input_directory), "")[1:]
return Path(os.path.join(output_directory, input_component))
-def get_archs(dylib_path: Path) -> list[str]:
- res = subprocess.check_output([LIPO, "-info", str(dylib_path)]).decode("utf-8")
- if res.startswith("Non-fat file"):
- return [res.split(":")[-1].strip()]
- else:
- return res.split("are:")[-1].strip().split()
+
+def is_fat_file(dylib_path: Path) -> str:
+ res = subprocess.check_output([LIPO, "-info", str(dylib_path.absolute())]).decode(
+ "utf-8"
+ )
+
+ return not res.split("\n")[0].startswith("Non-fat file")
+
def construct_universal_dylib(
arm64_input_dylib_path: Path, x86_64_input_dylib_path: Path, output_dylib_path: Path
@@ -67,12 +69,11 @@ def construct_universal_dylib(
os.path.basename(arm64_input_dylib_path.resolve()), output_dylib_path
)
else:
- arm64_archs = get_archs(arm64_input_dylib_path)
- x86_64_archs = get_archs(x86_64_input_dylib_path) if x86_64_input_dylib_path.exists() else []
-
- if "arm64" in arm64_archs and "x86_64" in arm64_archs:
- shutil.copy2(arm64_input_dylib_path, output_dylib_path)
- elif x86_64_archs:
+ if is_fat_file(arm64_input_dylib_path) or not x86_64_input_dylib_path.exists():
+ with open(output_dylib_path, "wb") as dst:
+ with open(arm64_input_dylib_path, "rb") as src:
+ dst.write(src.read())
+ else:
subprocess.check_call(
[
LIPO,
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs b/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs
index b285e57f5..431d48e81 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs
@@ -16,15 +16,15 @@ namespace Ryujinx.Graphics.Vulkan
{
DescriptorSetLayout[] layouts = new DescriptorSetLayout[setDescriptors.Count];
bool[] updateAfterBindFlags = new bool[setDescriptors.Count];
-
+
bool isMoltenVk = gd.IsMoltenVk;
-
+
for (int setIndex = 0; setIndex < setDescriptors.Count; setIndex++)
{
ResourceDescriptorCollection rdc = setDescriptors[setIndex];
ResourceStages activeStages = ResourceStages.None;
-
+
if (isMoltenVk)
{
for (int descIndex = 0; descIndex < rdc.Descriptors.Count; descIndex++)
@@ -48,7 +48,7 @@ namespace Ryujinx.Graphics.Vulkan
// causes invalid resource errors, allow the binding on all active stages as workaround.
// https://github.com/KhronosGroup/MoltenVK/issues/1870
stages = activeStages;
- }
+ }
layoutBindings[descIndex] = new DescriptorSetLayoutBinding
{
diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs
index 653129ac7..d2170a682 100644
--- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs
@@ -439,7 +439,7 @@ namespace Ryujinx.Graphics.Vulkan
features2.Features.MultiViewport && !(IsMoltenVk && Vendor == Vendor.Amd), // Workaround for AMD on MoltenVK issue
featuresRobustness2.NullDescriptor || IsMoltenVk,
supportsPushDescriptors,
- IsMoltenVk ? 16 : propertiesPushDescriptor.MaxPushDescriptors, // In case an old version of MoltenVK is used, apply a limit to prevent vertex explosions.
+ IsMoltenVk ? 16 : propertiesPushDescriptor.MaxPushDescriptors, // Prevents vertex explosions on MoltenVK.
featuresPrimitiveTopologyListRestart.PrimitiveTopologyListRestart,
featuresPrimitiveTopologyListRestart.PrimitiveTopologyPatchListRestart,
supportsTransformFeedback,
diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj
index 8a89f3a46..b2c9480d2 100644
--- a/src/Ryujinx/Ryujinx.csproj
+++ b/src/Ryujinx/Ryujinx.csproj
@@ -28,14 +28,14 @@
true
partial
-
+
-
+
true
@@ -73,7 +73,7 @@
-
+