1554 Commits

Author SHA1 Message Date
Amos
492af0d5d1 Fix dedicated compile errors 2023-12-27 13:22:33 +01:00
Kawe Mazidjatari
2ce819712a NVIDIA: enable gfx_nvnUseMarkersToOptimize by default
Enabled by default, and removed playerprofile flag as we want to be able to disable this in the future may it cause problems. All tests done so far (on different hardware) yielded more latency reduction/performance improvements. Also added updated note for convar promo_version_accepted.
2023-12-26 23:42:44 +01:00
Kawe Mazidjatari
23b856d3f5 Recast: make detail mesh edge detection more robust
Merge recastnavitagion/recastnavitagion@c393777d26
Instead of using a distance check which can fail at large magnitudes due
to low precision we can check whether the edges are actually on the
hull.
2023-12-26 16:54:29 +01:00
Kawe Mazidjatari
9254ac2de3 Recast: fix:rcBuildLayerRegions missing areaType
Merge recastnavitagion/recastnavitagion@ddaa361b08
2023-12-26 16:24:43 +01:00
Kawe Mazidjatari
20112679cd Engine: reversed some CGame field names
Reversable thanks to the CInputSystem rebuild.
2023-12-26 11:32:27 +01:00
Kawe Mazidjatari
be53feed65 MaterialSystem: fix console not drawing in the 4:3/5:4 aspect ratio modes
DrawImGui should be called BEFORE ID3D11DeviceContext::ClearRenderTargetView() or ID3D11DeviceContext::End(). Moved drawing code to SpinPresent which is just before the clear/end calls are being made. Console now draws in the 4:3/5:4 aspect ratio video modes.
2023-12-26 02:37:07 +01:00
Kawe Mazidjatari
1ea7edd009 NVIDIA: move markers to actual IDXGISwapChain::Present runtime call
Testing revealed better latency reduction when moved directly here as we also take into account the additional buffy copy's the game does in SpinPresent, our new render thread frame limiter and and ImGui. The difference is very large when the render thread frame limiter is used. The code still passes NVIDIA's reflex testing utility after this patch.
2023-12-26 01:42:54 +01:00
Kawe Mazidjatari
10017fd84e NVIDIA: only run latency on success
Only run latency markers if NvAPI_D3D_SetSleepMode returned NVAPI_OK.
2023-12-25 23:43:41 +01:00
Kawe Mazidjatari
af8a3add00 NVIDIA: limit to 1 sleep per frame
The purpose of this bool was to only limit nv sleep to 1 per frame, but the bool was never reset.
2023-12-25 22:36:35 +01:00
Kawe Mazidjatari
3873cc81c2 InputSystem: rename function parameter 2023-12-25 19:36:59 +01:00
Kawe Mazidjatari
acbf0352da NVIDIA: always run PC Latency stats
PCLStats is not NVIDIA hardware bound as per Reflex's documentation, and runs separately from the NVIDIA Reflex code. Always enable!
2023-12-25 19:24:42 +01:00
Kawe Mazidjatari
0251c59227 NVIDIA: properly enqueue frame ID
Sync Frame ID between main thread and render thread, this changes makes the integration PASS the reflex test utility.
2023-12-25 19:23:01 +01:00
Kawe Mazidjatari
c3fed1dc2a MaterialSystem: Expose the proper pointer
The first pointer was a pointing to a pointer to g_MaterialSystem. The new pointer points directly to g_MaterialSystem. Also added CMaterialSystem::GetCurrentFrameCount() for g_FrameNum.
2023-12-25 18:47:05 +01:00
Kawe Mazidjatari
bbb5811bbf Engine: fix incorrect function names
Was actually pointing to Host_Init_DuringVideo, not Host_Init. Added all Host_Init functions to avoid confusion in the future.
2023-12-25 02:24:23 +01:00
Kawe Mazidjatari
f08f9dd4cb NVIDIA: low latency code decouple 2023-12-25 01:46:39 +01:00
Kawe Mazidjatari
6575f80447 NVIDIA: add TRIGGER_FLASH marker to input event handler 2023-12-24 22:32:58 +01:00
Kawe Mazidjatari
0e62280896 NVIDIA: add PC_LATENCY_PING marker to msg pump 2023-12-24 20:38:50 +01:00
Kawe Mazidjatari
aa1a43ac4f Tier0: add template inline for FindPatternSIMD
This allows for directly setting a function pointer without double casting it, and significantly reduce code verbosity.
2023-12-24 20:38:07 +01:00
Kawe Mazidjatari
76b927e3b0 Tier1: temporarily comment
Unused and causes errors due to unimplemented mutex class (needs to be reversed still).
2023-12-24 16:33:20 +01:00
Kawe Mazidjatari
d42ca04e8c EngineAPI: key event dispatcher rebuild 2023-12-24 16:29:42 +01:00
Kawe Mazidjatari
30518e1f64 InputSystem: make InputEventCallback_t return type bool 2023-12-24 15:23:05 +01:00
Kawe Mazidjatari
98d47ce8ed InputSystem: add reversed KeyInfo_t and KeyEvent_t struct
Almost fully mapped out, the unknown fields seem to be unused or padding.
2023-12-24 15:17:08 +01:00
Kawe Mazidjatari
fc668bb7f5 InputSystem: add comment to field 2023-12-24 15:15:17 +01:00
Kawe Mazidjatari
00622ec968 InputSystem: add inline helpers 2023-12-24 03:05:29 +01:00
Kawe Mazidjatari
ccfef821b0 InputSystem: fixup enumerants and controller structs
Enumerants:
* ButtonCode_t::JOYSTICK_MAX_BUTTON_COUNT = 32 (previously 26, incorrect...).
* AnalogCode_t::JOYSTICK_FIRST_AXIS = 2 (previously 4, incorrect...).
* Added: ButtonCode_t::KEY_CREDITSIGN (k104, last key).
* Fixed up Xbox controller enums.

Structs xdevice_t:
* Added partially reversed unkownhiddevice_t structure (used for non-xbox hardware).

General:
* Added static assertions for structure sizes.
2023-12-24 02:58:11 +01:00
Kawe Mazidjatari
e8f480bba4 Tier1: make CTier1AppSystem iface public 2023-12-24 02:48:49 +01:00
Kawe Mazidjatari
01b805f801 InputSystem: joystick deadzone indices and event input callback types
Adjust iface accordingly.
2023-12-23 19:37:39 +01:00
Kawe Mazidjatari
4ba6227759 InputSystem: largely reversed struct and fully reversed iface
Struct has been largely mapped out (still requires a bit of work, mostly the Xbox/Hid data structures). The vftable has been fully mapped out.
2023-12-23 17:23:17 +01:00
Kawe Mazidjatari
69e64ac8c3 Create utlstringmap.h 2023-12-23 17:21:20 +01:00
Kawe Mazidjatari
953bf9bd0d InputSystem: update button codes
Xbox enumerants have changed as the game supports Xbox One controllers. Since the joystick button count has changed, 'JOYSTICK_MAX_BUTTON_COUNT' has also changed which affects the size of datatypes used by the CInputSystem class.
2023-12-23 01:51:31 +01:00
Kawe Mazidjatari
d608c734bd Add/update core headers 2023-12-23 01:22:02 +01:00
Kawe Mazidjatari
3327654413 Add PCLSTATS marker 2023-12-23 01:15:43 +01:00
Kawe Mazidjatari
5105ea771d NVIDIA: initial implementation of latency markers 2023-12-22 14:42:28 +01:00
Kawe Mazidjatari
9d5c237338 Add new reversed packet header flags
These flags only exist in the respawn version of the engine. Renamed 'CNetChan::unknown_challenge_var' to 'CNetChan::m_nRealTimePackets'. This field counts the number of packets sent while the frame time wasn't prescaled with the 'host_timescale' cvar, see r5apex.exe+0x3093C0 (140309FC0).
2023-12-22 13:19:06 +01:00
Kawe Mazidjatari
78d6077b7f Add packet header flags 2023-12-22 13:12:55 +01:00
Kawe Mazidjatari
f312c408f0 NVIDIA: check if adapter is from NVIDIA in GFX_SetLatencyMarker()
Moved adapter vendor check to its own func, added a global which could be used to fully disable the low latency system. Also added groundwork for the (future) PCL stats implementation.
2023-12-20 22:21:31 +01:00
Kawe Mazidjatari
4c04d76ceb Use size types for keyvaluesystem interface 2023-12-20 21:14:18 +01:00
Kawe Mazidjatari
d76f3a712b Don't compile debug code in cert builds 2023-12-20 21:12:39 +01:00
Kawe Mazidjatari
219f0252b9 Add missing files
These are pre-generated, as mbedtls is reconfigured with a new CMakeLists.
2023-11-26 13:51:31 +01:00
Kawe Mazidjatari
e345be1e32 ConCommand: marked 'script(_...)' FCVAR_DEVELOPMENTONLY 2023-11-26 13:22:22 +01:00
Kawe Mazidjatari
e541814482 IDetour: code refactor
Utilize the new IDetour::DetourSetup() code, IDetour::Attach and IDetour::Detach have been removed in favor of this (significantly reduces chance of user error). Since the template check happens in the idetour header, it is much more aggressive on type mismatches, such as a difference in parameter types, between the function and detour, will now raise a compile time error. As a result, some type mismatches have been fixed in this commit as well.
2023-11-26 13:21:20 +01:00
Kawe Mazidjatari
e0a60a14e5 New method for IDetour
This will deprecate IDetour::Attach and IDetour::Detatch. This should reduce the chances of potential errors caused by using the wrong function in the wrong method (e.g. using DetourAttach in IDetour::Detatch).
2023-11-26 11:42:26 +01:00
Kawe Mazidjatari
fa2a005d34 Check if we have enough room for new execution markers
Make sure we always have enough room for new execution markers. Engine normally truncates the head of the vector if out of room; we want to avoid it as this will cause the cookies to shift, and thus cause them to misalign with their respective commands.
2023-11-25 17:41:08 +01:00
Kawe Mazidjatari
7648d19fa9 Implement CCommandBuffer
Code is based on Valve's implementation, with the following changes:
- Usage of 64bit signed size types.
- Usage of const where possible.
- Removal of field 'CCommandBuffer::m_nLastUsedArgSSize'.

Code is tested and compiles on all supported compilers.
2023-11-25 12:00:47 +01:00
Kawe Mazidjatari
236dc31292 Fix bug in utllinkedlist
Should return template type (default 'unsigned short') instead of int as Count.
2023-11-25 11:29:58 +01:00
Kawe Mazidjatari
e5d8f46c61 CCommand adjustments
Moved inlines to header; made ArgC return 32bit integer instead.
2023-11-25 11:27:47 +01:00
Kawe Mazidjatari
167ef46dcb Add additional warning codes to thirdparty warning suppressor 2023-11-25 11:24:06 +01:00
Kawe Mazidjatari
26a7e90354 Fix compiler warnings on Visual Studio 2017
Should not be a constexpr, this caused cryptic errors in template code when compiling the code with older compilers.
2023-11-25 11:23:19 +01:00
Kawe Mazidjatari
35fe8dad04 Fix declaration/implementation mismatch 2023-11-25 11:21:51 +01:00
Kawe Mazidjatari
e269d9d548 Add missing help strings 2023-11-10 01:29:50 +01:00