forked from SpecialKO/SpecialK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG.txt
11974 lines (9230 loc) · 436 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
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.
24.10.29.2
==========
+ Added option block screensaver activation on controller input (default)
+ Added option to have Special K disable all game handling of screensavers,
and fully manage it based on its own configurable rules.
>> Without this option, SK adds additional blocking rules, but respects
the game's own attempts to block screensaver activation.
* Many games unconditionally block screensaver, and you may not want
that behavior if you have alt-tab to work a different application
and then go AFK while the game continues running.
24.10.29.1
==========
+ Changed screensaver activation prevention to use the Windows-defined timeout
interval and factor in gamepad input, since Windows only uses KB&M.
+ Added a message when the system screensaver activates explaining how to
configure screensaver prevention.
+ Default screensaver policy has been changed to "Game Default".
+ Gamepad input will now deactivate screensavers.
24.10.29
========
+ Fixed crash.log being created in the game's working directory when local
injection is used together with the virtual SpecialK.central file.
+ Fixed multi-threaded race condition in BlacklistLibrary (...)'s init. and
SK_EstablishRootPath (...).
24.10.28.4
==========
+ Remove unintended cursor deactivation introduced in 24.10.28.3
24.10.28.3
==========
+ Disable SK's Hardware Cursor when game cursor auto-hide is enabled, so that
mouse warping done by game mouselook does not cause the cursor to become
visible.
+ Block mouse input while the control panel is open in Metaphor, otherwise
the camera will just spin endlessly if the cursor moves out of it.
24.10.28.2
==========
+ Always use the fully qualified path when looking up NVIDIA driver profiles
for the current game in order to avoid creating duplicates.
+ Fix bug in Ys X where it may attempt to create 0x0 textures when its window
is minimized and then crash.
+ Query D3D11 device context type when wrapping it, and then use that rather
than calling ID3D11DeviceContext::GetType(...) because the D3D debug layer
will abort if GetType is called from multiple threads.
24.10.28.1
==========
+ Add explicit overrides for many of the most important SDL input settings
( -1 = No Override, 0 = Off, 1 = On )
* Refer to SDL_hints.h for details on each,
"FullPlayStationBluetoothSupport" is a combination of
SDL_JOYSTICK_HIDAPI_PS4_RUMBLE and SDL_JOYSTICK_HIDAPI_PS5_RUMBLE...
This setting is controversial, it will allow rumble and haptics over
Bluetooth, but will cause your gamepad to become incompatible with
games that use DirectInput until powered off and back on...
^ If that sounds familiar, it is the entire reason ValvePlug was created.
*** Unlike the Steam Client, SDL never enables those things without consent,
and that means rumble may be missing from many games that use SDL.
24.10.28
========
+ Allow SDL to use DirectInput gamepads at sanity level 1
+ Improve Vulkan/DXGI Layer detection for NVIDIA drivers to handle cases
where vulkan-1.dll is calling DXGI directly instead of nvoglv{32|64}.
+ Turn Multitasking-on-Top off by default again, because at levels aggressive
enough to work, some windows will not be raised above the game.
24.10.27.4
==========
+ Add cached memory addresses for framerate unlock for Elden Ring 2.6.0.0.
+ Make sure SK always calls the real ShowWindow (...) instead of its hook.
+ Handle undocumented special cases SWP_NOCLIENTMOVE and SWP_NOCLIENTSIZE,
to fix problems with Sonic Generations (presumably a Windows AppCompat
hack that ships with Windows).
24.10.27.3
==========
+ Added support for minimizing/restoring borderless games by pressing the
normal Windows keybinds to do so (Win+Down / Win+Up).
24.10.27.2
==========
+ Avoid unnecessary window position and border style API calls when no actual
change is required.
+ Allow WS_ICONIC window style to be set if borderless override is not on.
+ Add WS_EX_WINDOWEDGE to list of extended window styles that have borders.
24.10.27.1
==========
+ Fixed rare deadlock when an application deletes the D3D11 Immediate Device
Context for a device during shutdown.
+ Fixed ReShade Plug-In selection UI not correctly turning Compatibility Mode
off (necessary for some ReShade Add-Ons to work).
24.10.27
========
+ HDR Remastered tooltip now ONLY counts memory for remastered RenderTargets
and Unordered Access Views that are -still- in memory, and values decrease
as a game unloads remastered resources.
* It now accurately measures extra VRAM used by having remasters enabled.
+ Remastered D3D11 RenderTargets and Unordered Access Views now have names
describing the type of resource, a unique ID and the original Surface
format before SK upgraded it to R16[G16[B16A16]]_{FLOAT|UNORM}.
* Names appear in debug logs and the Render Mod Tools (Live RenderTargets).
24.10.26.2
==========
+ Fixed SKIF not being able to disable GFE notifications due to disabled code
+ Increase delay between first drawing an achievement unlock popup and taking
screenshot, so that statistics such as unlock time reliably appear.
24.10.26.1
==========
+ Optimize SK_D3D11_SetShader_Impl (...)/SK_D3D11_EnsureMatchingDevices (...)
to use D3D11 Private Data lookups.
24.10.26
========
+ Add Alt+F4 handler override to workaround Ys X's buggy Alt+F4 code that
tends to close the game window, but leave the game running.
24.10.25.2
==========
+ Fixed missing mouse input in Forza Horizon 5.
24.10.25.1
==========
+ Change compiler settings to generate code more compatible with the Steam
overlay on some systems.
24.10.25
========
+ Add checks to prevent confusing SKIF and SKIV when SK needs to send
signals to SKIF during injection.
+ Prevent turning off "Background Render" mode while Fake Fullscreen is
enabled.
24.10.24.7
==========
+ Improve SDL detection for games (i.e. Ys X) that use SDL, but have
overridden the default window class name.
+ Add various default behavior overrides for SDL games to avoid double
input polling and buggy window management without recompiling SDL.
* An INI parameter has been added to control this,
[Compatibility.General]
SDLSanityLevel={0,1,2} Default=1
0=Do Nothing
1=Set SK Optimized Values if no SDL environment variables are set
2=Force SK Optimized Values
24.10.24.6
==========
+ Disable ImGui's g.ClipboardHandlerData temporary storage when pasting
into a text control and use Special K's Thread-Local Stack Allocator
instead to fix instability in ImGui's clipboard handler.
24.10.24.5
==========
+ Improved mouse input in applications that use multiple windows,
such as emulators.
+ Allow mouse clicks that activate the game window from background
state to also activate parts of Special K's control panel.
24.10.24.4
==========
+ Enable Multitasking-on-Top mode by default
+ Make gamepad input activity hide the cursor as default policy
when enabling cursor auto-hide
+ Consider window extended style WS_EX_CLIENTEDGE as bordered
+ Consider window style WS_CAPTION and WS_SYSMENU as bordered
24.10.24.3
==========
+ Fix endless game restart cycle in DOOM Eternal when Vulkan Bridge needs to
be enabled.
+ No longer disable Valve's Vulkan "Fossilize" (shader caching) layer when
Vulkan Bridge is enabled.
+ Improved AMD and NVIDIA Vulkan/DXGI Interop detection.
+ Fixed swapped definitions for NVIDIA driver settings API enum values:
OGL_DX_LAYERED_PRESENT_AUTO and OGL_DX_LAYERED_PRESENT_NATIVE
24.10.24.2
==========
+ Fix changes to mipmap level selection in D3D11 that may cause glitches during
certain lighting and shadowing render passes.
24.10.24.1
==========
+ Disable Metaphor ReFantazio thread scheduling fix by default on Intel CPUs
because they lack the necessary MWAITX instruction to make this beneficial.
24.10.24
========
+ Fix NVIDIA's Vulkan interop not being detected on SDR systems in newest driver
releases.
+ Add support for 8-bpc Render/Compute HDR remastering in Shadow Generations.
+ Add D3D11/DXGI Debug Layer minimum severity level to message logging UI.
+ Add anti-cheat workaround for Genshin Impact.
24.10.23.2
==========
+ Disable D3D11 texture cache in Sonic X Shadow Generations because it may
exacerbate VRAM leaks during FMV playback (same as previous Sonic titles).
24.10.23.1
==========
+ Add additional protection from Sonic X Shadow Generations causing premature
injection service shutdown before Sonic Generations can launch.
24.10.23
========
+ Ensure that WS_SYSMENU style is never added to borderless windows, it is
technically invalid without WS_CAPTION.
+ Fixed D3D11 Unordered Access Views with format R32_UINT not being considered
castable from R8G8B8A8_TYPELESS.
+ Make sure that Sonic X Shadow Generations does not stop the injection service
until either it exits, or it launches the original Sonic Generations.
24.10.22.1
==========
+ Update SK's HDR enabled detection code to account for WCG SDR displays, as
Windows 11 24H2 finally makes public the API to distinguish WCG from HDR.
+ Switch to statically linking MSVCRT so that compiler version issues do not
pop up in the future.
24.10.22 (HOTFIX)
=================
+ Downgrade compiler version used so that games that ship with an outdated
version of msvcp140.dll in their game directory cannot break SK.
24.10.21.2
==========
+ Changed default HDR Perceptual Boost Color from 50% to 33% because gamma no
longer desaturates the image.
24.10.21.1
==========
+ Added Metaphor ReFantazio thread scheduling fix to SK's control panel so it
can be enabled/disabled in real-time for testing (always enable it...).
24.10.21
========
+ Fix double keyboard input procesing in Ys X and potentially other games that
use SDL2 Raw Input.
24.10.20
========
+ Add workaround for D3D12 HDR screenshots using 64 KiB memory alignment and
sometimes producing black images.
24.10.19.2
==========
+ Removed hook on msvcp140.dll!_Thrd_sleep(...) first introduced for Metaphor,
because it causes problems with many of ph3's Legend of Heroes ports.
+ Removed internal injection blacklist on ApplicationFrameHost.exe.
24.10.19.1
==========
+ Merge pull request #217 from audaki:fix-gamma-boost-color-changes
* Added hue-preserving SDR Gamma Boost to HDR tonemapping.
+ Enable D3D11 Deferred Context Isolation in Metaphor ReFantazio for texture
caching to track redundant UI resource uploads.
24.10.19
========
+ Auto-load MetaphorFix.asi if placed in Metaphor ReFantazio's install dir.
+ Added sanity check to prevent partially (?) implemented Core Audio APIs
in Wine from leaking memory when enumerating Windows Audio Sessions.
* Said leak prevents Special K from working in recent releases of Proton.
24.10.18.1
==========
+ Re-enable Metaphor ReFantazio thread scheduling performance fixes by default
+ Enable DirectInput performance fixes for Metaphor
+ Turn on 6x AF by default in Metaphor (force to 16x if you have GPU to spare)
* Reset INI file for Metaphor to take advantage of this stuff...
24.10.18
========
+ Added LOD Bias and Anisotropic Filtering overrides for D3D11 games
>> The INI setting re-uses the D3D12 names, this whole thing will
have its INI names changed in the future.
* Use the in-game control panel to adjust Texture Filtering in
D3D11/12 in the meantime to avoid confusion.
Real-time adjustment for Anisotropic level and LOD Bias is planned
for D3D11, but not yet implemented (game restart = required).
24.10.5
=======
+ Disabled thread scheduling fix by default in Metaphor;
it can be re-enabled by setting AllowDxDiagn=true
+ Turn Flip Model off in Final Fantasy XV for non-HDR users.
24.9.28.4
=========
+ Fixed macros and keybinds occasionally activating while a game window
does not have input focus if the game uses a (Low-Level) Keyboard Hook.
+ Command console blocks keybinds while it has text input focus, as expected
+ Auto-start PresentMon worker thread if AutoVRR is set to re-optimize and
has triggered once, or set to enabled and has not yet triggered.
* This allows SK to auto-optimize the framerate limiter without the users
having to first open the control panel or display the current FPS.
24.9.28.3
=========
+ Added option to disable Metaphor plug-in for testing
AllowDxDiagn={true|false} Default=true (enabled)
+ Reworked DXGI factory initialization when async init is disabled.
+ Disabled window style hooks (GetWindowLong[Ptr]{A|W})
24.9.28.2
=========
+ Automatically set Linear EOTF when enabling HDR in Blt Model sRGB games
+ Add framerate smoothing mechanism to Metaphor scheduling fix
24.9.28.1
=========
+ Add hook on SetProcessAffinityMask (...) to ensure games do not override
any user-requested overrides.
24.9.28
=======
+ Overhauled input management for keybinds to better handle games with
child/sibling windows (such as Metaphor's stupid exit confirmation)
+ Add hook on msvcp140.dll!_Thrd_sleep (...) because it may call directly
into kernelbase.dll!SleepEx (...) instead of kernel32.dll.
+ Re-enable HID in Metaphor because it is required on SteamOS for gamepads.
24.9.27.1
=========
+ Further optimize Metaphor; no more periodic stutter.
+ Set PerformanceCoresOnly=false by default for all games except Metaphor.
24.9.27
=======
+ Use 10-bpc for sRGB bypass when upgrading games to Flip Model in SDR mode.
+ Add Alt+F4 bypass for Metaphor
(Uncheck "Enable Alt+F4" to remove SK's confirmation dialog)
+ Disable Fullscreen Exclusive in Metaphor
+ Disable XInput slots 1,2,3 in Metaphor
+ Enable XInput emulation by default in Metaphor
+ Add thread scheduling fixes for Metaphor
* For proper performance, make sure to set the game's framerate limiter to
"Uncapped" and enable Special K's.
+ Added INI option to run games on Intel Performance Cores only
[Scheduler.System]
PerformanceCoresOnly={true|false} Default=true
This will limit the entire game to running only on P-cores, it is enabled
by default and applies on top of any affinity mask overrides you set, or
affinity mask overrides set by external applications.
24.9.25.7
=========
+ Fixed forced 10-bpc being applied to AMD's Vulkan interop; it is a compat.
hack for NVIDIA's interop-only and does not work on AMD's driver.
+ Do not list XInput slot# for UI controller in the Input Management section
of the control panel when only a PlayStation controller is attached.
+ Revert back to asynchronous initialization by default for Streamline games,
unless the new AllowFakeStreamline setting is set to false.
+ Force AllowFakeStreamline OFF in Ratchet & Clank
+ Added crash_handler.exe to internal injection blacklist
+ Added up to 100 ms spin if D3D11 hooks initialize before DXGI capabilities
have been determined (i.e. flip model); if initialization times out, we
will assume that Flip Model and Tearing are both supported.
24.9.25.6
=========
+ Added option to disable strict Streamline compatibility, because it
is not compatible with various DLSS3->FSR3 mods that do not implement
all of Streamline.
[Compatibility.General]
AllowFakeStreamline={true|false} Default=true
This may hurt stability in games that use real Streamline, but it is
unlikely the myriad of mods pretending to be Streamline will be made
more compatible any time soon.
24.9.25.5
=========
+ Added LOD Bias and Anisotropic Filtering options to the D3D12 control panel
24.9.25.4
=========
+ Added INI option to force a Mipmap LOD bias in D3D12 games
[Render.D3D12]
ForceLODBias=[-32.0,32.0] Default=0.0 (Unchanged)
>> An LOD Bias of 0.0 is technically valid, but using this INI, it cannot
be set... consider using -0.000001 if you want to force all LOD Bias
in a game to 0.0 for some reason.
* Be very conservative with this setting unless you are deliberately
trying to radically alter the image (lol)
(i.e. single color flat texturing if a very large positive bias is used)
- Negative biases increase sharpening and shimmering in texture filtering,
the most likely use-case for a user to override them would be applying
a small negative LOD bias to sharpen textures when using DLSS/FSR.
24.9.25.3
=========
+ Check D3D12_FEATURE_DATA_D3D12_OPTIONS19::AnisoFilterWithPointMipSupported
at runtime before attempting to upgrade bilinear texture filters to
anisotropic min/mag + point mip filter.
>> This requires newer drivers and is a Vulkan interop-centric feature;
if not supported by the driver, bilinear will be upgraded to trilinear
when forcing anisotropic filtering on.
24.9.25.2
=========
+ Add workaround for implicit AMD OpenGL/DXGI Interop so that OpenGL-IK
will always work without interference from AMD's D3D12 SwapChain.
24.9.25.1
=========
+ Added warning dialog with info on SKinny (a new support DLL for SK) when
attempting to use Global Injection in certain Streamline games.
* Currently, Horizon: Forbidden West and Forza Horizon 5
24.9.25
=======
+ Remove part of SK's libScePad integration now that SK can poll PlayStation
controllers directly using their USB HID communication protocol.
>> This fixes weird gamepad behavior in SK's control panel from polling
PlayStation controllers twice in games that use libScePad.
24.9.24.3
=========
+ Fixed God of War: Ragnarok's fullscreen mode without having to force
borderless on by default.
+ Fixed potential problem with Special K's global injection DLLs becoming
stuck in "immersive" process (UWP) due to terminating the teardown listener
thread early.
24.9.24.2
=========
+ Force AlwaysOnTop off in God of War: Ragnarok to prevent crashes
+ Remove option to disable redirection bitmaps on Flip Model SwapChains
because this is not compatible with DXVK
24.9.24.1
=========
+ Fixed God of War: Ragnarok SwapChain re-creation failing due to incompatible
window styles
+ Forced Borderless on by default in God of War: Ragnarok
+ Added additional validation to prevent executing D3D12 command lists on the
wrong command queue when FSR3 and Streamline are used in a game
24.9.24
=======
+ Added options to force anisotropic level and upgrade standard bilinear or