[vlc-devel] [PATCH 07/17] vulkan: platform_win32: rework as vulkan platform

Alexandre Janniaux ajanni at videolabs.io
Mon Apr 12 13:32:23 UTC 2021


Instead of recompiling surface.c while implementing its public
functions, and so as to remove surface.c.
---
 modules/video_output/vulkan/Makefile.am      |  2 +-
 modules/video_output/vulkan/platform_win32.c | 29 ++++++++++++++++----
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/modules/video_output/vulkan/Makefile.am b/modules/video_output/vulkan/Makefile.am
index 5ab6eb6ee6..c6906bd422 100644
--- a/modules/video_output/vulkan/Makefile.am
+++ b/modules/video_output/vulkan/Makefile.am
@@ -17,7 +17,7 @@ libvk_plugin_la_SOURCES = $(VULKAN_COMMONSOURCES) video_output/vulkan/display.c
 libvk_plugin_la_CFLAGS = $(AM_CFLAGS) $(VULKAN_COMMONCFLAGS)
 libvk_plugin_la_LIBADD = $(VULKAN_COMMONLIBS)
 
-libvk_win32_plugin_la_SOURCES = $(VULKAN_COMMONSOURCES) video_output/vulkan/surface.c \
+libvk_win32_plugin_la_SOURCES = $(VULKAN_COMMONSOURCES) \
 				video_output/vulkan/platform_win32.c
 libvk_win32_plugin_la_CFLAGS = $(AM_CFLAGS) $(VULKAN_COMMONCFLAGS) \
 			       -DVK_USE_PLATFORM_WIN32_KHR -DPLATFORM_NAME=Win32
diff --git a/modules/video_output/vulkan/platform_win32.c b/modules/video_output/vulkan/platform_win32.c
index 1b79965db8..c905feb345 100644
--- a/modules/video_output/vulkan/platform_win32.c
+++ b/modules/video_output/vulkan/platform_win32.c
@@ -24,24 +24,33 @@
 # include "config.h"
 #endif
 
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 #include "platform.h"
 
-int vlc_vk_InitPlatform(vlc_vk_t *vk)
+static void ClosePlatform(vlc_vk_t *vk);
+static int CreateSurface(vlc_vk_t *vk);
+static const struct vlc_vk_operations platform_ops =
+{
+    .close = ClosePlatform,
+    .create_surface = CreateSurface,
+};
+
+static int InitPlatform(vlc_vk_t *vk)
 {
     if (vk->window->type != VOUT_WINDOW_TYPE_HWND)
         return VLC_EGENERIC;
 
+    vk->platform_ext = VK_KHR_WIN32_SURFACE_EXTENSION_NAME;
     return VLC_SUCCESS;
 }
 
-void vlc_vk_ClosePlatform(vlc_vk_t *vk)
+static void ClosePlatform(vlc_vk_t *vk)
 {
     VLC_UNUSED(vk);
 }
 
-const char * const vlc_vk_PlatformExt = VK_KHR_WIN32_SURFACE_EXTENSION_NAME;
-
-int vlc_vk_CreateSurface(vlc_vk_t *vk, VkInstance vkinst)
+static int CreateSurface(vlc_vk_t *vk, VkInstance vkinst)
 {
     // Get current win32 HINSTANCE
     HINSTANCE hInst = GetModuleHandle(NULL);
@@ -60,3 +69,13 @@ int vlc_vk_CreateSurface(vlc_vk_t *vk, VkInstance vkinst)
 
     return VLC_SUCCESS;
 }
+
+vlc_module_begin()
+    set_shortname("Vulkan Win32")
+    set_description(N_("Win32 platform support for Vulkan"))
+    set_category(CAT_VIDEO)
+    set_subcategory(SUBCAT_VIDEO_VOUT)
+    set_capability("vulkan platform", 50)
+    set_callback(InitPlatform)
+    add_shortcut("vk_win32")
+vlc_module_end()
-- 
2.31.1



More information about the vlc-devel mailing list