Turnip+Zink в ExaGear: Difference between revisions

From Exagear International
Jump to navigation Jump to search
mNo edit summary
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''[[Turnip(ru)|Turnip]][[Zink(ru)|+Zink]]''' в [[О продуктах ExaGear|'''ExaGear Windows Emulator''']] используется как один из методов для достижения полноценного аппаратного ускорения.  
[[en:Turnip+Zink in ExaGear]]
'''[[Turnip(ru)|Turnip]][[Zink(ru)|+Zink]]''' в [[О продуктах ExaGear|'''ExaGear Windows Emulator''']] используется как один из методов для достижения полноценного аппаратного ускорения для новых GPU Adreno используя xlib (библиотека функций клиента системы X Window, написанная на языке Си). На данный момент аппаратное ускорение не поддерживает dri3 из-за ограничений Х-сервера '''ExaGear'''.  


В данной статье показана инструкция по компиляции '''''Mesa''' с Turnip+Zink'' с последующей  установкой собранных библиотек в ''ExaGear Windows Emulato''r.
С списком ''GPU Adreno'' которые поддерживают драйвера '''Turnip+Zink''' можно ознакомится [[Turnip(ru)#Поддерживаемые GPU|здесь]]. 
 
Драйвера '''Turnip, Zink''' входят в состав драйвера '''''Mesa''''' - свободной реализации ''Vulkan, OpenGL API''.
 
В данной статье показана инструкция по компиляции '''''Mesa''' с Turnip+Zink'' с последующей  установкой собранных библиотек в ''ExaGear Windows Emulator''.


В '''ExaGear RPG/Strategies''' нельзя задействовать '''Turnip+Zink'''.
В '''ExaGear RPG/Strategies''' нельзя задействовать '''Turnip+Zink'''.


== Сборка Mesa с Turnip+Zink для использования в ExaGear ==
== Установка предварительно собранных для ExaGear библиотек Turnip+Zink ==
Для сборки '''Turnip+Zink''' с последующим использованием в ExaGear, необходимо иметь компьютер или ноутбук с установленной i386(не х86_64, поскольку '''ExaGear Windows Emulator''' имеет поддержку трансляции в ARM только 32 битного кода) ''GNU/Linux'' операционной системой.  
В актуальных(выпущенные с декабря 2021 года) (модифицированных) кешах '''Turnip+Zink''' обычно встроен, их можно установить в меню ''"Пуск"''(в папках ''Render, WineGL'', и т.п)
----Если используется кеш, где '''Turnip+Zink''' не включены в состав .obb, для установки легче всего использовать автоустановщики созданные с помощью WinRAR(SFX архивы),(если используется оригинальный .obb, может потребоваться установка дополнительных библиотек(зависимостей)).
 
Скачать автоустановщики '''Turnip+Zink''' можно [https://drive.google.com/drive/folders/15TElVFjHc9hAQxdd2MMYB6o3_lo38X7y?usp=sharing здесь].
 
== Сборка Mesa с Turnip+Zink для использования в ExaGear вручную(для мододелов) ==
'''Внимание! Требуется базовое знание GNU/Linux.'''
 
В данной части статьи показана инструкция по сборке библиотек '''Turnip+Zink вручную''' с последующей установкой и использованием в ExaGear
----Для этого необходимо иметь компьютер или ноутбук с установленной i386(не х86_64, поскольку '''ExaGear Windows Emulator''' имеет поддержку трансляции в ARM только 32 битного кода) ''GNU/Linux'' операционной системой.  


Для сборки последней версии в данной инструкции будет использоваться ''Debian 12(sid)''.
Для сборки последней версии в данной инструкции будет использоваться ''Debian 12(sid)''.
Вы также можете установить '''Turnip+Zink''' в '''ExaGear Windows Emulator''' с помощью данных установщиков(рекомендуется версия от 01.08.22): https://drive.google.com/drive/folders/15TElVFjHc9hAQxdd2MMYB6o3_lo38X7y


==== Установка зависимостей ====
==== Установка зависимостей ====
Line 20: Line 32:


==== Скачивание Mesa3D и Zink-Mesa-Xlib ====
==== Скачивание Mesa3D и Zink-Mesa-Xlib ====
Поскольку ''Х-сервер'' '''ExaGear Windows Emulator''' корректно работает только с xlib(библиотека функций клиента системы X Window, нsuаписанная на языке Си), а не на dri(''Direct Rendering Infrastructure),'' то для работы Zink в '''ExaGear''' необходима пропатченная пользователем alexvorxx версия [https://github.com/alexvorxx/Zink-Mesa-Xlib Mesa]
Поскольку ''Х-сервер'' '''ExaGear Windows Emulator''' корректно работает только с xlib(библиотека функций клиента системы X Window, написанная на языке Си), а не на dri(''Direct Rendering Infrastructure),'' то для работы Zink в '''ExaGear''' необходима пропатченная пользователем alexvorxx версия [https://github.com/alexvorxx/Zink-Mesa-Xlib Mesa]
----Установите git, если он не установлен: <code>sudo apt install git -y</code> и склонируйте репозитории [https://github.com/mesa3d/mesa Mesa3D] и Zink-Mesa-Xlib:
----Установите git, если он не установлен: <code>sudo apt install git -y</code> и склонируйте репозитории [https://github.com/mesa3d/mesa Mesa3D] и Zink-Mesa-Xlib:


# <code>git clone <nowiki>https://github.com/mesa3d/mesa</nowiki></code>
# <code>git clone [https://github.com/mesa3d/mesa(здесь <nowiki>https://github.com/mesa3d/mesa</nowiki>]</code> (здесь может использоваться любой репозиторий с Mesa 22.
# <code>git clone <nowiki>https://github.com/alexvorxx/Zink-Mesa-Xlib</nowiki></code>
# <code>git clone <nowiki>https://github.com/alexvorxx/Zink-Mesa-Xlib</nowiki></code>


==== Для тех кто использует Debian 11(и ниже) или Ubuntu 18.04 ====
Если используется Debian 11 и ниже, или Ubuntu 18.04, то перед сборкой mesa необходимо скомпилировать последние версии программ, список которых есть ниже:
Если используется Debian 11 и ниже, или Ubuntu 18.04, то перед сборкой mesa необходимо скомпилировать последние версии программ, список которых есть ниже:


Line 34: Line 47:


Данные репозитории также можно склонировать с помощью <code>git clone</code>, инструкция по сборке есть в README.
Данные репозитории также можно склонировать с помощью <code>git clone</code>, инструкция по сборке есть в README.
==== Для тех кто использует Ubuntu 18.04 ====
Поскольку в Ubuntu 18.04 в репозиториях используется старая версия meson, то её необходимо установить из pip3, используя python3.6, для установки последовательно введите команды ниже:
# <code>sudo apt-get install python3-pip</code>
# <code>pip3 install meson ninja</code>
----
----


Line 39: Line 59:
После сборки необходимых зависимостей, перейдите в папку, и соберите <code>mesa</code>:
После сборки необходимых зависимостей, перейдите в папку, и соберите <code>mesa</code>:


<code>meson build -D platforms=x11,wayland -D gallium-drivers=swrast,zink -D vulkan-drivers=freedreno -D dri3=enabled  -D egl=enabled  -D gles2=enabled -D glvnd=true -D glx=dri -D osmesa=true --prefix /usr -D gles=enabled -D freedreno-kgsl=true && sudo ninja -C build install</code>
<code>meson build -D platforms=x11,wayland -D gallium-drivers=swrast,zink -D vulkan-drivers=freedreno -D dri3=enabled  -D egl=enabled  -D gles2=enabled -D glvnd=true -D glx=dri  -D libunwind=disabled -D osmesa=true  -D shared-glapi=enabled -D microsoft-clc=disabled  -D valgrind=disabled --prefix /usr -D gles1=disabled -D freedreno-kgsl=true -Dbuildtype=release && sudo ninja -C build</code>


Если во время компиляции будет ошибка об отстуствии файла drm.h, drm_mode.h, скопируйте данные файлы в <code>/usr/include</code>:
Если во время компиляции будет ошибка об отстуствии файла drm.h, drm_mode.h, скопируйте данные файлы в <code>/usr/include</code>:
Line 51: Line 71:
<code>meson . build -Dgallium-va=false -Ddri-drivers= -Dgallium-drivers=virgl,zink,swrast -Ddri3=true -Dvulkan-drivers= -Dglx=xlib -Dplatforms=x11 -Dbuildtype=release && sudo ninja -C build  install</code>
<code>meson . build -Dgallium-va=false -Ddri-drivers= -Dgallium-drivers=virgl,zink,swrast -Ddri3=true -Dvulkan-drivers= -Dglx=xlib -Dplatforms=x11 -Dbuildtype=release && sudo ninja -C build  install</code>


После компиляции, собранные библиотеки можно скопировать в архив, и установить в '''ExaGear Windows Emulator'''
После компиляции, собранные библиотеки нужно установить в '''ExaGear Windows Emulator'''


==== Установка в ExaGear ====
==== Установка в ExaGear ====
'''Не завершено'''
 
=== mesa ===
Необходимо создать папку <code>usr</code>, и создать там ещё 3 папки (share, lib, include).
 
==== include ====
В папку include скопируйте файл gbm.h(находится в ~/mesa/src/gbm/main).
 
В папку usr/include скопируйте данные каталоги: EGL, GL, GLES, GLES2, GLES3, KHR(находятся в ~/mesa/include)
 
==== share ====
В папке share создайте папку vulkan, glvnd, drirc.d, в папке vulkan создайте папку icd.d, в glvnd создайте папку egl_vendor.d.
----В папке vulkan/icd.d нужно скопировать файл freedreno_icd.i686.json(находится в ~/mesa/build/src/freedreno/vulkan)
 
В папку glvnd/egl_vendor.d/ скопируйте 50_mesa.json(находится в ~/mesa/build/src/egl)
 
В папку drirc.d скопируйте файл 00-mesa-defaults.conf(находится в ~/mesa/src/util)
----
 
==== lib ====
В папке lib создайте папку i386-linux-gnu и скопируйте туда файлы:
 
# libglapi.so, libglapi.so.0, libglapi.so.0.0.0(находятся в ~/mesa/build/src/mapi/shared-glapi)
# libvulkan_freedreno.so(находится в ~/mesa/build/src/freedreno/vulkan)
# libOSMesa.so.8.0.0, libOSMesa.so, libOSMesa.so.8(находятся в ~/mesa/build/src/gallium/targets/osmesa)
# libGLX_mesa.so.0.0.0, libGLX_mesa.so, libGLX_mesa.so.0(находятся в ~/mesa/build/src/glx/)
# libEGL_mesa.so.0.0.0, libEGL_mesa.so, libEGL_mesa.so.0(находятся в ~/mesa/build/src/egl)
# libgbm.so, libgbm.so.1, libgbm.so.1.0.0(находятся в ~/mesa/build/src/gbm/)
 
Также создайте в той же папке lib папки pkgconfig и dri. В папку pkgconfig необходимо скопировать файлы:
 
# osmesa.pc(находится в ~/mesa/build/meson-private/)
# gbm.pc(находится в ~/mesa/build/meson-private/)
# dri.pc(находится в ~/mesa/build/meson-private/)
 
В папку dri необходимо скопировать данные файлы:
 
# zink_dri.so(находится в ~/mesa/build/src/gallium/targets/dri)
# libgallium_dri.so(находится в ~/mesa/build/src/gallium/targets/dri)
 
=== Zink-Mesa-Xlib ===
 
==== lib ====
Из папки '''Zink-Mesa-Xlib''' необходимо в созданный вами каталог ''usr/lib/i386-linux-gnu'' скопировать библиотеку libGL.so.1.5.0(находится в ~/mesa/build/src/gallium/targets/libgl-xlib/)
----
 
==== Проверка в ExaGear ====
После копирования всех файлов, необходимо папку usr скопировать в папку ''Download'' телефона, после этого запустите '''ExaGear Windows Emulator''', и скопируйте скопированную папку в диск Z:/ с перезаписью.
 
Если используется стандартный кеш ''ExaGear'', (что не рекомендуется) то его необходимо модифицировать, добавив пакет <code>vulkan-tools</code>. Как модифицировать кеш и добавлять пакеты в него описано [[Модификация кешей в ExaGear#Добавление пакетов, замена Wine в кешах|здесь]]. Также необходимо скачать [https://drive.google.com/file/d/1L4pd-hdA_3PLxyMXwlrDMWjOuO62kjKv/view?usp=sharing эмулятор терминала] для ExaGear.
 
Откройте терминал и введите команду <code>vulkaninfo</code> (если вы испольузете оригинальный кеш '''ExaGear Windows Emulator''', и будет ошибка недостающих библиотек, их необходимо дополнительно загрузить и установить). После того, как все ошибки были устранены, и команда <code>vulkaninfo</code> успешно сработала и должны быть показаны расширения '''Vulkan API и название GPU''' (или же будет показана ошибка TU, в данном случае ''Vulkan'' тоже будет работать).
 
Также нужно проверить '''OpenGL''' (введите команду <code>glxgears,</code> должны отобразится шестерёнки). Если шестерни отображаются, то Turnip+Zink работает. Если будет ошибка о том, что команда не найдена, запустите в [[Wine(ru)|Wine]] портированный на Windows [http://www2.cs.uidaho.edu/~jeffery/win32/wglgears.exe wglgears].
 
Если при запуске glxgears вместо шестёрнок у вас ошибка(wglgears будет закрываться), то возможно у вас неподдерживаемый GPU, с списком GPU, которые могут работать с '''Turnip+Zink''' можно ознакомится [[Turnip(ru)#Поддерживаемые GPU|здесь]].
 
== Ссылки ==
[https://github.com/alexvorxx/Zink-Mesa-Xlib/blob/main/README.rst Оригинальная инструкция от alexvorxx]

Latest revision as of 21:29, 16 October 2022

Turnip+Zink в ExaGear Windows Emulator используется как один из методов для достижения полноценного аппаратного ускорения для новых GPU Adreno используя xlib (библиотека функций клиента системы X Window, написанная на языке Си). На данный момент аппаратное ускорение не поддерживает dri3 из-за ограничений Х-сервера ExaGear.

С списком GPU Adreno которые поддерживают драйвера Turnip+Zink можно ознакомится здесь.

Драйвера Turnip, Zink входят в состав драйвера Mesa - свободной реализации Vulkan, OpenGL API.

В данной статье показана инструкция по компиляции Mesa с Turnip+Zink с последующей установкой собранных библиотек в ExaGear Windows Emulator.

В ExaGear RPG/Strategies нельзя задействовать Turnip+Zink.

Установка предварительно собранных для ExaGear библиотек Turnip+Zink

В актуальных(выпущенные с декабря 2021 года) (модифицированных) кешах Turnip+Zink обычно встроен, их можно установить в меню "Пуск"(в папках Render, WineGL, и т.п)


Если используется кеш, где Turnip+Zink не включены в состав .obb, для установки легче всего использовать автоустановщики созданные с помощью WinRAR(SFX архивы),(если используется оригинальный .obb, может потребоваться установка дополнительных библиотек(зависимостей)).

Скачать автоустановщики Turnip+Zink можно здесь.

Сборка Mesa с Turnip+Zink для использования в ExaGear вручную(для мододелов)

Внимание! Требуется базовое знание GNU/Linux.

В данной части статьи показана инструкция по сборке библиотек Turnip+Zink вручную с последующей установкой и использованием в ExaGear.


Для этого необходимо иметь компьютер или ноутбук с установленной i386(не х86_64, поскольку ExaGear Windows Emulator имеет поддержку трансляции в ARM только 32 битного кода) GNU/Linux операционной системой.

Для сборки последней версии в данной инструкции будет использоваться Debian 12(sid).

Установка зависимостей

Для начала откройте файл /etc/apt/sources.list с помощью текстового редактора. Скопируйте строки подобные deb http://ftp.ua.debian.org/debian/ bookworm main и вставьте их уже с deb-src, например deb-src http://ftp.ua.debian.org/debian/ bookworm main

Если deb-src уже есть в вашем sources.list, то ничего редактировать не нужно.

Сохраните изменения, и введите команду sudo apt update, после обновления пакетов установите зависимости для сборки Mesa: sudo apt build-dep mesa -y

Скачивание Mesa3D и Zink-Mesa-Xlib

Поскольку Х-сервер ExaGear Windows Emulator корректно работает только с xlib(библиотека функций клиента системы X Window, написанная на языке Си), а не на dri(Direct Rendering Infrastructure), то для работы Zink в ExaGear необходима пропатченная пользователем alexvorxx версия Mesa


Установите git, если он не установлен: sudo apt install git -y и склонируйте репозитории Mesa3D и Zink-Mesa-Xlib:

  1. git clone https://github.com/mesa3d/mesa (здесь может использоваться любой репозиторий с Mesa 22.
  2. git clone https://github.com/alexvorxx/Zink-Mesa-Xlib

Для тех кто использует Debian 11(и ниже) или Ubuntu 18.04

Если используется Debian 11 и ниже, или Ubuntu 18.04, то перед сборкой mesa необходимо скомпилировать последние версии программ, список которых есть ниже:

  1. https://gitlab.freedesktop.org/glvnd/libglvnd
  2. https://dri.freedesktop.org/libdrm
  3. https://gitlab.freedesktop.org/wayland/wayland
  4. https://gitlab.freedesktop.org/wayland/wayland-protocols

Данные репозитории также можно склонировать с помощью git clone, инструкция по сборке есть в README.

Для тех кто использует Ubuntu 18.04

Поскольку в Ubuntu 18.04 в репозиториях используется старая версия meson, то её необходимо установить из pip3, используя python3.6, для установки последовательно введите команды ниже:

  1. sudo apt-get install python3-pip
  2. pip3 install meson ninja

Сборка mesa

После сборки необходимых зависимостей, перейдите в папку, и соберите mesa:

meson build -D platforms=x11,wayland -D gallium-drivers=swrast,zink -D vulkan-drivers=freedreno -D dri3=enabled -D egl=enabled -D gles2=enabled -D glvnd=true -D glx=dri -D libunwind=disabled -D osmesa=true -D shared-glapi=enabled -D microsoft-clc=disabled -D valgrind=disabled --prefix /usr -D gles1=disabled -D freedreno-kgsl=true -Dbuildtype=release && sudo ninja -C build

Если во время компиляции будет ошибка об отстуствии файла drm.h, drm_mode.h, скопируйте данные файлы в /usr/include:

  1. sudo cp /usr/include/libdrm/drm.h /usr/include
  2. sudo cp /usr/include/libdrm/drm_mode.h /usr/include

Сборка Zink-Mesa-Xlib

После установки mesa, перейдите в папку Zink-Mesa-Xlib, и соберите Mesa с Zink:

meson . build -Dgallium-va=false -Ddri-drivers= -Dgallium-drivers=virgl,zink,swrast -Ddri3=true -Dvulkan-drivers= -Dglx=xlib -Dplatforms=x11 -Dbuildtype=release && sudo ninja -C build install

После компиляции, собранные библиотеки нужно установить в ExaGear Windows Emulator

Установка в ExaGear

mesa

Необходимо создать папку usr, и создать там ещё 3 папки (share, lib, include).

include

В папку include скопируйте файл gbm.h(находится в ~/mesa/src/gbm/main).

В папку usr/include скопируйте данные каталоги: EGL, GL, GLES, GLES2, GLES3, KHR(находятся в ~/mesa/include)

share

В папке share создайте папку vulkan, glvnd, drirc.d, в папке vulkan создайте папку icd.d, в glvnd создайте папку egl_vendor.d.


В папке vulkan/icd.d нужно скопировать файл freedreno_icd.i686.json(находится в ~/mesa/build/src/freedreno/vulkan)

В папку glvnd/egl_vendor.d/ скопируйте 50_mesa.json(находится в ~/mesa/build/src/egl)

В папку drirc.d скопируйте файл 00-mesa-defaults.conf(находится в ~/mesa/src/util)


lib

В папке lib создайте папку i386-linux-gnu и скопируйте туда файлы:

  1. libglapi.so, libglapi.so.0, libglapi.so.0.0.0(находятся в ~/mesa/build/src/mapi/shared-glapi)
  2. libvulkan_freedreno.so(находится в ~/mesa/build/src/freedreno/vulkan)
  3. libOSMesa.so.8.0.0, libOSMesa.so, libOSMesa.so.8(находятся в ~/mesa/build/src/gallium/targets/osmesa)
  4. libGLX_mesa.so.0.0.0, libGLX_mesa.so, libGLX_mesa.so.0(находятся в ~/mesa/build/src/glx/)
  5. libEGL_mesa.so.0.0.0, libEGL_mesa.so, libEGL_mesa.so.0(находятся в ~/mesa/build/src/egl)
  6. libgbm.so, libgbm.so.1, libgbm.so.1.0.0(находятся в ~/mesa/build/src/gbm/)

Также создайте в той же папке lib папки pkgconfig и dri. В папку pkgconfig необходимо скопировать файлы:

  1. osmesa.pc(находится в ~/mesa/build/meson-private/)
  2. gbm.pc(находится в ~/mesa/build/meson-private/)
  3. dri.pc(находится в ~/mesa/build/meson-private/)

В папку dri необходимо скопировать данные файлы:

  1. zink_dri.so(находится в ~/mesa/build/src/gallium/targets/dri)
  2. libgallium_dri.so(находится в ~/mesa/build/src/gallium/targets/dri)

Zink-Mesa-Xlib

lib

Из папки Zink-Mesa-Xlib необходимо в созданный вами каталог usr/lib/i386-linux-gnu скопировать библиотеку libGL.so.1.5.0(находится в ~/mesa/build/src/gallium/targets/libgl-xlib/)


Проверка в ExaGear

После копирования всех файлов, необходимо папку usr скопировать в папку Download телефона, после этого запустите ExaGear Windows Emulator, и скопируйте скопированную папку в диск Z:/ с перезаписью.

Если используется стандартный кеш ExaGear, (что не рекомендуется) то его необходимо модифицировать, добавив пакет vulkan-tools. Как модифицировать кеш и добавлять пакеты в него описано здесь. Также необходимо скачать эмулятор терминала для ExaGear.

Откройте терминал и введите команду vulkaninfo (если вы испольузете оригинальный кеш ExaGear Windows Emulator, и будет ошибка недостающих библиотек, их необходимо дополнительно загрузить и установить). После того, как все ошибки были устранены, и команда vulkaninfo успешно сработала и должны быть показаны расширения Vulkan API и название GPU (или же будет показана ошибка TU, в данном случае Vulkan тоже будет работать).

Также нужно проверить OpenGL (введите команду glxgears, должны отобразится шестерёнки). Если шестерни отображаются, то Turnip+Zink работает. Если будет ошибка о том, что команда не найдена, запустите в Wine портированный на Windows wglgears.

Если при запуске glxgears вместо шестёрнок у вас ошибка(wglgears будет закрываться), то возможно у вас неподдерживаемый GPU, с списком GPU, которые могут работать с Turnip+Zink можно ознакомится здесь.

Ссылки

Оригинальная инструкция от alexvorxx