Loongson二进制兼容解决方案(lat+wine)
ZLH
小胖
ZLH wine64啥时候能搞搞 运行原神
ZLH
小胖 wine-wow正在酝酿中
ZLH
二进制相应开关,打开可优化部分软件:
LATX_SOFTFPU=1
LATX_CLOSE_PARALLEL=1
LATX_AOT=1
LATX_AOT_WINE_PEFILES_CACHE="xxx.dll,xxx.exe"
小胖
ZLH 好 现在有部分64位软件 借助wine7.19可以使用
phorcys
ZLH
小胖 有那些软件
小胖
ZLH cpuz啥的都能跑 披萨塔
小胖
ZLH 我现在是能跑几十个软件
ZLH
phorcys 好的
phorcys
ZLH 这几天跟踪了下,目前lat +wine 无法运行 vulkan的原因
以下环境皆为新世界下测试 kernel 6.9.x libdrm-2.4.x mesa-24.0.x
一处amdgpu pagesize问题
此处调用getpagesize,会被lat劫持返回 4096
但是以4096传给host 内核amdgpu会无法处理(loongarch64 内核默认页为16k)
ERROR: [Loader Message] Code 0 : terminator_CreateDevice: Failed in ICD /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so vkCreateDevice call
ERROR: [Loader Message] Code 0 : vkCreateDevice: Failed to create device chain.
ERROR at ./vulkaninfo/./vulkaninfo.h:1588:vkCreateDevice failed with ERROR_UNKNOWN
getpagesize() 直接改为 16384,重新编译生成 x86_64的 libvulkan_radeon.so, 放入/usr/gneuml/lat-x86_64/usr/lib/x86_64-linux-gnu/ 下
则vulkaninfo可以顺利运行
lat缺少 SYNCOBJ系列 ioctl支持
继续跟踪 vkcubepp运行异常:
Selected GPU 0: AMD Radeon RX 6750 XT (RADV NAVI22), type: DiscreteGpu
Error : { General } - Message Id Number: 0 | Message Id Name: ../src/vulkan/runtime/vk_fence.c:117
Combination of external handle types is unsupported for VkFence creation. (VK_ERROR_INVALID_EXTERNAL_HANDLE)
Objects - 1
Object[0] - Device, Handle 0x400013bc10
vkcubepp: ./cube/cube.cpp:1569: void Demo::init_vk_swapchain(): Assertion `result == vk::Result::eSuccess' failed.
跟踪后发现是 vulkan fence无法创建,继续跟踪到libdrm,发现是drmSyncobjCreate失败。
原因是 lat 没有实现 DRM_IOCTL_SYNCOBJ_CREATE ioctl 转发
分析strings lat-x86_64 发现lat缺少以下 iotcl
-DRM_IOCTL_SYNCOBJ_CREATE
-DRM_IOCTL_SYNCOBJ_DESTROY
-DRM_IOCTL_SYNCOBJ_EVENTFD
-DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE
-DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD
-DRM_IOCTL_SYNCOBJ_QUERY
-DRM_IOCTL_SYNCOBJ_RESET
-DRM_IOCTL_SYNCOBJ_SIGNAL
-DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL
-DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT
-DRM_IOCTL_SYNCOBJ_TRANSFER
-DRM_IOCTL_SYNCOBJ_WAIT
希望下一版 lat 能修复ioctl的问题
Katyusha
请问使用latx + wine的方式运行,这里的wine8.x需在x86的上编译好,再移到龙芯上的吗?
ZLH
Katyusha 编译完再安装(在龙芯安装也可以),复制安装好的二进制文件到龙芯就可以使用了。
REDEAST
请问怎么指定wine对32位程序使用i386模式而不是AMD64模式?
ZLH
xunmi
新世界arch使用wine7.19的时候启动任何.exe都会出现如下报错:
002c:err:virtual:virtual_map_section mapping 0x120000 e000 000000000 failed
002c:err:module:load_apiset_dll failed to load apiset: c000000d
002c:fixme:winediag:LdrInitializeThunk wine-staging 7.19 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
002c:err:virtual:virtual_map_section mapping 0xa60000 339000 000000000 failed
002c:err:module:LdrInitializeThunk Initializing system dll for L"C:\\windows\\system32\\wineboot.exe" failed, status c0000005
0024:err:virtual:virtual_map_section mapping 0x120000 e000 000000000 failed
0024:err:module:load_apiset_dll failed to load apiset: c000000d
0024:fixme:winediag:LdrInitializeThunk wine-staging 7.19 is a testing version containing experimental patches.
0024:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
0024:err:virtual:virtual_map_section mapping 0x830000 339000 000000000 failed
0024:err:module:LdrInitializeThunk Initializing system dll for L"C:\\windows\\system32\\start.exe" failed, status c0000005
又碰到过的朋友知道怎么办吗?这里我是启动了下winecfg, 使用q4wine启动也都会失败
ZLH
xunmi 试试别的版本wine呢