加载论坛时出错,请强制刷新页面重试。

Loongson二进制兼容解决方案(lat+wine)


小胖

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

把vulkan支持修修啊。 vulkaninfo 从1.2版本不能跑,1.3.1版本可以跑但输出一半以后crash

修好vulkan等于dxvk可以跑,那么绝大部分新游戏应该都支持了


ZLH

小胖 有那些软件


小胖

ZLH cpuz啥的都能跑 披萨塔


小胖

ZLH 我现在是能跑几十个软件


ZLH

phorcys 好的


phorcys

ZLH 这几天跟踪了下,目前lat +wine 无法运行 vulkan的原因

以下环境皆为新世界下测试 kernel 6.9.x libdrm-2.4.x mesa-24.0.x

  1. 一处amdgpu pagesize问题

    https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c#L47

    此处调用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可以顺利运行

  2. 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

REDEAST

# 创建32位容器

WINEARCH=win32 winecfg


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呢


« 上一页 下一页 »

知识共享许可协议
本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权。
进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途