Commit Graph

249 Commits

Author SHA1 Message Date
Samuel Pitoiset f6a79c366a [util] Set enableRtOutputNaNFixup for Super Monkey and Yooka-Laylee
Both games output NaNs that introduce glitches with RADV and
AMDVLK.
2020-03-22 15:38:24 +01:00
Philip Rebohle 3104192af7
[d3d11] Fix winelib build
Closes #1521.
2020-03-20 17:01:46 +01:00
Philip Rebohle 76fd9013d4
[util] Add missing include 2020-03-19 23:22:13 +01:00
Florian Will ba41a5219a [util] Disable explicit frontbuffer for ZUSI 3
Fixes flickering when parts of the screen are not redrawn in a frame.

Closes #1368
Merges #1437
2020-03-18 19:32:45 +00:00
Philip Rebohle 26798eb312 [util] Use SwitchToThread for yield
According to MSDN, this doesn't interfere with scheduling of other threads,
unlike Sleep(0).
2020-03-15 03:43:04 +01:00
Philip Rebohle da506f5932 [util] Add generic recursive spinlock 2020-03-15 03:43:04 +01:00
Philip Rebohle 55e3240479 [util] Add generic spin function 2020-03-15 03:43:04 +01:00
Philip Rebohle 3a1243b05e [util] Don't set display mode if the desired mode is already set
See #1489.

Co-authored-by: zvova7890 <zvova7890@gmail.com>
2020-03-04 23:06:15 +00:00
Philip Rebohle 4e16d65bb8 [util] Introduce common functions to set, get and restore display modes 2020-03-04 23:06:15 +00:00
Philip Rebohle 66503aeaa0 [util] Factor out common monitor-related functions 2020-03-04 23:06:15 +00:00
Joshua Ashton 74d23c22de [build] Use __CRT_UUID_DECL for uuid definitions
Closes #1463
2020-02-18 20:25:05 +01:00
Joshua Ashton 760a163fc5 [util] Disable discard for D&D Temple of Elemental Evil
This game uses D3DLOCK_DISCARD incorrectly
2020-02-18 17:01:41 +00:00
ryester27 dff2a4ea24 [util] Force 16:9 aspect ratio for Hyperdimension Neptunia U: Action Unleashed 2020-02-14 02:50:15 +00:00
Joshua Ashton 0ea510eb9b [util] Add clearAll helper to bitset 2020-02-14 00:51:58 +00:00
Joshua Ashton 960d2bd158 [util] Add exchange helper to bitset 2020-02-14 00:51:58 +00:00
Philip Rebohle 07fee4a0e5
[util] Disable VR for Subnautica 2020-02-09 09:05:52 +01:00
Philip Rebohle 4738d12d73
[util] Enable forced TGSM barriers for F1 2019
Fixes visual issues on RADV.
2020-02-08 00:48:45 +01:00
Philip Rebohle c780ed5da3
[util] Enable invariant position for Saint's Row III / IV 2020-02-07 17:40:55 +01:00
Philip Rebohle 8020803340
[util] Disable OpenVR for Raft 2020-02-06 20:48:21 +01:00
František Zatloukal 976d3b5ee4 [util] Include ostream in util_rc_ptr.h 2020-01-31 15:17:18 +01:00
Philip Rebohle 3ab675c233 Revert "[util] Disable float emulation for Hat in Time"
Turns out this breaks some levels (e.g. Chapter 1 Act 3).
Performance impact seems minimal on RADV+ACO.

This reverts commit 6f93d3bf22.
2020-01-28 17:46:33 +00:00
Philip Rebohle be16da37d7 [d3d11] Introduce COM interface to set and get API version
Allows us to identify DirectX 10 applications correctly.
2020-01-28 16:32:58 +00:00
Joshua Ashton 6f93d3bf22 [util] Disable float emulation for Hat in Time
Squeezes out some extra performance in this title
2020-01-27 14:21:21 +01:00
Philip Rebohle c77a9e3bfe
[util] Unify Risen 1/2/3 app profiles 2020-01-25 12:10:05 +01:00
Philip Rebohle fdb2b972e9
[util] Add more exe names to Gothic 3 app profile
Fixes #1372.
2020-01-25 12:10:05 +01:00
Joshua Ashton 2004fba22c [util] Disable d3d9.allowDoNotWait for RTHDRIBL
This app goes into an infinite loop if it gets D3DERR_WASSTILLDRAWING and the perf penalty of blocking on GetRenderTargetData in other apps is too high!
2020-01-24 15:54:15 +00:00
Philip Rebohle 7469f5d4a0
[util] Disable supportDFFormats for Gothic 3
See #1367.
2020-01-24 14:21:28 +01:00
Joshua Ashton 9919ffe5ca [util] Add simple [] operator to our bitset 2020-01-23 02:05:09 +00:00
Philip Rebohle 21330497e0
[util] Add app profile for Entropia Universe
Fixes #1364 (again).
2020-01-23 01:31:57 +01:00
Joshua Ashton 7de15fe837 [util] Spoof AMD for Skyrim (nvapi) 2020-01-22 16:20:42 +00:00
Philip Rebohle eed57ed6c4
[util] Enable d3d9.deferSurfaceCreation for a ton of weeb games 2020-01-17 18:29:15 +01:00
Philip Rebohle e4215252df [util] Add small_vector helper
A vector with a small fixed-size array, which changes to a dynamic
array as needed. Can be used to avoid memory allocations in some
scenarios.
2020-01-16 18:50:23 +01:00
Philip Rebohle 8b9c03ce76
[util] Improve Spinlock implementation
Addresses two potential issues:
- Our spinlocks are almost never contested, however the code generated
  is not ideal without the likely/unlikely hints.
- In the unlike event that a spinlock is in fact contested, we'd yield
  immediately, even though most of the time we'd only have to wait for
  a few hundred cycles at most.

Replacing our spinlocks with std::mutex is not an option due to much
higher locking overhead in the uncontested case; doing so reduces
performance significantly for the buffer slice and pipeline locks.
2020-01-07 17:28:33 +01:00
Joshua Ashton 0343938c2e [util] Enable d3d9.forceSamplerTypeSpecConstants for Halo [CE]
The game uses incorrect sampler types in the shaders for glass rendering which breaks it on native + us if we don't spec-constantly chose the sampler type automagically.
2020-01-01 20:58:42 +00:00
Philip Rebohle 694d6c7f77 [util] Improve ticket lock implementation
Atomic fetch-and-add on unlock is not needed since no other thread can
modify the serving counter after the calling thread acquired the lock.
May slightly improve performance in games relying on ID3D10Multithread.
2020-01-01 13:59:46 +01:00
Joshua Ashton fae99907da [util] Add get to bitset 2019-12-18 23:18:01 +00:00
Alessandro Toia 3c8fdc2863 Report gpu vendor as Nvidia for Star Wars Battlefront II 2019-12-18 17:38:24 +01:00
Joshua Ashton b99b1d153a [util] Add bitset helper 2019-12-18 14:48:01 +01:00
Joshua Ashton e527b963c4 [util] Handle undefined ratios in simplest ratio helper
Fixes division by zero error

Closes #1280
2019-12-17 03:16:56 +00:00
Philip Rebohle 9be0bf95ca
[util] Defer D3D9 surface creation for Atelier Ryza 2019-12-16 14:41:29 +01:00
Joshua Ashton 54ed8f0bb0 [d3d9] Implement Direct3D9 Frontend (#1275)
Co-authored-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Co-authored-by: Robin Kertels <robin.kertels@gmail.com>
Co-authored-by: pchome <pchome@users.noreply.github.com>
Co-authored-by: Christopher Egert <cme3000@gmail.com>
Co-authored-by: Derek Lesho <dereklesho52@Gmail.com>
Co-authored-by: Luis Cáceres <lacaceres97@gmail.com>
Co-authored-by: Nelson Chen <crazysim@gmail.com>
Co-authored-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
Co-authored-by: Riesi <riesi@opentrash.com>
Co-authored-by: gbMichelle <gbmichelle.dev@gmail.com>
2019-12-16 04:28:01 +01:00
Philip Rebohle 4fcf28f4dc
[util] Spoof Nvidia cards for Crysis 3
The game for some reason runs significantly slower in CPU-bound scenarios
when it recognizes an AMD GPU. On the other hand, there seems to be a small
performance hit on an actual Nvidia GPU (GTX 670) in GPU-bound scenarios when
doing this, but on most setups the tradeoff should be worth it.
2019-12-11 23:01:27 +01:00
Joshua Ashton 3fa8691033 [util] Implement simplest ratio helper 2019-12-11 03:18:39 +01:00
Joshua Ashton 16dd1249b7 [util] Add alignDown helper 2019-12-11 03:18:39 +01:00
Joshua Ashton 57b2c02528 [util] Implement lzcnt 2019-12-11 03:18:39 +01:00
Joshua Ashton aef12f7ee3 [util] Add countof helper 2019-12-11 03:18:39 +01:00
Joshua Ashton d4cad9055c [util] Implement a clamped version of ComObject, for D3D9
Satisfies a quirk in D3D9, solving an issue in SWTFU.
2019-12-11 03:18:39 +01:00
Joshua Ashton 511ed27733 [util] Add GetPrivateRefCount helper 2019-12-11 03:18:39 +01:00
Joshua Ashton 9280818a57 [util] Implement fclamp for fp special cases 2019-12-11 03:18:39 +01:00
Joshua Ashton ec197b49f9 [util] Implement some basic vector and matrix math utils 2019-12-11 03:18:39 +01:00