From b9c089412d147155f3bf43c2b9b05181eca6d0c9 Mon Sep 17 00:00:00 2001
From: Htylol <55416159+Htylol@users.noreply.github.com>
Date: Tue, 7 Nov 2023 06:04:01 +0500
Subject: [PATCH] Added OpenGL zink support for vkBasalt

---
 data_from_portwine/scripts/lang     |  2 ++
 data_from_portwine/scripts/runlib   | 11 +++++++++++
 data_from_portwine/scripts/start.sh |  2 +-
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/data_from_portwine/scripts/lang b/data_from_portwine/scripts/lang
index fc7d327..b83085e 100755
--- a/data_from_portwine/scripts/lang
+++ b/data_from_portwine/scripts/lang
@@ -150,6 +150,7 @@ if [[ "${update_loc}" == "RUS" ]] ; then
     export PW_USE_US_LAYOUT_INFO='Работает только под x11. Принудительное использование английской раскладки (полезно для игр в которых управление верно работает исключительно на английской раскладке)'
 	export PW_USE_SYSTEM_VK_LAYERS_INFO='Использовать системные mangohud, vkBasalt, obs-vkcapture и прочие приложения использующие vulkan layers'
 	export PW_USE_OBS_VKCAPTURE_INFO='Включить возможность записи в OBS Studio с помощью obs-vkcapture (ВНИМАНИЕ: будет включено принудительное использование системных mangohud, vkBasalt, obs-vkcapture и прочих приложений использующих vulkan layers)'
+	export PW_USE_GALLIUM_ZINK_INFO='Использовать драйвер OpenGL zink, позволяет использовать vkBasalt в играх на OpenGL (ВНИМАНИЕ: необходима поддерка vulkan, используется wined3d вместо dxvk, подходит для игр на OpenGL и старых версий DirectX)'
 
 	export PW_3DFX_INFO='Имитация старого графического ускорителя 3dfx (добавляет горизонтальные полосы)'
 	export PW_AdaptiveSharpen_INFO='Увеличение резкости, можно использовать совместно с CAS'
@@ -428,6 +429,7 @@ elif [[ "${update_loc}" == "ENG" ]] ; then
 	export PW_USE_US_LAYOUT_INFO='Works only x11. Forced use of the us layout (useful for games in which the control works correctly only on the us layout)'
 	export PW_USE_SYSTEM_VK_LAYERS_INFO='Use system mangohud, vkBasalt, obs-vkcapture and other applications using vulkan layers'
 	export PW_USE_OBS_VKCAPTURE_INFO='Enable the ability to write to OBS Studio using obs-vkcapture (ATTENTION: the forced use of system mangohud, vkBasalt, obs-vkcapture and other applications using vulkan layers will be enabled)'
+	export PW_USE_GALLIUM_ZINK_INFO='Use the OpenGL zink driver, allows you to use vkBasalt in games on OpenGL (ATTENTION: vulkan support is required, wined3d is used instead of dxvk, suitable for games on OpenGL and older versions of DirectX)'
 
     export PW_3DFX_INFO='Simulation of an old 3dfx graphics accelerator (adds horizontal stripes)'
    	export PW_AdaptiveSharpen_INFO='Sharpness increase, can be used with CAS'
diff --git a/data_from_portwine/scripts/runlib b/data_from_portwine/scripts/runlib
index 28a92cf..042478a 100755
--- a/data_from_portwine/scripts/runlib
+++ b/data_from_portwine/scripts/runlib
@@ -157,6 +157,9 @@ start_portwine () {
         export DXVK_ENABLE_NVAPI=0
         var_winedlloverride_update "nvngx,_nvngx="
     fi
+        if [[ "${PW_USE_GALLIUM_ZINK}" == 1 ]] ; then
+        export PW_VULKAN_USE=5
+    fi
 
     if [[ "${PW_PRIME_RENDER_OFFLOAD}" == 1 ]] ; then
         if [[ ! -z $(command -v glxinfo) ]] \
@@ -389,6 +392,14 @@ start_portwine () {
         export GL_YIELD="NOTHING"
         export mesa_glthread=true
         var_winedlloverride_update "d3d11,d3d10,d3d10core,d3d10_1,d3d9,wined3d9,dxgi=b;d3d12,d3d12core="
+    elif [[ "${PW_VULKAN_USE}" == "5" ]] ; then
+        print_info "Use OpenGL Zink"
+        export GL_YIELD="NOTHING"
+        export mesa_glthread=true
+        export  __GLX_VENDOR_LIBRARY_NAME=mesa
+        export MESA_LOADER_DRIVER_OVERRIDE=zink
+        export GALLIUM_DRIVER=zink
+        var_winedlloverride_update "d3d11,d3d10,d3d10core,d3d10_1,d3d9,wined3d9,dxgi=b;d3d12,d3d12core="
     elif [[ "${PW_VULKAN_USE}" == "3" ]] ; then
         print_info "Use GALLIUM-NINE (Native DX9 on MESA drivers)"
         export PW_GALLIUM_NINE_VER="0.8"
diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh
index dbf409f..9476db5 100755
--- a/data_from_portwine/scripts/start.sh
+++ b/data_from_portwine/scripts/start.sh
@@ -437,7 +437,7 @@ pw_edit_db () {
     PW_USE_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP PW_USE_TERMINAL \
     PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_DX12_DISABLE PW_PRIME_RENDER_OFFLOAD PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME  \
     PW_REDUCE_PULSE_LATENCY PW_USE_US_LAYOUT PW_USE_GSTREAMER PW_FORCE_LARGE_ADDRESS_AWARE PW_USE_SHADER_CACHE \
-    PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE 
+    PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK
     if [ "$?" == 0 ] ; then
         print_info "Restarting PP after update ppdb file..."
         /usr/bin/env bash -c ${pw_full_command_line[*]} &
-- 
2.24.1