Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion FEX
Submodule FEX updated 41 files
+3 −1 FEXCore/Source/Interface/Core/CPUID.cpp
+497 −0 FEXCore/Source/Interface/Core/Dispatcher/Dispatcher.cpp
+9 −1 FEXCore/Source/Interface/Core/Dispatcher/Dispatcher.h
+60 −0 FEXCore/Source/Interface/Core/JIT/VectorOps.cpp
+4 −4 FEXCore/Source/Interface/IR/IR.json
+12 −1 FEXCore/Source/Utils/ArchHelpers/Arm64.cpp
+4 −0 FEXCore/include/FEXCore/Core/CoreState.h
+5 −5 Scripts/InstallFEX.py
+2 −1 Source/Common/HostFeatures.cpp
+15 −14 Source/Steam/CompatTool.cpp
+1 −0 Source/Tools/FEXGetConfig/CMakeLists.txt
+17 −17 Source/Tools/FEXGetConfig/Main.cpp
+53 −0 unittests/ASM/X87_F64/D9_F0_02_F64.asm
+60 −0 unittests/ASM/X87_F64/D9_F1_2_F64.asm
+63 −0 unittests/ASM/X87_F64/D9_F3_2_F64.asm
+54 −0 unittests/ASM/X87_F64/D9_FD_3_F64.asm
+8 −8 unittests/InstructionCountCI/AVX128/VEX_map1.json
+25 −25 unittests/InstructionCountCI/AVX128/VEX_map2.json
+24 −24 unittests/InstructionCountCI/AVX128/VEX_map2_SVE128.json
+8 −8 unittests/InstructionCountCI/AVX128/VEX_map3.json
+6 −6 unittests/InstructionCountCI/Crypto/H0F3A.json
+1 −1 unittests/InstructionCountCI/FlagM/Secondary.json
+1 −1 unittests/InstructionCountCI/FlagM/Secondary_OpSize.json
+1 −1 unittests/InstructionCountCI/FlagM/VEX_map1.json
+6 −6 unittests/InstructionCountCI/FlagM/x87-HalfLife.json
+37 −37 unittests/InstructionCountCI/FlagM/x87-Oblivion.json
+11 −11 unittests/InstructionCountCI/FlagM/x87-Psychonauts.json
+10 −10 unittests/InstructionCountCI/FlagM/x87.json
+15 −20 unittests/InstructionCountCI/FlagM/x87_f64.json
+1 −1 unittests/InstructionCountCI/H0F38.json
+6 −6 unittests/InstructionCountCI/H0F3A.json
+3 −3 unittests/InstructionCountCI/Secondary.json
+2 −2 unittests/InstructionCountCI/Secondary_OpSize.json
+10 −10 unittests/InstructionCountCI/Secondary_REP.json
+1 −1 unittests/InstructionCountCI/Secondary_REPNE.json
+21 −21 unittests/InstructionCountCI/VEX_map1.json
+2 −2 unittests/InstructionCountCI/VEX_map1_FRINTTS.json
+13 −13 unittests/InstructionCountCI/VEX_map2.json
+2 −2 unittests/InstructionCountCI/VEX_map3.json
+10 −10 unittests/InstructionCountCI/x87.json
+15 −20 unittests/InstructionCountCI/x87_f64.json
2 changes: 1 addition & 1 deletion Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -1233,7 +1233,7 @@ all-dist: $(DIST_WINEMONO)
## xalia
##

XALIA_VER := 0.4.8
XALIA_VER := 0.4.9
XALIA_ZIP := xalia-$(XALIA_VER)-net48-mono.zip
DIST_XALIA_DIR := $(DST_DIR)/share/xalia
DIST_XALIA := $(OBJ)/.xalia-dist
Expand Down
2 changes: 1 addition & 1 deletion dxvk
Submodule dxvk updated 135 files
2 changes: 1 addition & 1 deletion dxvk-nvapi
Submodule dxvk-nvapi updated 55 files
+1 −1 .github/workflows/build-llvm.yml
+1 −1 .github/workflows/build-test-package-linux.yml
+1 −1 .github/workflows/build-test-windows.yml
+0 −0 .noai
+7 −1 README.md
+1 −1 external/nvapi
+244 −80 inc/catch2/catch_amalgamated.cpp
+261 −59 inc/catch2/catch_amalgamated.hpp
+331 −48 inc/nvml/nvml.h
+1 −0 meson.build
+49 −0 src/interfaces/vkd3d-proton_interfaces.h
+1 −1 src/meson.build
+15 −0 src/nvapi/nvapi_adapter.cpp
+2 −0 src/nvapi/nvapi_adapter.h
+1 −1 src/nvapi/nvapi_adapter_registry.h
+64 −1 src/nvapi/nvapi_d3d12_device.cpp
+10 −1 src/nvapi/nvapi_d3d12_device.h
+8 −0 src/nvapi/nvapi_resource_factory.cpp
+1 −0 src/nvapi/nvapi_resource_factory.h
+13 −0 src/nvapi_d3d11.cpp
+178 −2 src/nvapi_d3d12.cpp
+1 −1 src/nvapi_disp.cpp
+30 −0 src/nvapi_drs.cpp
+36 −8 src/nvapi_gpu.cpp
+8 −0 src/nvapi_interface.cpp
+31 −0 src/nvapi_ngx.cpp
+10 −5 src/nvapi_vulkan.cpp
+67 −1 src/util/util_drs.h
+25 −4 src/util/util_log.h
+21 −0 src/util/util_raytracing_caps.h
+4 −2 tests/meson.build
+7 −1 tests/mocks/d3d12_mocks.h
+53 −0 tests/mocks/vulkan_mocks.h
+75 −0 tests/nvapi/default_test_environment.cpp
+28 −0 tests/nvapi/default_test_environment.h
+130 −0 tests/nvapi/extended_test_environment.cpp
+33 −0 tests/nvapi/extended_test_environment.h
+82 −0 tests/nvapi/mock_factory.cpp
+21 −27 tests/nvapi/mock_factory.h
+0 −303 tests/nvapi/resource_factory_util.cpp
+0 −46 tests/nvapi/resource_factory_util.h
+23 −3 tests/nvapi/section_listener.h
+3 −9 tests/nvapi_d3d.cpp
+8 −9 tests/nvapi_d3d11.cpp
+210 −47 tests/nvapi_d3d12.cpp
+40 −0 tests/nvapi_drs.cpp
+35 −0 tests/nvapi_ngx.cpp
+129 −109 tests/nvapi_sysinfo.cpp
+13 −19 tests/nvapi_sysinfo_hdr.cpp
+31 −52 tests/nvapi_sysinfo_nvml.cpp
+4 −13 tests/nvapi_sysinfo_topo.cpp
+24 −0 tests/nvapi_system.cpp
+0 −4 tests/nvapi_tests_private.h
+36 −63 tests/nvapi_vulkan.cpp
+0 −4 tests/nvofapi_tests_private.h
6 changes: 6 additions & 0 deletions proton
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ from ctypes import c_void_p
from ctypes import c_size_t
from ctypes import c_ssize_t

# PYTHONSAFEPATH might be set, so add the script directory to the path for relative imports
try:
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
except NameError:
pass

from filelock import FileLock
from random import randrange

Expand Down
2 changes: 1 addition & 1 deletion vkd3d
Submodule vkd3d updated from 30b93d to fad7fc
1 change: 1 addition & 0 deletions vrclient_x64/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ EXTRADEFS = -DGNUC

SOURCES = \
flatapi.c \
vrapplications_manual.c \
vrclient_generated.c \
vrclient_main.c \
vrcompositor_manual.c \
Expand Down
2 changes: 1 addition & 1 deletion vrclient_x64/gen_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@
]

MANUAL_METHODS = {
"IVRApplications_LaunchInternalProcess": lambda ver, abi: abi == 'u',
"IVRApplications_LaunchInternalProcess": True,
"IVRApplications_RegisterSubprocess": lambda ver, abi: abi == 'u',
"IVRClientCore_BIsHmdPresent": lambda ver, abi: abi == 'w',
"IVRClientCore_Init": lambda ver, abi: True,
Expand Down
120 changes: 120 additions & 0 deletions vrclient_x64/vrapplications_manual.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
#include "vrclient_private.h"
#include "winreg.h"

WINE_DEFAULT_DEBUG_CHANNEL(vrclient);

static BOOL launch_through_register_subprocess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments,
const char *pchWorkingDirectory, uint32_t *ret)
{
static struct u_iface apps_iface;
struct IVRApplications_IVRApplications_008_RegisterSubprocess_params params = { 0 };
PROCESS_INFORMATION pi;
STARTUPINFOA si = { sizeof(si) };

TRACE("pchBinaryPath %s, pchArguments %s, pchWorkingDirectory %s.\n",
debugstr_a(pchBinaryPath), debugstr_a(pchArguments), debugstr_a(pchWorkingDirectory));

if (!apps_iface.handle)
{
int return_code;
struct vrclient_VRClientCoreFactory_params params = {.name = "IVRApplications_008", .return_code = &return_code};
VRCLIENT_CALL( vrclient_VRClientCoreFactory, &params );
apps_iface = params._ret;
}
if (!apps_iface.handle)
{
FIXME("IVRApplications_008 not found.\n");
return FALSE;
}

*ret = 104; /* VRApplicationError_UnknownApplication */
if (!CreateProcessA(pchBinaryPath, (char *)pchArguments, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, pchWorkingDirectory, &si, &pi))
{
ERR( "CreateProcessW failed, err %lu.\n", GetLastError() );
return TRUE;
}
params.u_iface = apps_iface;
params.nPid = GetProcessId(pi.hProcess);
VRCLIENT_CALL( IVRApplications_IVRApplications_008_RegisterSubprocess, &params );
*ret = params._ret;
if (params._ret) TerminateProcess(pi.hProcess, -1);
else ResumeThread(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return TRUE;
}

uint32_t __thiscall winIVRApplications_IVRApplications_004_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_004_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
if (!launch_through_register_subprocess(_this, pchBinaryPath, pchArguments, pchWorkingDirectory, &params._ret))
VRCLIENT_CALL( IVRApplications_IVRApplications_004_LaunchInternalProcess, &params );
return params._ret;
}

uint32_t __thiscall winIVRApplications_IVRApplications_005_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_005_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
if (!launch_through_register_subprocess(_this, pchBinaryPath, pchArguments, pchWorkingDirectory, &params._ret))
VRCLIENT_CALL( IVRApplications_IVRApplications_005_LaunchInternalProcess, &params );
return params._ret;
}

uint32_t __thiscall winIVRApplications_IVRApplications_006_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_006_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
if (!launch_through_register_subprocess(_this, pchBinaryPath, pchArguments, pchWorkingDirectory, &params._ret))
VRCLIENT_CALL( IVRApplications_IVRApplications_006_LaunchInternalProcess, &params );
return params._ret;
}

uint32_t __thiscall winIVRApplications_IVRApplications_007_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_007_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
if (!launch_through_register_subprocess(_this, pchBinaryPath, pchArguments, pchWorkingDirectory, &params._ret))
VRCLIENT_CALL( IVRApplications_IVRApplications_007_LaunchInternalProcess, &params );
return params._ret;
}

uint32_t __thiscall winIVRApplications_IVRApplications_008_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_008_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
if (!launch_through_register_subprocess(_this, pchBinaryPath, pchArguments, pchWorkingDirectory, &params._ret))
VRCLIENT_CALL( IVRApplications_IVRApplications_008_LaunchInternalProcess, &params );
return params._ret;
}
70 changes: 5 additions & 65 deletions vrclient_x64/winIVRApplications.c
Original file line number Diff line number Diff line change
Expand Up @@ -1420,19 +1420,7 @@ int8_t __thiscall winIVRApplications_IVRApplications_004_IsQuitUserPromptRequest
return params._ret;
}

uint32_t __thiscall winIVRApplications_IVRApplications_004_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_004_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
VRCLIENT_CALL( IVRApplications_IVRApplications_004_LaunchInternalProcess, &params );
return params._ret;
}
extern uint32_t __thiscall winIVRApplications_IVRApplications_004_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory);

extern vtable_ptr winIVRApplications_IVRApplications_004_vtable;

Expand Down Expand Up @@ -1844,19 +1832,7 @@ int8_t __thiscall winIVRApplications_IVRApplications_005_IsQuitUserPromptRequest
return params._ret;
}

uint32_t __thiscall winIVRApplications_IVRApplications_005_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_005_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
VRCLIENT_CALL( IVRApplications_IVRApplications_005_LaunchInternalProcess, &params );
return params._ret;
}
extern uint32_t __thiscall winIVRApplications_IVRApplications_005_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory);

extern vtable_ptr winIVRApplications_IVRApplications_005_vtable;

Expand Down Expand Up @@ -2359,19 +2335,7 @@ int8_t __thiscall winIVRApplications_IVRApplications_006_IsQuitUserPromptRequest
return params._ret;
}

uint32_t __thiscall winIVRApplications_IVRApplications_006_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_006_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
VRCLIENT_CALL( IVRApplications_IVRApplications_006_LaunchInternalProcess, &params );
return params._ret;
}
extern uint32_t __thiscall winIVRApplications_IVRApplications_006_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory);

uint32_t __thiscall winIVRApplications_IVRApplications_006_GetCurrentSceneProcessId(struct w_iface *_this)
{
Expand Down Expand Up @@ -2887,19 +2851,7 @@ const char * __thiscall winIVRApplications_IVRApplications_007_GetSceneApplicati
return get_unix_buffer( params._ret );
}

uint32_t __thiscall winIVRApplications_IVRApplications_007_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_007_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
VRCLIENT_CALL( IVRApplications_IVRApplications_007_LaunchInternalProcess, &params );
return params._ret;
}
extern uint32_t __thiscall winIVRApplications_IVRApplications_007_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory);

uint32_t __thiscall winIVRApplications_IVRApplications_007_GetCurrentSceneProcessId(struct w_iface *_this)
{
Expand Down Expand Up @@ -3414,19 +3366,7 @@ const char * __thiscall winIVRApplications_IVRApplications_008_GetSceneApplicati
return get_unix_buffer( params._ret );
}

uint32_t __thiscall winIVRApplications_IVRApplications_008_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory)
{
struct IVRApplications_IVRApplications_008_LaunchInternalProcess_params params =
{
.u_iface = _this->u_iface,
.pchBinaryPath = pchBinaryPath,
.pchArguments = pchArguments,
.pchWorkingDirectory = pchWorkingDirectory,
};
TRACE("%p\n", _this);
VRCLIENT_CALL( IVRApplications_IVRApplications_008_LaunchInternalProcess, &params );
return params._ret;
}
extern uint32_t __thiscall winIVRApplications_IVRApplications_008_LaunchInternalProcess(struct w_iface *_this, const char *pchBinaryPath, const char *pchArguments, const char *pchWorkingDirectory);

uint32_t __thiscall winIVRApplications_IVRApplications_008_RegisterSubprocess(struct w_iface *_this, uint32_t nPid)
{
Expand Down
2 changes: 1 addition & 1 deletion wine
Submodule wine updated 100 files
Loading