Closed samzrx123 closed 10 months ago
@samzrx123 欢迎提供一份用于在github action编译arm windows构建结果的脚本。 我会很开心接受这样的pr,因为目前主要维护者并没有这样的设备来测试,所以只能靠有需求的大家了(应该只需要编译就行了,没有复杂的其他问题)
同时 github action中的测试版目前提供了uwp的安装包,或许arm可以安装那个?我不是很了解这些,可以试一试。
自己尝试编译了一下,发现SSL库安装报错: https://github.com/sunyiming/wiliwili/actions/runs/5316852248/jobs/9626779617
@sunyiming 你编译的是 uwp 不是 windows,uwp那边用的 xmake 的依赖是我自己写的 repo 里的 curl,但是没有适配 arm64。
比较困难的点可能是所需要的mpv现在没有对Windows Arm64设备的支持。mpv不支持的主要原因貌似是luajit没法在上述设备上构建。我尝试在我的SPX上进行构建时遇到的问题就是这些,自己也没有足够的能力来解决。
比较困难的点可能是所需要的mpv现在没有对Windows Arm64设备的支持。mpv不支持的主要原因貌似是luajit没法在上述设备上构建。我尝试在我的SPX上进行构建时遇到的问题就是这些,自己也没有足够的能力来解决。
@KazuhaKun mpv 的lua支持不一定要用luajit,我记着还有其他的lua实现也可以,而且对于wiliwili来说,mpv只需要有ffmpeg和libass这两个依赖就够了。
因為UWP的版本在ARM64上無法正常執行,出自於好奇所以測試了一下怎麼編譯
在x86_64的機器想建立MSYS2 CLANGARM64
環境好像怪怪的,於是直接在ARM64的機器上進行編譯,另外由於背景並不是C/C++專門,自己胡搞了一通,以下純粹記錄一下幾個重點
mpv在clangarm64上沒有,需要自行編譯,原始碼版本使用最新的v0.36.0
,luajit
可換成lua51
,但編譯會發生錯誤。照 https://github.com/mpv-player/mpv/issues/10752 裡面敘述的,在video/out/opengl/ra_gl.c
的include的下方加上#undef MemoryBarrier
就可以正常編譯
原始碼版本使用最新的v1.1.1
,編譯時會發現找不到pthread
,但mingw-w64-clang-aarch64-winpthreads-git
是已經裝過了,不知道怎麼修正。不過看起來可以把pthread
換掉。首先打開library/borealis/library/lib/core/thread.cpp
,在include下方將BOREALIS_USE_STD_THREAD
隨便定義個值
#define BOREALIS_USE_STD_THREAD 1
接著是link的時候發生錯誤,看起來是新版不用link stdc++fs
,編輯library/cpr/include/CMakeLists.txt
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -61,7 +61,11 @@ if(CPR_USE_BOOST_FILESYSTEM)
endif()
if (((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.1) OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND NOT CPR_USE_BOOST_FILESYSTEM)
- target_link_libraries(cpr PUBLIC stdc++fs)
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
+ target_link_libraries(cpr PUBLIC stdc++fs)
+ else()
+ target_link_libraries(cpr PUBLIC)
+ endif()
endif()
這樣就可以正常編譯成功了
看起來就是記憶體使用會少一點,原本x84_64版本在播放中大概是500MB出頭,而ARM64的話大概是300MB出頭,其餘資源使用都差不多,執行速度也沒啥特別的感覺。
GPU是Adreno 685,硬解H264/HEVC都沒有問題,但不支援AV1硬解。
而且MSYS2編譯出來的檔案也需要配合一堆MSYS2環境的.dll才能執行,好像沒辦法編譯成靜態的,不知道怎麼處理。故實驗後就算了,還是用x86_64版本就好。
@katelynn620 最近搞了一个在 msys2 下编译静态链接版本的 MPV 的脚本,已修复 clangarm64 下的编译
https://github.com/dragonflylee/mingw-packages
mingw64 下编译通过,~手上没有 windows arm64 的设备~
目前我这边测试的设备是 Snapdragon 845 (Adreno 630),无法支持 OpenGL3 的版本
@katelynn620 最近搞了一个在 msys2 下编译静态链接版本的 MPV 的脚本
https://github.com/dragonflylee/mingw64-packages
mingw64 下编译通过,手上没有 windows arm64 的设备 你可以试试
試了一下大概還是有clang跟mingw差異的毛,沒辦法很順的直接編譯,可能得再找時間來詳細看看問題在哪
目前比較想找有沒有直接在x86_64環境上可以直接編譯出來的方法,看起來CMake-based MinGW-w64 Cross Toolchain)最近有加入clang支援,但這個感覺太複雜了,直接編譯目前有問題,又不是很好了解怎麼修改
@katelynn620 修复了一下 ffmpeg 在 clang64 下的编译,本地编译时可能需要环境变量 CC=clang CXX=clang++
@katelynn620 @sunyiming
实验性的编译了一版 arm64 版本,其中
wiliwili_d3d11.exe
使用了 D3D11 渲染,wiliwili_gles3.exe
使用了 Angle 渲染wiliwili-dev-clangarm64.7z 下载后把扩展名改为
.7z
可以通过命令行参数
-d -v
开启调试日志
有時間來試試看,謝謝~
在 dragonflylee 的帮助下,最新版添加了 arm windows支持,可以直接下载体验,先将这个issue关闭了。 https://github.com/xfangfang/wiliwili/releases
如题