0.4.0
Pre-release
Pre-release
Team Fortress 2 changes
- Reverted Ullapool Caber, Holiday Punch, Enforcer, Quick Fix, and Loose Cannon changes from 0.3.1 as they affected balance too much and TC2 is not the place for that
- Fixed a few code inspection warnings (dimhotepus, #553)
- Fixed
-nomasternot disabling master server updates - Adjusted priority of various threads, including increasing the default priority class of TF2 to above normal
- Increased the max static props per rendering batch to 2048 from 512
- Implemented a new frame synchronization algorithm which only holds frame waits for half of the refresh rate, improving parallelism which accounting for meaningful input lag
- Also improved frame sync interval, to use a pause instruction with backoff, so that frames with varying finish times do not overly affect the delay with which a frame is synced
- Fixed possible case of rendering freezing at very high frame rates
- Fixed incorrect pool being used for textures in D3D9Ex mode
- Disabled heavy query cache system, which is only used in L4D
Reworked math optimizations
- Faster, cleaner, and less buggy in certain cases
- This should fix animation errors on Linux, and in tools
- Updated to DirectXMath January 2021
Reworked threading changes
- Moved new threading events to separate system, so that it does not break ABI compatibility
- This should fix Linux & macOS crashing in vphysics
- Changed all thread pool usage to loop through their queue, and then wait
- This is fine even for the IO thread: it receives calls from the main thread, but it can continue multi-threading its jobs before responding to the main thread, since the main thread will process lingering jobs as a prerequisite anyway
- Added result caching to thread pool multi-wait, to speed up job processing
- Added yield backoff algorithm to wait
- Reverted priority boost while processing a job
- Increased multi-wait event count support from 5 to 14
- Condition queue improvements
- Changed condition queue from FIFO to LIFO
- Fixed ordering of multi-waits always overriding standard Wait
- Removed locking overhead from internal queue
- Disabled thread affinity
- Added yield scaling, so that different processors do not use different pause times
- Improved thread reply logic
- Improved thread calls latency, by caching the result of a peek instead of rechecking afterwards
- Fixed spurious wakeups causing threads to become dormant over time
- Improved parallel processing behavior in constrained scenarios
- Optimized locking overhead to atomic operation for thread events in some cases
- Implemented
CThreadPool::Yield - Improved behavior of
JF_NO_ADD - Reverted RWLock changes, instead, allow inlining by removing ASM
- Added 4 thread burst IO system, which should improve load times
- Enabled queued material system by default on start up
- Improved thread parallelism by balancing thread work
- Fixed contention in the data cache
- Updated parallel processing to use balanced workload scheme
Client leaf system changes
- Greatly improved the efficiency of parent bound calculations
- Improved when leaf system renders
- Added robust bounds caching for all entities (for both bloated and standard bounds)
- Skips most leaf system work if bounds are up to date, even after a renderable change notification
- Static prop bounds are cached at level start
- Entities with out of date bounds will have their bounds updated all at once, efficiently using multithreading
- Enabled leaf system for brush models
- Added
cl_leafsystemvisfrom CS:GO, to help visualize the client leaf system - Fixed a few bugs, crashes and hangs
Reworked sound changes
- Greatly reduced latency of the sound thread
- Added an early wait exit by allowing the game thread to notify the sound thread when a game frame has finished. This way, game frames instantly get processed by a sound frame.
- Optimized DirectSound to have a much more precise cursor location
- Optimized DirectSound to skip unnecessary sound processing in surround sound setups
- If the sound frame is behind, it will not wait, even for a short amount of time.
- Async sound data loading
- Greatly improved sound quality
- Fixed a few crashes caused by the sound thread
Team Comtress 2 fixes
- Fixed
r_queued_post_processingbeing set to 1, causing a missing texture overlay - Fixed some games not compiling correctly (Margen67, #506)
- Removed matchmaking options from main menu
- Removed featured items from main menu
- Ported fixes for player disconnect reason from TF2
- Improved: Player disconnect reason is still displayed if it is a built-in reason
- Ported removal of streams list from TF2
- Removed player material fixes from TC2, as there are newer player materials in TF2
- Ported minor HUD fixes and localization file changes from TF2
- Update protobuf from 2.5.0 to 2.6.1
- Moved to
srcdirectory - Reverted strict max usrcmd process ticks change from CS:GO