Skip to content

Commit 0b81b61

Browse files
committed
fix: fix mpv patch for v0.40.0
1 parent a8178e0 commit 0b81b61

File tree

1 file changed

+54
-55
lines changed

1 file changed

+54
-55
lines changed

Sources/BuildScripts/patch/libmpv/0001-player-add-moltenvk-context.patch

Lines changed: 54 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,40 @@
1+
diff --git forkSrcPrefix/meson.build forkDstPrefix/meson.build
2+
index 7572769e0e6f280391668c6797d67e37e2dea30f..e6109987a3d38025a5eede04441c03ee23413255 100644
3+
--- forkSrcPrefix/meson.build
4+
+++ forkDstPrefix/meson.build
5+
@@ -1315,6 +1315,17 @@ if features['vulkan'] and features['x11']
6+
sources += files('video/out/vulkan/context_xlib.c')
7+
endif
8+
9+
+if host_machine.system() == 'darwin'
10+
+ moltenvk = get_option('moltenvk').require(
11+
+ features['vulkan'],
12+
+ error_message: 'vulkan or moltenvk header could not be found!',
13+
+ )
14+
+ features += {'moltenvk': moltenvk.allowed()}
15+
+ if features['vulkan'] and features['moltenvk']
16+
+ sources += files('video/out/vulkan/context_moltenvk.m')
17+
+ endif
18+
+endif
19+
+
20+
features += {'vk-khr-display': vulkan.type_name() == 'internal' or
21+
cc.has_function('vkCreateDisplayPlaneSurfaceKHR', prefix: '#include <vulkan/vulkan_core.h>',
22+
dependencies: [vulkan])}
23+
diff --git forkSrcPrefix/meson.options forkDstPrefix/meson.options
24+
index dae0a333ef71b75a6bb36a236de7feebd99bda40..6ed28af20a09501b4997ca81e86bb198e75327fd 100644
25+
--- forkSrcPrefix/meson.options
26+
+++ forkDstPrefix/meson.options
27+
@@ -101,6 +101,7 @@ option('gl-dxinterop-d3d9', type: 'feature', value: 'auto', description: 'OpenGL
28+
option('ios-gl', type: 'feature', value: 'auto', description: 'iOS OpenGL ES interop support')
29+
option('videotoolbox-gl', type: 'feature', value: 'auto', description: 'Videotoolbox with OpenGL')
30+
option('videotoolbox-pl', type: 'feature', value: 'auto', description: 'Videotoolbox with libplacebo')
31+
+option('moltenvk', type: 'feature', value: 'auto', description: 'Moltenvk context')
32+
33+
# macOS features
34+
option('macos-10-15-4-features', type: 'feature', value: 'auto', description: 'macOS 10.15.4 SDK Features')
135
diff --git forkSrcPrefix/video/out/vulkan/context_moltenvk.m forkDstPrefix/video/out/vulkan/context_moltenvk.m
236
new file mode 100644
3-
index 0000000000000000000000000000000000000000..e24572375775622c9e00f11f200bafb4bc38c4b4
37+
index 0000000000000000000000000000000000000000..445b907f795b24b8df80389394d4ae7b3f94c6e5
438
--- /dev/null
539
+++ forkDstPrefix/video/out/vulkan/context_moltenvk.m
640
@@ -0,0 +1,96 @@
@@ -61,7 +95,7 @@ index 0000000000000000000000000000000000000000..e24572375775622c9e00f11f200bafb4
6195
+ .pLayer = p->layer,
6296
+ };
6397
+
64-
+ struct ra_vk_ctx_params params = {0};
98+
+ struct ra_ctx_params params = {0};
6599
+
66100
+ VkInstance inst = vk->vkinst->instance;
67101
+ VkResult res = vkCreateMetalSurfaceEXT(inst, &info, NULL, &vk->surface);
@@ -100,9 +134,22 @@ index 0000000000000000000000000000000000000000..e24572375775622c9e00f11f200bafb4
100134
+ .init = moltenvk_init,
101135
+ .uninit = moltenvk_uninit,
102136
+};
103-
\ No newline at end of file
137+
diff --git forkSrcPrefix/video/out/vulkan/common.h forkDstPrefix/video/out/vulkan/common.h
138+
index e75cb228f8d99462ccecf7780098ea97ae7cfe02..afc17284773204563f4c90b4860758e61068d460 100644
139+
--- forkSrcPrefix/video/out/vulkan/common.h
140+
+++ forkDstPrefix/video/out/vulkan/common.h
141+
@@ -22,6 +22,9 @@
142+
#if HAVE_WIN32_DESKTOP
143+
#define VK_USE_PLATFORM_WIN32_KHR
144+
#endif
145+
+#if HAVE_MOLTENVK
146+
+#include <MoltenVK/mvk_vulkan.h>
147+
+#endif
148+
#if HAVE_COCOA
149+
#define VK_USE_PLATFORM_METAL_EXT
150+
#endif
104151
diff --git forkSrcPrefix/video/out/gpu/context.c forkDstPrefix/video/out/gpu/context.c
105-
index 88d4f4232ddd3886e42ddf23dd2970b13bdd1e92..df9bd99de126d2e2371544248d528b21b99be263 100644
152+
index 75dd804005ba3a1e36375b47dcc9d9bb756ab867..4ab72a00b3dd3539a06129702e41796fd00a8af3 100644
106153
--- forkSrcPrefix/video/out/gpu/context.c
107154
+++ forkDstPrefix/video/out/gpu/context.c
108155
@@ -50,6 +50,7 @@ extern const struct ra_ctx_fns ra_ctx_vulkan_xlib;
@@ -113,61 +160,13 @@ index 88d4f4232ddd3886e42ddf23dd2970b13bdd1e92..df9bd99de126d2e2371544248d528b21
113160

114161
/* Direct3D 11 */
115162
extern const struct ra_ctx_fns ra_ctx_d3d11;
116-
@@ -91,6 +92,9 @@ static const struct ra_ctx_fns *contexts[] = {
117-
// Vulkan contexts:
118-
#if HAVE_VULKAN
163+
@@ -126,6 +127,9 @@ static const struct ra_ctx_fns *contexts[] = {
119164

165+
// Vulkan contexts (fallbacks):
166+
#if HAVE_VULKAN
120167
+#if HAVE_MOLTENVK
121168
+ &ra_ctx_vulkan_moltenvk,
122169
+#endif
123170
#if HAVE_ANDROID
124171
&ra_ctx_vulkan_android,
125172
#endif
126-
diff --git forkSrcPrefix/video/out/vulkan/common.h forkDstPrefix/video/out/vulkan/common.h
127-
index e75cb228f8d99462ccecf7780098ea97ae7cfe02..afc17284773204563f4c90b4860758e61068d460 100644
128-
--- forkSrcPrefix/video/out/vulkan/common.h
129-
+++ forkDstPrefix/video/out/vulkan/common.h
130-
@@ -22,6 +22,9 @@
131-
#if HAVE_WIN32_DESKTOP
132-
#define VK_USE_PLATFORM_WIN32_KHR
133-
#endif
134-
+#if HAVE_MOLTENVK
135-
+#include <MoltenVK/mvk_vulkan.h>
136-
+#endif
137-
#if HAVE_COCOA
138-
#define VK_USE_PLATFORM_METAL_EXT
139-
#endif
140-
diff --git forkSrcPrefix/meson.build forkDstPrefix/meson.build
141-
index b7bcb1b0badb21743f40f707d908092042de6db3..ebba7eeb7365b0e3cced1b3f2f23971101b0f66b 100644
142-
--- forkSrcPrefix/meson.build
143-
+++ forkDstPrefix/meson.build
144-
@@ -1310,6 +1310,17 @@ if features['vulkan'] and features['x11']
145-
sources += files('video/out/vulkan/context_xlib.c')
146-
endif
147-
148-
+if host_machine.system() == 'darwin'
149-
+ moltenvk = get_option('moltenvk').require(
150-
+ features['vulkan'],
151-
+ error_message: 'vulkan or moltenvk header could not be found!',
152-
+ )
153-
+ features += {'moltenvk': moltenvk.allowed()}
154-
+ if features['vulkan'] and features['moltenvk']
155-
+ sources += files('video/out/vulkan/context_moltenvk.m')
156-
+ endif
157-
+endif
158-
+
159-
features += {'vk-khr-display': vulkan.type_name() == 'internal' or
160-
cc.has_function('vkCreateDisplayPlaneSurfaceKHR', prefix: '#include <vulkan/vulkan_core.h>',
161-
dependencies: [vulkan])}
162-
diff --git forkSrcPrefix/meson_options.txt forkDstPrefix/meson_options.txt
163-
index c6e6337d68b3e1210513c767db79cc204f404000..55fc334edf27f4e495dbb75f6316ecaffc661a8c 100644
164-
--- forkSrcPrefix/meson_options.txt
165-
+++ forkDstPrefix/meson_options.txt
166-
@@ -103,6 +103,7 @@ option('gl-dxinterop-d3d9', type: 'feature', value: 'auto', description: 'OpenGL
167-
option('ios-gl', type: 'feature', value: 'auto', description: 'iOS OpenGL ES interop support')
168-
option('videotoolbox-gl', type: 'feature', value: 'auto', description: 'Videotoolbox with OpenGL')
169-
option('videotoolbox-pl', type: 'feature', value: 'auto', description: 'Videotoolbox with libplacebo')
170-
+option('moltenvk', type: 'feature', value: 'auto', description: 'Moltenvk context')
171-
172-
# macOS features
173-
option('macos-10-15-4-features', type: 'feature', value: 'auto', description: 'macOS 10.15.4 SDK Features')

0 commit comments

Comments
 (0)