-
Notifications
You must be signed in to change notification settings - Fork 54
/
CHANGELOG.txt
12460 lines (9625 loc) · 453 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
25.1.5
======
+ Improved handling of mouse cursor when background render is enabled and
the game window is in the background (for games that use GetCursorPos ()).
25.1.3.1
========
+ Revert 24.12.29.1's optimizations that could cause incorrect game rendering.
25.1.3
======
+ Fixed INI file not saving at exit
+ Revert changes introduced in 25.1.1
25.1.2.2
========
+ Fixed potential crash at exit in D3D12 games.
25.1.2.1
========
+ Re-enable anti-cheat workarounds for various Asian gambling games.
25.1.2
======
+ Add hack to workaround dgVoodoo thread sync wonkiness in 32-bit D3D12.
+ Fixed local injection in D3D11 games not working.
25.1.1.2
========
+ HOTFIX to continue installing queued hooks even if one of them fails due to
anti-cheat memory protection.
25.1.1.1
========
+ HOTFIX to install DXGI/D3D11 hooks immediately rather than deferring them.
25.1.1
======
+ Sped up hook installation a little bit to reduce hook races.
24.12.31.1
==========
+ Fixed the PlayStation/Xbox Button + Right Trigger to minimize game feature
so that it also hides the ADHD Multi-Monitor background window.
+ Organized Display and HDR menus better.
24.12.31
========
+ Optimized SK's Mouse Window Hook to use the hit test code, rather than
performing hit testing of its own to see if the mouse is insie the window.
+ The ADHD background window will now disappear when minimizing a game while
the feature is active.
24.12.29.5
==========
+ Add backup input thread for games that stop processing input on their
message queue for long periods of time (i.e. during FMV playback),
so that SK's keyboard macros and basic mouse input (no scrollwheel)
remain responsive.
* Or, in the worst-case, this backup thread handles all Keyboard & Mouse
because it wasn't possible to hook the game's window thread.
24.12.29.4
==========
+ Removed foreground window HWND caching, the WinEventHookProc does
not order the events it sends coherently.
+ Added extra checks to ensure mouse cursor can activate games when
clicking on the control panel while the window is in the background.
24.12.29.3
==========
+ Change SK_Thread_HybridSpinlock (Critical Section + Spinlock) w/
a recursive SRWLock implementation for testing.
+ Switch to calling GetAsyncKeyState (...) if SK's thread-local
Keyboard Hook does not pickup any input for 5 frames.
24.12.29.2
==========
+ Added option to have ADHD mode disengage when Alt-Tabbing to apps on
the same display as the game.
+ ADHD mode disables Aspect Ratio Stretch now.
+ Fixed PlayStation controller rumble not being cleared at game exit.
24.12.29.1
==========
+ Added a new display mode to blackout secondary monitors while playing
games (Refer to Display | ADHD Multi-Monitor Mode).
+ Added keybind for ADHD Multi-Monitor Mode to Monitor Management keys
in the Display menu.
+ Added command console variable to toggle this mode:
Display.MultiMonitorFocus {true|false} Default: false
+ Various minor optimizations for mouse (cursor) and window management.
24.12.29
========
+ Improved input neutralization for games that use Overlapped IO to read
HID devices (i.e. SDL2) when blocking input to the game.
+ Fixed problems with mouse cursor clipping caused by treading ClipRect
as thread-local instead of global.
24.12.28.5
==========
+ Updated compiler version; anything broken between 24.12.28.4 and now is
probably a compiler bug.
24.12.28.4
==========
+ Disable dynamic spinlocks feature accidentally enabled for all games
in 24.12.28.1.
24.12.28.3
==========
+ Deferred Context Isolation now re-enables the Wrap -AND- Hook codepath
required for some D3D11 games.
+ Fixed NieR: Replicant setting changes not applying immediately.
24.12.28.2
==========
+ Fixed unintentional creation of empty NVIDIA driver profiles for
games whose .exe exists in multiple profiles when checking whether
ReBAR is enabled for a game during initialization.
24.12.28.1
==========
+ Added caching for calls to GetForegroundWindow (...) and
GetWindowThreadProcessId (...)
+ Removed locking code from XInput, it was already mostly lockless
24.12.28
========
+ Fixed some games inheriting SK's hardware cursor after the cursor
moves off of SK's UI.
24.12.27.3
==========
+ Load ReShade Early plug-ins as early as possible (after INI parse)
+ Optimized various state block and UI code
24.12.27.2
==========
+ Slight performance tweak for D3D11_**SetShader_Override (...) and
D3D11_**SetShaderResources_Override (...).
24.12.27.1
==========
+ Fixed incorrect Reflex eligibility checks introduced in 24.12.27
24.12.27
========
+ Optimized D3D11 state tracker to ignore set shader calls, and draw calls unless
specific combinations of render mods that actually need them are active.
+ Optimized control panel's end-of-frame input polling and cursor status checks.
+ Optimized shader tracker to avoid clearing active RTV cache at the end-of-frame
unless render mod tools window is open.
+ Optimized timer queries used by SK's shader profiler and HDR widget to suspend
while render mod toolkit / HDR widget are not active.
+ Optimized D3D11 Stateblock Restore code to bypass invoking SK's state tracking
hooks.
24.12.26.3
==========
+ Added missing draw call information to Reflex latency markers in D3D11 games
24.12.26.2
==========
+ Small optimization to text OSD
+ Optimized D3D11 state tracking for SetShaderResources and removed unnecessary
hooks on SetSamplers.
24.12.26.1
==========
+ Fixed potential deadlock in RenoDX mods, the ones that do not check for
nullptr before dereferencing ptrs will simply have to crash until fixed.
+ Disabled floating-point exception handling when ResizeTargets is called,
because it causes all CryTek games to crash.
24.12.26
========
+ Added internal settings to control D3D11 state tracking for map/unmap and
set shader resources API calls, and disabled them for a few high overhead
games.
+ Disabled wrapping of D3D11 device contexts for all games except for
Tales of Vesperia.
24.12.25.2
==========
+ Improved compatibility with RenoDX mods, even the ones that do not check for
nullptr :grimacing:
+ Slightly sped-up initialization in some D3D games.
24.12.25.1
==========
+ Create an IDXGIFactory2 rather than IDXGIFactory when initializing hooks to
avoid complications from ReShade calling QueryInterface to upgrade an
interface that SK has not yet wrapped.
24.12.25
========
+ Reduced performance overhead of the Steam and battery management sections of
the control panel (battery overhead applies to framepacing widget too...)
+ Ignore D3D11DeviceContext Set*Resource state tracking unless the render mod
tools window is open.
24.12.24.2
==========
+ Further reduce performance overhead in D3D11 across the board for CPU-bound
scenarios in games that make a lot of draw calls.
+ Optimized Get/SetMute to avoid constructing a temporary ISimpleAudioVolume
COM object every time it is called.
24.12.24.1
==========
+ Lowered CPU overhead in D3D11 games related to third-party overlay color
correction shader replacement when an HDR display is attached.
>> State tracking for them will only occur during Present (...) calls now.
24.12.24
========
+ Avoid destroying the SwapChain that Special K creates during initialization
to setup D3D11 hooks, because poorly written ReShade addons may crash.
+ The option to disable the Steam overlay's rendering now also blocks it from
installing input hooks, making it finally inert.
+ Automatically apply anti-cheat bypass to all Hoyo games according to their
digital certificate, so I no longer have to manually do this when they
release a new game.
24.12.23
========
+ When ReShade is used as dxgi.dll in D3D12 games, SK no longer gives warnings
about compatibility problems.
+ Avoid using explicitly constructed ReShade effect runtimes as much as
possible when SK is not running in Hookless ReShade (compatibility) mode,
to avoid confusing AddOns that think these are normal ReShade runtimes.
+ Added checks to detect ReShade's incorrectly reported D3D11 immediate device
context reference counts that may cause deadlock during game exit or when
temporary D3D11 devices are constructed and destroyed (ie. overlay init)
24.12.22
========
+ Fixed absent custom resolutions caused by a typo in the Display menu a few
years ago...
+ Restored missing audio devices in the list of pairable display/audio output
mappings, lost about a moth ago.
+ Fixed CPU affinity mask potentially overflowing and not working in 32-bit.
( Whether you have one of those mythical 64-core CPUs or not, chances are
affinity mask settings were not working in 32-bit games ).
24.12.21.4
==========
+ Revert scheduler changes related to Sleep (0) behavior in 24.12.15 that cause
Silent Hill 2 to crash.
24.12.21.3
==========
+ Fixed recent change that would cause the control panel to crash in Steam games
if Steam cloud is disabled or SteamAPI integration is turned off.
24.12.21.2
==========
+ Fixed typo that has been preventing SK's D3D11 texture cache from evaluating
the list of freeable textures when cache capacity exceeds user-defined
limit for several years... oops?
+ Fixed various other small issues, nothing as serious as the one above.
24.12.21.1
==========
+ Fixed cursor auto-hide changes accidentally introduced in 24.12.21
24.12.21
========
+ Re-aranged the window management and mouse cursor section of the control
panel slightly.
+ Opted the majority of the codebase into the non-commerical open source
license of PVS Studio; by placing comments above the license disclaimer
in most source files.
24.12.20.2
==========
+ HOTFIX for NVIDIA Vulkan/DXGI interop issues introduced in 24.12.20.
24.12.20.1
==========
+ Eliminate unnecessary load of Windows.Gaming.Input.dll in games that do not
actually use the API.
+ Fixed various minor issues discovered using static analysis with PVS-Studio.
24.12.20
========
+ Fixed EOS crash in games using extremely old versions of EOS SDK lacking
support for EOS_UI_AddNotifyDisplaySettingsUpdated (i.e. Path of Exile 2).
+ Add mutex to SK_IWrapD3D11DeviceContext::Release (...) to handle recursion
during deferred destruction of D3D11 Immediate Device Context singleton.
24.12.19.4
==========
+ Fix DualShock 4 Bluetooth analog stick problems caused by typo in 24.12.19.2
24.12.19.3
==========
+ Correctly show PlayStation icon in GameInput games only when PlayStation
input/output is active, for native GameInput remove the icon.
+ Allow DualSense users (non-Edge version) to access the Impulse Trigger
strength slider.
24.12.19.2
==========
+ Add logarithmic scaling to deadzone compensation on PlayStation controllers
and extend the option to native Xbox controllers also.
+ Fixed off-by-one issue when quantizing the x-axis in some PlayStation device
configurations.
24.12.19.1
==========
+ Added system to ensure XInputGetState{Ex} (...) packet counts are always
monotonic increasing in mixed-native/translated hot-swap scenarios.
(i.e. Xbox and PlayStation controller are both connected and SK's
auto-switch-on-new-input causes the game to start reading the other)
DOOM Eternal only responds to sequential packet numbers, so exposing the
_real_ device packet numbers would cause it to stop responding to input.
+ Clear the state of the PlayStation button when all PlayStation controllers
disconnect, so that SK doesn't block all other buttons because it thinks
the user is trying to input a PlayStation + <...> button combo.
24.12.19
========
+ Overhauled Windows.Gaming.Input implementation to support hot-plugging
PlayStation controllers and enabling "Xbox Mode" without requiring a
complete game restart.
+ Add 7.5 second delay before announcing virtual PlayStation controllers
to games using Windows.Gaming.Input
+ Added logging for games that try to create IID_IRawGameControllerStatics.
24.12.18
========
+ Correctly implement AVIF screenshot encoder quality; quantizer was set to
lossless at all quality levels before!
+ When holding Xbox Guide / PlayStation / Nintendo Home button, ImGui menu
navigation is now temporarily blocked (if chords are enabled).
24.12.17.2
==========
+ Reduce latency on HID output reports (i.e. rumble, lighting changes, etc.)
for DualShock 4 and DualSense{Edge} controllers.
24.12.17.1
==========
+ Revert ResizeTarget optimization from 24.12.15.4, because it only works as
intended in D3D11 games.
24.12.17
========
+ Reduced default Impulse Trigger strength in Forza Horizon 5 to 33%
+ Added PlayStation controller latency readings back to the control panel
24.12.16.1
==========
+ Fixed beeping when pressing keyboard input in some games after using chords:
PlayStation + R2 / PlayStation + L2 to minimize and restore a game.
24.12.16
========
+ Improve HID->XInput timestamp management when threads are updating the state
concurrently.
+ Fix potential crash while games poll keyboard input from multiple threads
and SK's primary render context is not active.
+ Speed up render context re-initialization following a window resize.
24.12.15.4
==========
+ Revert recent changes to Sleepless Window Thread that could hurt framerate.
+ Unset most hooked window management trampoline functions during shutdown.
+ Use ShowWindowAsync (...) in all cases where synchronous state change is
unnecessary, in order to minimize window management wait-chains.
+ Do not show Windows.Gaming.Input warnings to PlayStation controller users
if theey have deliberately blocked a game from using XInput-derived APIs.
+ Avoid IDXGISwapChain::ResizeTarget (...) when appropriate, in favor of
the simpler and much more likely to succeed without disrupting MPOs,
IDXGISwapChain::ResizeBuffers (...).
24.12.15.3
==========
+ Add hacky workaround for Indiana Jones' Vulkan window not properly releasing
topmost status on alt-tab.
24.12.15.2
==========
+ Removed unnecessary Windows.Gaming.Input warning messages in SDL2 and Nixxes
games if they initialize input before creating a game window.
24.12.15.1
==========
+ Apply/reset trigger resistance for DualSense controllers every time they
connect/reconnect, and do not wait for vibration data to be written first.
24.12.15
========
+ Added configurable constant trigger resistance for DualSense controlelrs...
[Input.Gamepad]
{Left|Right}TriggerResistance={-1.0,[0.0,1.0]} Default=-1.0 (not applied)
{Left|Right}TriggerResistsAt={-1.0,[0.0,1.0]} Default=-1.0 (not applied)
TriggerResistsAt defines the ratio of trigger pull (1.0 = full pull)
before any resistance is applied; set to 1.0 or -1.0 to disable.
NOTE: 0.0 resistance actually has slight (minimum supported) resistance.
* This is a per-game setting, not currently exposed in the control panel.
+ Added command console variables to control the settings listed above:
Input.Gamepad.DualSense.ResistStr{L|R}={-1.0f,[0.0,1.0]}
Input.Gamepad.DualSense.ResistPos{L|R}={-1.0f,[0.0,1.0]}
+ Added command console variables to control Xbox Impulse Trigger strength:
Input.Gamepad.DualSense.ImpulseStr{L|R}=[0.0,1.0]
24.12.12
========
+ Disabled anisotropic filtering optimizations in Metaphor: ReFantazio because
most textures are not mipmap-complete.
24.12.8
=======
+ Uncommented checks for PlayStation controllers when a game uses
Windows.Gaming.Input warning about potential incompatibility.
24.12.3
=======
+ Various changes to ensure GameInput games do not read from the same memory
that SK's input I/O threads are actively writing to, lockless of course.
24.12.2.1
=========
+ Fixed internal deadzone on PlayStation controller input used to determine
which gamepad has the most recent input (i.e. if the same controller is
attached to USB and Bluetooth simultaneously), being applied to the
readings sent to games.
* This was causing stick drift.
24.12.2
=======
+ Added a trigger deadzone applied during trigger force feedback to keep
games from registering the small force feedback movement as actual user
input (i.e. pulling and releasing a gun's trigger rapidly).
24.12.1.4
=========
+ Support native GameInput implementations when Xbox Emulation is turned off.
24.12.1.3
=========
+ XInput emulation now bypasses GameInput.dll for systems that do not have
this DLL.
24.12.1.2
=========
+ Enable Impulse Trigger strength sliders in Windows.Gaming.Input games
24.12.1.1
=========
+ Allow Starfield to read Windows.Gaming.Input and write XInput
24.12.1
=======
+ Fixed issues with games that poll XInput multiple times per-frame from more
than one thread.
+ Implemented support for reading XInput and writing Windows.Gaming.Input in
the same game (Forza Horizon 5's Impulse Triggers now work on DualSense).
24.11.30.4
==========
+ Added Xbox Impulse Trigger->PlayStation Adaptive Trigger emulation for games
using Windows.Gaming.Input (99.99% of games that support the feature).
* Make sure Xbox Mode is enabled and restart if needed; off by default.
24.11.30.3
==========
+ Properly remove Adaptive Trigger force feedback when impulse vibration stops
24.11.30.2
==========
+ Implement PlayStation Adaptive Trigger support for DualSense controllers
connected using Bluetooth.
24.11.30.1
==========
+ Bring back original slUpgradeInterface / slGetNativeInterface implementation
that could handle situations where sl.interposer.dll is loaded late.
+ Increase default impulse trigger strength modifier to 0.75x, and properly
handle the case where setVibration (...) has zero trigger data.
24.11.30
========
+ For all Unreal Engine games that use GameInput, enable Xbox Emulation by
default on first launch.
+ Implement Adaptive Trigger response for GameInput Impulse Trigger emulation,
shooting guns and stabbing stuff in STALKER 2 now has Force Feedback that
would otherwise be Xbox exclusive!
24.11.29.5
==========
+ Enable XInput emulation by default in STALKER 2
24.11.29.4
==========
+ Ensure that "LowSpecMode" is enabled even for Metaphor: ReFantazio users with
texture mods installer, and change the auto-disable feature to only apply
when staging texture cache is enabled.
+ Disable deferred context isolation in Metaphor by default for performance,
re-enable it if you need live texture modding or hudless screenshots.
+ Improved thread interlocking for XInput rumble
24.11.29.3
==========
+ Make Impulse Trigger Str. (Left/Right) configruable from SK's control panel.
+ Correctly clear rumble when games pass a nullptr to SetRumbleState (...).
24.11.29.2
==========
+ Added preliminary Xbox Impulse Triggers -> DualSense Haptics, in STALKER 2;
think of it more as supplementary rumble for the time being.
It does give a sensation you wouldn't get from just the 2 normal high/low
frequency rumble motors (or emulated motors in DualSense's case), but it
is not as advanced as actual haptic effects or Force Feedback Triggers.
I think a combination of the two could possibly create a convincing feeling,
but haven't had time to implement the various force feedback effect types
yet.
24.11.29.1
==========
+ Avoid memory move in SK_Exception_HandleThreadName (...) when assigning
wide character name, explicitly copy the string.
24.11.29
========
+ Stop forcing latency waitable swapchains on in games that do not normally
use them unless SwapChainWait is set to a non-zero value in INI.
+ Optimize NVIDIA Reflex timing marker code in D3D12 games to avoid a constant
check for sl.interposer.dll.
24.11.28.7
==========
+ Adjust Unreal Engine thread priorities for reduced stutter.
+ Disable OpenGL and D3D9 hooks in ReShade is loaded as dxgi.dll or d3d12.dll,
in order to speed initialization up and reduce the chances of hook races.
24.11.28.6
==========
+ Fix potential crash on non-Latency Waitable D3D12 SwapChains when SK
attempts to query the device latency from the D3D12 Device's DXGI Device.
+ Remove Latency Waitable status from S.T.A.L.K.E.R. 2's SwapChain to help
reduce stutter slightly.
24.11.28.5
==========
+ Implemented PlayStation->GameInput translation for DualShock 3/4 and
DualSense controllers over USB and Bluetooth (DS4/DualSense only).
+ Removed warning about needing DS4Windows in GameInput games.
24.11.28.4
==========
+ Implement haptic/rumble blocking support for GameInput; S.T.A.L.K.E.R. 2
uses impulse triggers, so next step is to translate those to DualSense.
24.11.28.3
==========
+ Remove warning for ReShade loaded as dxgi.dll/d3d12.dll in D3D12 games;
it's still not a fully compatible combination, but the UI will at least
work (no SK Add-On releated features will).
24.11.28.2
==========
+ Add 1 frame delay before returning GAMEINPUT_E_READING_NOT_FOUND when
initiating GameInput device blocking, so that the game will first read
safe neutralized input values.
(i.e. you don't keep running forward when the control panel opens).
24.11.28.1
==========
+ Improved gamepad input blocking when using GameInput
+ Wrapped IGameInputReading in order to implement PlayStation->GameInput
translation (not complete).
24.11.28
========
+ Added initial support for GameInput; that means activity indicators in the
active Input API section of the control panel and blocking device classes
when SK's control panel is open or devices are enabled/disabled.
+ Currently Special K cannot emulate GameInput for PlayStation controllers,
>> You must use DS4Windows to play games such as STALKER2 using a DualShock
or DualSense controller.
* Emulation support is planned, but the API is new to me and there is only
one known game that uses the API at the moment :)
24.11.27
========
+ Adjusted Tomb Raider Remastered (OpenGL)'s default settings to use 8-bpc
instead of 10-bpc, because the game is sRGB.
24.11.25
========
+ Disable the option to clear Flip Model backbuffers on present by default,
because it prevents OBS Game Capture in some (D3D11) scenarios.
24.11.24.2
==========
+ Allow moving windows to different monitors by dragging without triggering
SK's monitor-change message (causes games to maximize the game window).
24.11.24.1
==========
+ Fixed accidentally using ImGuiKey_MouseLeft to index the ImGuiIO::MouseDown
array (which only has 5 buttons; the value of ImGuiKey_MouseLeft is 653!)
* It should have been ImGuiIO::AddMouseButtonEvent (ImGuiKey_MouseLeft,...).
>> This relatively new bug only affected games w/ (Low-Level) Mouse Hooks...
+ Ignore mouse button capture when the mouse cursor is over a non-client part
of a game window (i.e. title bar or resize grips).
+ Disengage the "confine cursor" option temporarily while a game window has
been grabbed and is inside of the "size/move" modal loop, so that the
window can actually be resized or repositioned without interference.
24.11.24
========
+ Unload plug-in DLLs at game exit _before_ uninstalling all hooked functions.
+ Add plug-in DLL names to the unload log entires during game shutdown.
+ Run each plug-in unload attempt within its own exception handler and
continue unloading remaining plug-ins if there is an exception.
24.11.23.2
==========
+ Fixed the issue in 24.11.23.1 the correct way :) The staging copy of the
backbuffer needs to be enqueued, the reference to the backbuffer released,
and the command queue flushed immediately and then there are no chances
for the swapchain backbuffers to have outstanding references.
24.11.23.1
==========
+ Fixed D3D11 screenshots occasionally causing display mode changes to fail if
a (Blt Model) game requested a mode change within 500-ms of the last screen
capture.
24.11.23
========
+ Cleaned-up Mouse Cursor section of Input Control Panel and removed the old
"Low-Level Mouse Settings" section.
+ Auto-Bluetooth Compatibility now only powers off PlayStation controllers
that have advanced Bluetooth mode active if SK has seen the game attempt
to poll input using WinMM or DirectInput 7/8 at least one time first.
# Controllers start in "simple" Bluetooth mode when initially powered on,
which is a mode compatible with DirectInput and WinMM.
>> Prior to this change, it could cause an endless loop of the controller
powering off, Steam Input re-initializing the controller in advanced
Bluetooth mode when powered back on, and then SK turning it back off!
* It is a niche feature that is more likely to be accidentally enabled by
users not completely familiar with its purpose than the chances of
playing a game that requires it.
24.11.22
========
+ Update ReShade Add-on API headers to include new events in the next release.
+ Reduce unnecessary WM_NCHITTEST messages sent to games when the cursor is not
even moving.
24.11.21
========
+ Enable Fake Fullscreen mode by default in STALKER 2, because it uses that
crap (in D3D12) for HDR... yay!
24.11.20
========
+ Fixed only a single monitor being listed in the Display menu.
+ Added measures to prevent various ATLUS ports from moving the game window
back to the primary monitor whenever HDR is enabled/disabled or resolution
changes (they handle WM_DISPLAYCHANGE and WM_MOVE weirdly).
24.11.19
========
+ Restored support for using D3D11 Render Mod Tools in games with multiple
deferred contexts to debug shaders when ReShade is active.
24.11.18
========
+ Disable SteamAPI file hash checks on Fallout 4
+ Handle window activation more explicitly in Metaphor Re:Fantazio so that
its Keyboard Hook does not capture input events when the window is not
focused.
24.11.16.3
==========
+ Fixed various problems indicated by static analysis...
24.11.16.2
==========
+ Fixed problems with SK not re-initializing D3D11 when the active SwapChain
is destroyed and re-created.
+ Fixed potential issues with loading ReShade as a plug-in and config files
not correctly being passed to create_effect_runtime (...).
24.11.16.1
==========
+ Implement Lossy scRGB->HDR10 Quantization the correct way :)
24.11.16
========
+ Added texture sampling fixes for Metaphor: ReFantazio so that it actually
can make use of anisotropic filtering, instead of setting MaxAnisotropy
and then using a texture filter that doesn't support anisotropic...
+ Revert a few ReShade integration changes (synchronous loading of PlugIn)
+ Added Lossy scRGB->HDR10 Quantization mode to reduce filesize on HDR PNG
screenshots.
24.11.16
========
+ Disable GOG Overlay in Unity Engine games with AMD GPUs, because the GOG
overlay will cause AMD's shitty interop to kick in when it sets up for
OpenGL (an API the game does not use, but AMD's driver starts interop)
24.11.15.3
==========
+ Fix various problems with games that use (Low Level) Keyboard hooks thinking
Alt/Tab are stuck.
+ Allow mouselook in games even if Mouse Input is set to Disable in Background
+ Added fixes for Metaphor: ReFantazio using wrong SRV formats for textures
24.11.15.2
==========
+ Use synchronous init when loading ReShade as a plug-in for maximum compat.
24.11.15.1
==========
+ Fixed ReShade (Add-on version) not being exempt from settings that block
mouse input to games.
+ Added HUD vtx shader hashes for Metaphor: ReFantazio for hudless screenshots
24.11.15
========
+ Add support for generating mipmaps for BC7 textures that are mip-incomplete,
they will be decompressed and then the mipmaps will be generated, and no
attempt to recompress them back to BC7 will be made because that's SLOW!
24.11.14.2
==========
+ Revert recent change to foreground window checks.
24.11.14.1
==========
+ When loading ReShade as a Plug-In, automatically load all AddOns in a Game
Profile's ReShade\AddOns\ directory and any in Global\ReShade\AddOns\.
24.11.14
========
+ Prevent loading/saving INI files in blacklisted processes, and do not create
logs if blacklisted.
+ Do not spawn an global injection unload listener in blacklisted processes.
+ Render the first 120 frames in DXGI-based games without fractional VSYNC if
a game tries to use it, so that SK can detect VRR support correctly.
24.11.13.2
==========
+ Fixed SK's UI not rendering correctly in D3D9Ex games beginning in 24.11.5.1
+ Handle EDID Display Names that do not adhere to specs and do not space-pad
names shorter than 13 bytes.
24.11.13.1
==========
+ Hide/disable "Overbright Tonemapping" when RenoDX ReShade AddOn is detected.
24.11.13
========
+ Replace attempts by games to set DLSS Presets A-D with E, when DLSS version
is >= 3.8.10.
* Needed for Nixxes games, since they explicitly request Preset C instead of
DLSS default.
24.11.11
========
+ Reinstate background render mode as default policy in Metaphor: ReFantazio.
+ Allow Steam Input to hook and override WinMM Joystick APIs by default;
Steam Input's hooks can be disabled if needed (perf overhead) by setting:
[Input.Gamepad]
AllowSteamWinMM=false
24.11.9
=======
+ Fixed INI parser not returning to the start of the INI to scan for macros
after looking for plug-ins to load.
(i.e. macros in SpecialK.ini or dxgi.ini being ignored)
24.11.5.1
=========
+ Detect local ReShade DLLs as ReShade, and allow pressing the default
ReShade UI toggle keybind to work even if SK is blocking keyboard input
to the game.
24.11.5
=======
+ Optimized keyboard handling in proxy Windows (Low-Level) Hook procedures
+ Ensure that all keyboard input a game sees through a keyboard hook while
the window is not actually active are key releases, so that upon upon
alt-tabbing back, they do not do that stupid thing they usually do
where they think a key is permanently stuck down.
24.11.4.5
=========
+ Removed the last remaining remnants of SK's original cursor anti-warp system.
24.11.4.4
=========
+ Disable periodic LatentSync resync when G-Sync is active
+ Remove warning about using LatentSync on VRR displays
24.11.4.3
=========
+ Xbox/PlayStation + Right/Left trigger will Minimize/Restore the game.
24.11.4.2
=========
+ The Xbox/PlayStation button on gamepads can now be used to activate a
chord input without that input counting for screensaver deactivation.
* In other words, you can use chorded feature like volume control while
a screensaver is active.
+ Make UI navigation moving the mouse cursor a persistent (global) config
option, and turn it off by default.
24.11.4.1
=========
+ Correctly restore hardware cursor image when closing the control panel and
cursor centering is turned off.
24.11.4
=======
+ Ensure confirmation dialogs cannot be dismissed using the overlay toggle
keyboard / gamepad bindings, and gamepad is always captured while they
are waiting for a user response.
+ Make cursor centering on SK's control panel into a configurable option.
* Refer to: Input Management > Mouse Cursor; this is a global preference.
24.11.3.3
=========
+ Hide mouse cursor when the game is using SetCursorPos (...) to implement
mouselook and cursor management is enabled.
+ Ensure that upon closing the keybind editor dialog, the keybind configured
does not immediately trigger.
24.11.3.2
=========
+ Change keyboard/mouse/gamepad blocking state so that it is evaluated
once per-frame frame and all other tests use the value set at the
beginning of a game's frame.
24.11.3.1
=========
+ Handle UnhookWindowsHookEx (...) correctly, by setting the HHOOK handle
during SetWindowsHookEx{A|W} (...).
24.11.3
=======
+ Disable mouse while SK's control panel is open in Dragon Age The Veilguard.
24.11.2.3
=========
+ Workaround CAPCOM DRM catching exceptions it should not be using a
Vectored Exception handler during CPU test for illegal instructions.
24.11.2.2
=========
+ Fixed missing DLSS and other API functionality caused by 24.10.31.4
24.11.2.1
=========
+ Remove all cursor anti-warp config settings and control panel items.
24.11.2
=======
+ Added INI setting to disable DirectStorage hooks.
[Render.DStorage]
EnableHooks={true|false} Default: true
+ Disable DirectStorage integration in Monster Hunter Wilds.
24.11.1.4
=========
+ Poll -ALL- mouse buttons while game window is inactive, not just the
left button...
24.11.1.3
=========
+ Activate the game's window if mouse buttons are held while alt-tabbing.
24.11.1.2
=========
+ Prevent accidental misclicks on settings in SK's control panel when
alt-tabbing from another application while mouse buttons are held down.
24.11.1.1
=========
+ Add 1 extra device context reference in Vulkan interop games to ensure
they do not trigger SK's cleanup code when changing to fullscreen.
24.11.1
=======
+ Re-enable D3D11 cleanup code so that the Steam overlay does not cause
D3D12 games to crash.
+ Disable D3D11 cleanup code only in Ys X so that it does not continue
running forever after it should have shutdown.
24.10.31.4
==========
+ Stop hooking OpenGL32.dll whenever gdi32.dll or gdi32full.dll are
loaded, but OpenGL32.dll isn't.
+ Ignore OpenGL32.dll if the Epic Overlay's DLL was loaded before
OpenGL32.dll was.
24.10.31.3
==========
+ Revert late stage re-initialization of D3D11, it was a bad idea.
24.10.31.2
==========
+ Add new fallback for WMAITX support testing on CPUs with CPUIDs that
claim the instruction is unsupported... just run the instruction and
see if it generates and Illegal Instruction exception or not, lol.
24.10.31.1
==========
+ Fixed changes to SK_WindowManager::StyleHasBorder (...) in 24.10.24.4
that were causing added window borders to Baldur's Gate 3 when set to
Borderless in-game.
+ Allow late stage re-initialization of D3D11 during SwapChain presentation,
rather than when a new SwapChain is created (Vulkan interop).
+ Disable Windows+Down/Up in Vulkan games.
24.10.31
========
+ Do not invoke SK_SetupDiGetClassDevsExW (...), from
SK_RBkEnd_UpdateMonitorName (...), because during late injection,
the SK_SetupDiGetClassDevsExW function pointer may not be setup yet.
+ Properly re-use NVIDIA Vulkan interop D3D11 device singleton, instead
of permanently losing overlay capabilities when games change resolution.
+ Increase thread priority on SteamAPI delayed it and DLL enumerator threads
+ Revert to 24.10.26 initialization order in core.cpp
24.10.30.2
==========
+ Allow Multitasking-on-Top to be used without Global Injection service,
but turn off certain functionality that cannot work reliably without.
+ Improved thread-safety of (LowLevel) Keyboard/Mouse Hook Proxy code.
+ Handle window position changes that occur without showing up a game's
window message queue.
+ Cleanup various RawInput handling code.
24.10.30.1
==========
+ Prevent PH3 games from causing Fullscreen mode changes through use of
ChangeDisplaySettings (...) API with unchanged parameters, even
when configured for "Borderless" or "Windowed" modes. (ugh!)
+ Change compiler optimization settings to try and resolve Steam Overlay
problems (again).
24.10.30
========
+ Improved/made obsolete mouse anti-warp for games that move their cursor
to the center of the screen to implement mouselook (stupid devs...).
+ Multitasking-on-Top mode now causes Special K's injection service to
continue running until the game exits, because otherwise the feature
is unusable and cannot track when focus changes to other apps.
24.10.29.4
==========
+ Add exception code for Non-SEH exceptions caught by the crash handler
24.10.29.3
==========
+ Remove QueryInterface call on D3D11 Device Context during texture upload,
it angers the D3D11 debug layer if this happens on multiple threads.
+ Remove old compatibility hack for ReShade that was changing Flip Model
SwapChains to Flip Sequential. ReShade works with Flip Discard now.