1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-13 07:08:50 +01:00
Commit Graph

924 Commits

Author SHA1 Message Date
Joshua Ashton
46329689ba [d3d9] Handle WM_DESTROY event 2020-04-06 20:16:17 +01:00
Joshua Ashton
18b46e5c22 [d3d9] Move HookWindowProc out of swapchain class 2020-04-06 20:15:49 +01:00
Joshua Ashton
a340cd4dd3 [d3d9] Add CallCharsetFunction helper 2020-04-06 20:06:45 +01:00
Joshua Ashton
6cf052b3f2 [d3d9] Cleanup ResetWindowProc 2020-04-06 19:45:15 +01:00
Joshua Ashton
135d246610 [d3d9] Cleanup and formatting for window proc hook 2020-04-06 19:42:48 +01:00
Joshua Ashton
47ddd8466a [d3d9] Re-look up wnd proc iterator
Avoids a potential issue where this could change address during this time.
2020-04-06 19:40:25 +01:00
Joshua Ashton
a80eea926a [d3d9] Filter out window messages we cause
Closes #1517
2020-04-06 19:38:26 +01:00
Joshua Ashton
83e03ac9d8 [d3d9] Make COPM render state unlikely
This is only ever called once per game and we don't support it anyway
2020-04-05 06:27:14 +01:00
Joshua Ashton
92031a7bac [d3d9] Fix dumb typo in ATOC handling 2020-04-03 21:13:15 +01:00
Joshua Ashton
457c0c3021 [d3d9] Fix state sometimes not being set in SetRenderState
Previously this prevented us disabling AlphaToCoverage once the application enabled it.
2020-04-03 07:52:35 +01:00
Joshua Ashton
904d3e6c90 [d3d9] Don't declspec dllexport on MinGW builds
Fixes ordinal exporting on MinGW, which was causing a crash in CSGO due to it querying a fixed ordinal for a D3D9On12 hack.
2020-04-02 02:00:42 +01:00
Joshua Ashton
bb2e88ee06 [d3d9] Fix crash when calling ColorFill with NULL format
Impacts #1528
2020-03-25 07:23:17 +00:00
Joshua Ashton
5ff7cad77d [d3d9] Fix formatting in D3D9WindowProc 2020-03-25 07:14:35 +00:00
Joshua Ashton
a9339ae832 [d3d9] Fix depth hazard case for write + read
Closes #1519
2020-03-20 14:23:29 +01:00
Philip Rebohle
1150121606 [d3d9] Fix depth-stencil layouts
Otherwise we're always using GENERAL for depth buffers.
2020-03-20 04:04:53 +00:00
Joshua Ashton
021c593ad8 [d3d9] Use all heaps when determining initial texture memory
Matches behaviour on Windows 10

Merges #1436
2020-03-18 19:40:01 +00:00
Florian Will
1a4b15a82d [d3d9] Add option to disable the explicit frontbuffer
The Vulkan swapchain is unaffected by this, but we don't create an
"internal" frontbuffer in D3D9SwapChainEx if this option is set. This
breaks GetFrontBufferData (which returns backbuffer data if the option
is enabled), but it disables front/backbuffer flipping.

Most windows drivers apparently always use the same backbuffer for all
frames in windowed mode. At least one game (ZUSI 3) seems to rely on
this behavior, and only redraws dirty regions for each frame instead of
redrawing everything. With buffer flips, this leads to flickering. When
enabling this new noExplicitFrontBuffer option, the flickering
disappears.
2020-03-18 19:31:00 +00:00
Joshua Ashton
6a8933cf31 [d3d9] Allow arbitrary backbuffer/adapter formats
It seems these aren't linked in the way the docs made out, this fixes a crash when starting some titles.

Closes #1508
2020-03-18 06:00:28 +00:00
Joshua Ashton
a9040c5cce [d3d9] Allow multisampled depth stencil resolves in StretchRect
Fixes a crash in some Source 2 titles
2020-03-18 04:59:27 +00:00
Philip Rebohle
ba213c1fa0 [dxvk] Factor out waiting for resource to become idle
And use the new generic spin function to reduce syscall spam.
2020-03-15 03:43:04 +01:00
Philip Rebohle
da506f5932 [util] Add generic recursive spinlock 2020-03-15 03:43:04 +01:00
Rémi Bernon
14946c599f [d3d9] Hook WM_NCCALCSIZE to get rid of fullscreen non-client areas. 2020-03-11 17:46:08 +00:00
Joshua Ashton
64e649ae18 [d3d9] Don't check IsNull for depth stencil views
We don't need to do this. Depth stencils can never be D3DFMT_NULL.
2020-03-09 01:13:54 +00:00
Joshua Ashton
e33627cfdc [d3d9] Optimize unnecessary loops in hazard tracking
We only want to update specific indices of bitfields at a time, so pass through that information and mask it off.
2020-03-09 01:03:18 +00:00
Joshua Ashton
812a113a85 [d3d9] Avoid multiple tzcnts per loop in hazard tracking 2020-03-09 00:53:50 +00:00
Joshua Ashton
f6b26b302d [d3d9] Handle depth stencil hazards
Track depth stencil textures being used and whether we have any active hazards.

Rebind the framebuffer with VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL if we encounter a depth stencil hazard.

Fixes black squares in Mass Effect and validation errors in some titles.

Closes #1484
2020-03-09 00:53:19 +00:00
Joshua Ashton
102d97db02 [d3d9] Add IsDepthStencil helper to D3D9CommonTexture 2020-03-09 00:24:56 +00:00
Joshua Ashton
a432befa8d [d3d9] Add RT suffix to current hazard tracking
We can have DS hazards...
2020-03-09 00:23:22 +00:00
Joshua Ashton
eaa599bf9a [d3d9] Implement A2W10V10U10 format via conversion 2020-03-08 23:32:33 +00:00
Joshua Ashton
60ec7e8208 [d3d9] Implement X8L8V8U8 format via conversion 2020-03-08 23:22:52 +00:00
Joshua Ashton
afd4e6e457 [d3d9] Use a common header for cs conversion helpers 2020-03-08 22:29:41 +00:00
Joshua Ashton
45c8b09104 [d3d9] Don't update present region in Reset
Fixes a regression in A Hat in Time when changing resolutions
2020-03-06 18:23:08 +00:00
Philip Rebohle
245007daba [d3d9] Don't use m_monitor in GetDisplayModeEx
Should fix #1495.
2020-03-05 15:25:05 +00:00
Philip Rebohle
5e41e00456 [d3d9] Use new common monitor functions 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
8c68cf1551 [d3d9] Fix alignment of SubresourceData
This should match SubresourceType...
2020-03-02 16:11:07 +00:00
Joshua Ashton
27d7af65a1 [d3d9] Consolidate format helper code 2020-03-02 04:37:20 +00:00
Joshua Ashton
1b26fabc6e [d3d9] Use uniform texel buffers for conversion 2020-03-02 04:37:20 +00:00
Joshua Ashton
077f48b4ef [d3d9] Flush format converter in device after init
Otherwise we can be overwritten if its a new resource we just created by the initializer.
2020-03-02 04:37:20 +00:00
Joshua Ashton
58316ebe4c [d3d9] Add missing breaks to format helper switch 2020-03-02 04:37:20 +00:00
Joshua Ashton
7743276e1d [d3d9] Implement L6V5U5 format via conversion 2020-03-02 04:37:20 +00:00
Joshua Ashton
b67f4974be [d3d9] Fix view formats for conversion formats 2020-03-02 04:03:27 +00:00
Joshua Ashton
36d3e8e83d [d3d9] Don't InitReturnPtr in CreateQuery
Matches native behaviour

Fixes a Wine test
2020-02-28 21:51:34 +00:00
Joshua Ashton
5548493fad [d3d9] Don't update device state for offset/stride if the buffer is nullptr
May also avoid some redundant rebinds here too...

Fixes a Wine test
2020-02-28 21:40:19 +00:00
Joshua Ashton
722520a9f7 [d3d9] Don't rebind user's vertex buffer/indices in DrawPrimitive[Indexed]UP
D3D9 doesn't do this, it instead sets them to NULL so we can simplify this logic a fair bit.

Found via a Wine test.
2020-02-28 21:37:00 +00:00
Joshua Ashton
3587bcdb9f [d3d9] Disallow creating additional swapchains if we are fullscreen
From Wine tests...
2020-02-28 01:43:07 +00:00
Joshua Ashton
632812b88f [d3d9] Disallow additional fullscreen swapchains
From Wine tests...
2020-02-28 01:39:52 +00:00
Joshua Ashton
0757097fa0 [d3d9] Initialize return ptr in device's GetBackBuffer
The swapchain's function does not do this, but this one does.
2020-02-28 01:37:23 +00:00
Joshua Ashton
528cacca5f [d3d9] Only have a single implicit swapchain
I am naive to think that this API is in any way sane, and that iSwapChains actually does what you would expect.

Swapchains created by CreateAdditionalSwapchain[Ex] are not tracked in that figure... There can only ever be one.

Great API. Very cool.

This also adds and consolidates some missing thread synchronization on the swapchain functions (that should have already had it).

(note: m_implicitSwapchain always exists, so we don't need to lock if that's all we call.)
2020-02-28 01:29:38 +00:00
Joshua Ashton
e41640dcde [d3d9] Make nullptr/oob checks in GetBackBuffer unlikely 2020-02-28 01:03:34 +00:00
Joshua Ashton
8cfca32c2a [d3d9] Don't InitReturnPtr in GetBackBuffer
Matches native behaviour.

Found via a Wine test.
2020-02-28 01:02:56 +00:00
Joshua Ashton
c07f8c941c [d3d9] Delegate VCACHE check to QuerySupported
Fixes a failing Wine test
2020-02-28 00:59:44 +00:00
Joshua Ashton
3332bb2844 [d3d9] Add some missing synchronization when completely remaking a presenter 2020-02-27 22:55:20 +00:00
Joshua Ashton
33f6add0ff [d3d9] Fix sampler decision at Present time 2020-02-27 22:54:43 +00:00
Joshua Ashton
b6e1da916a [d3d9] Fix scissor rect size when presenting 2020-02-27 22:53:14 +00:00
Joshua Ashton
1592e2770b [d3d9] Remove unnecessary dirty checks in Reset 2020-02-26 22:34:17 +00:00
Joshua Ashton
fbf76e8420 [d3d9] Don't mark unuploaded textures as uploaded 2020-02-25 04:37:01 +00:00
Joshua Ashton
d1dc217d31 [d3d9] Fix readback for evictManagedOnUnlock 2020-02-23 16:59:33 +00:00
Joshua Ashton
0e353895fd [d3d9] Enumerate adapters by display
WPF expects us to return an adapter for every display attached otherwise
it decides to device reset every frame.

Closes #1459
2020-02-21 18:03:57 +00:00
Joshua Ashton
f095f6385e [d3d9] Initialize all backbuffers in swapchain creation
Otherwise they are garbage and undefined layout.

Fixes some validation errors in Lumino City #1462
2020-02-21 06:45:02 +00:00
Joshua Ashton
38838f7428 [d3d9] Synchronize present and wait for idle when invalidating a swapchain
Lumino City calls CreateAdditionalSwapchain instead of the regular device reset functions.

We were missing some needed synchronization here to make this work properly for this game.

Impacts #1462
2020-02-21 01:38:58 +00:00
Joshua Ashton
2408b881a2 [dxso] Use SSBOs for vertex constant buffers if we'd be outside of uniform range
Impacts #1375
2020-02-20 08:14:58 +01:00
Joshua Ashton
d11a07082c [d3d9] Remove unnecessary dirty flag change in CreateConstantBuffers 2020-02-20 08:14:58 +01:00
Joshua Ashton
512393e469 [d3d9] Refactor constant buffer creation 2020-02-20 08:14:58 +01:00
Joshua Ashton
f688889b41 [d3d9] Avoid setting cursor position if we are already at that position
Avoids an infinite loop where we trigger the cursor move window message which calls SetCursorPos and so on and so forth...

Closes #1400
2020-02-20 01:44:50 +00:00
Joshua Ashton
17166a8aeb [d3d9] Add equality operator overloads for POINT 2020-02-20 01:39:13 +00:00
Joshua Ashton
261a242486 [d3d9] Disallow GetFrontBufferData for anything but D3DPOOL_SYSTEMMEM
Fixes #1464
2020-02-19 18:05:50 +00:00
Joshua Ashton
8fabc25a38 [d3d9] Implement d3d9.allowDiscard 2020-02-18 16:53:51 +00:00
Joshua Ashton
6b85e6d3f1 Revert "[d3d9] Ignore D3DLOCK_DISCARD when partially locking buffers"
This reverts commit 50cf3a465b.
2020-02-18 16:50:39 +00:00
Joshua Ashton
378bdbdfb0 [d3d9] Remove repeated wrap state setting in Reset 2020-02-17 18:05:45 +00:00
Philip Rebohle
4cf3ef538c [d3d9] Fix A4R4G4B4 swizzle 2020-02-17 15:32:28 +00:00
Joshua Ashton
a6d554615e [d3d9] Avoid needless swizzle for A4R4G4B4
Should fix this d3d9 format working on Intel ANV

Impacts #1455
2020-02-16 22:54:28 +00:00
Joshua Ashton
50cf3a465b [d3d9] Ignore D3DLOCK_DISCARD when partially locking buffers
Fixes #1444
2020-02-15 03:10:00 +00:00
Joshua Ashton
7d3ec74b40 [d3d9] Don't perform clipping in FF if disabled
Avoids unnecessary matrix multiplications in the shader, given this isn't as cheap as it is for programmable.
2020-02-14 19:19:22 +00:00
Joshua Ashton
0c16cc7749 [d3d9] Perform FF vertex clipping in world space
Previously we were doing this in object space which is incorrect.

Closes #1446
2020-02-14 19:09:02 +00:00
Joshua Ashton
cad3b69e82 [d3d9] Fix likeliness in GetStreamSource 2020-02-14 17:21:52 +00:00
Joshua Ashton
2096a95262 [d3d9] Fix ColorFill using sampler views for partial extents
Closes #1434
2020-02-14 06:49:15 +01:00
Joshua Ashton
02c79d892c [d3d9] Try to create offscreen surfaces with render target usage 2020-02-14 06:49:15 +01:00
Joshua Ashton
1f5ddde411 [d3d9] Remove unused D3D9ViewSet structure 2020-02-14 06:49:15 +01:00
Joshua Ashton
c7d5ce1c50 [d3d9] Fix incorrect type for luminance scale and offset in D3DTOP_BUMPENVMAPLUMINANCE 2020-02-14 01:10:26 +00:00
Joshua Ashton
ae68e3a5bc [d3d9] Defer managed texture uploads until PrepareDraw and when needed
This also caches shader masks used for hazard tracking.
2020-02-14 00:51:58 +00:00
Joshua Ashton
6e9725a124 [d3d9] Use bitsets for bool subresource arrays
Also remove lockflag tracking and consolidate that to a bitset
2020-02-14 00:51:58 +00:00
Joshua Ashton
cf6142e782 [d3d9] Don't expose formats with alpha as adapter formats
Impacts #1440
2020-02-14 00:46:14 +00:00
Joshua Ashton
acb3cda1dc [d3d9] Hold a private reference to FVF-generated vertex decls
Otherwise the device will never be able to be destroyed as there will be a circular dependency.

Closes #1417
2020-02-13 18:42:49 +00:00
Joshua Ashton
51903d8348 [d3d9] Genericise video format conversion 2020-02-10 18:27:35 +00:00
Philip Rebohle
7567486668 [d3d9] Handle invalid alpha ref correctly 2020-02-10 15:20:13 +00:00
Philip Rebohle
bf03fd8732 [d3d9] Implment fixed-function clipping 2020-02-10 07:32:22 +01:00
Joshua Ashton
ba8dad3958 [d3d9] Fix multiplication order in D3D9StateBlock::MultiplyStateTransform 2020-02-10 06:22:58 +00:00
Joshua Ashton
c42d44a4c3 [d3d9] Mark vertex blend dirty in MultiplyTransform if needed 2020-02-10 06:17:05 +00:00
Joshua Ashton
14203761d9 [d3d9] Reverse multiplication order in MultiplyTransform
Closes https://github.com/Joshua-Ashton/d9vk/issues/295
2020-02-10 06:16:12 +00:00
Joshua Ashton
afeb4814c7 [d3d9] Remove SRGB variant from Q8W8V8U8 2020-02-10 04:57:45 +00:00
Joshua Ashton
310ab6da64 [d3d9] Implement D3DTOP_BUMPENVMAPLUMINANCE 2020-02-08 23:08:48 +00:00
Joshua Ashton
302aed256b [d3d9] Implement D3DTOP_BUMPENVMAP 2020-02-08 23:00:57 +00:00
Joshua Ashton
4291bc9dfb [d3d9] Reupload fixed func ps data if stage constant changes
Closes #1420
2020-02-08 16:33:47 +00:00
Joshua Ashton
2f8fbf9114 [d3d9] Use linear sampler for upscaling if extents don't match on Present 2020-02-07 18:53:47 +00:00
Joshua Ashton
b9474cf787 [d3d9] Return D3D_OK in CreateTexture even if AUTOGENMIPMAP flag is stripped
D3DOK_NOAUTOGEN is only returned when querying format support, the flag is stripped away silently in CreateTexture if it has to be.

Fixes #1409
2020-02-06 23:48:01 +00:00
Joshua Ashton
1f67602b98 [d3d9] Check correct sampler bitfield when applying/capturing sampler state 2020-02-06 22:37:50 +00:00
Philip Rebohle
88147e19d2 [d3d9] Simplify dirty check for shader constants 2020-02-06 17:58:15 +01:00
Philip Rebohle
aa70369671 [d3d9] Store copy of shader metadata in constant set
Reduces pointer chasing when updating shader constants.
2020-02-06 17:58:15 +01:00
Philip Rebohle
2288dd924e [d3d9] Fix GCC warnings for unsigned->signed comparisons 2020-02-06 17:50:28 +01:00
Philip Rebohle
06809587e8 [d3d9] Don't arbitrarily set fog scale to 0
The Witcher 1 sets FOGSTART == FOGEND together with LINEAR fog mode, in
which case we previously set fog_scale to 0 and therefore incorrectly
override the pixel color with the fog color.

Fixes #1401.
2020-02-06 17:50:04 +01:00
Joshua Ashton
87dd8f0122 [d3d9] Validate blit regions are in range
Closes #1392
2020-02-04 23:45:32 +00:00
Joshua Ashton
92ee9c7ef1 [d3d9] Error on StretchRect when not D3DPOOL_DEFAULT 2020-02-04 22:37:44 +00:00
Joshua Ashton
3196fbc759 [d3d9] Unbind fragment shader for ProcessVertices
Fixes validation errors and potential UB on some drivers
2020-01-29 21:43:12 +00:00
Philip Rebohle
1e6ad0b372 [d3d9] Re-introduce client API HUD item 2020-01-28 16:32:58 +00:00
Philip Rebohle
38ad868214 [hud] Add parameter to allow placing HUD items 2020-01-28 16:32:58 +00:00
Philip Rebohle
588beb5b2f [hud] Don't initialize client API HUD item by default
Removes the client API property from the DXVK device as well.
Instead, client APIs should create the HUD item manually.
2020-01-28 16:32:58 +00:00
Joshua Ashton
b1edf227f8 [d3d9] Enable depth bounds feature, if supported
Only expose it in format checks if the adapter supports the feature also
2020-01-28 01:51:04 +00:00
Joshua Ashton
720cdf383e [d3d9] Use spec constants for bool constants 2020-01-27 14:21:21 +01:00
Joshua Ashton
a43223256e [d3d9] Fix GetTextureStageState using unmapped types
Closes #1378
2020-01-27 01:07:11 +00:00
Joshua Ashton
9b486515fa [d3d9] Allow StretchRect BC -> BC format without stretch 2020-01-25 00:31:45 +00:00
Philip Rebohle
5d2215e898 [d3d9] Don't try to blit to compressed images
Fixes Vulkan validation errors and potential driver crashes in
Dragon Age Origins.
2020-01-24 22:59:26 +00:00
Joshua Ashton
13792df4c5 [d3d9] Don't mark D3DUSAGE_AUTOGENMIPMAP as renderable
We can't access those mips via locking in D3D9 so it's a-okay! :)
2020-01-24 15:54:15 +00:00
Joshua Ashton
f804c6364d [d3d9] Implement d3d9.allowDoNotWait 2020-01-24 15:54:15 +00:00
Joshua Ashton
764cb5634f [d3d9] Unmark resources as dirty if they get discarded 2020-01-24 15:54:15 +00:00
Joshua Ashton
6fa28bf937 [d3d9] Don't block on GetRenderTargetData
Fixes perf in #1363
2020-01-24 15:54:15 +00:00
Philip Rebohle
38a0d2c552
[d3d9] Don't check for sRGB formats when retrieving back buffer view
Turns out this is always false anyway.
2020-01-24 01:47:52 +01:00
Philip Rebohle
582b06a706 [d3d9] Rotate swap chain back buffers
Restores functionality removed in 81c3daa3d0.
2020-01-24 00:27:09 +00:00
Philip Rebohle
6a6af16195 [d3d9] Retrieve back buffer view from the D3D9Surface 2020-01-24 00:27:09 +00:00
Philip Rebohle
81c3daa3d0
[dxvk] Remove image renaming
Broken by design, has to be implemented by client APIs instead.
2020-01-23 22:21:45 +01:00
Florian Will
0b3f9718c9 [d3d9] Fix some off-by-one TSS types enum values
They are 0-based instead of 1-based, and therefore supposed to be
off-by-one compared to D3DTEXTURESTAGESTATETYPE, but three values in the
enum are actually off-by-two.

For me, this fixes some odd rail rendering in ZUSI 3.

Fixes: 7d0ddc4b
2020-01-23 17:26:51 +00:00
Joshua Ashton
792c74e1d9 [d3d9] Fix texture stage index in stateblocks
Fixes minimap transparency in FHX https://github.com/Joshua-Ashton/d9vk/issues/306
2020-01-23 02:19:43 +00:00
Joshua Ashton
7d0ddc4b3b [d3d9] Remap texture stage state types onto our own enum
Fits us nicely into a dword for captures while not exclusing D3DTSS_CONSTANT
2020-01-23 02:05:09 +00:00
Joshua Ashton
a1cad25a51 [d3d9] Remove unnecessary loops for some stateblocks applications 2020-01-23 02:05:09 +00:00
Joshua Ashton
ff2c6a076f [d3d9] Fix opSelect condition vector size
Fixes invalid fixed function shaders
2020-01-22 22:54:27 +00:00
Joshua Ashton
35a9934cde [d3d9] Make unbound textures return (0, 0, 0, 1) (fixed func)
Fixes sky in Ferentus Herrcot Xiones

https://github.com/Joshua-Ashton/d9vk/issues/306
2020-01-18 03:10:47 +00:00
Philip Rebohle
caae5d18ed
[d3d9] Remove unused variable
Fixes a compiler warning.
2020-01-17 18:04:09 +01:00
Philip Rebohle
609856db35
[d3d9] Create front buffer 2020-01-17 18:04:09 +01:00
Philip Rebohle
f20a3c07fb [d3d9] Don't create sRGB views for non-sRGB compatible textures
Otherwise we end up creating views with VK_IMAGE_FORMAT_UNDEFINED.
2020-01-17 17:47:08 +01:00
Philip Rebohle
296aacb23e [d3d9] Return specific image view from GetSampleView
Lets us have pick the sRGB-ness of the view in one place. Needed
for the next patch.
2020-01-17 17:47:08 +01:00
Philip Rebohle
905d69e77b [d3d9] Don't pass format mapping to D3D9CommonTexture
Instead, infer it from the format. This is basically being done
already, however the mapping we pass in is not correct if the
image format is Unknown.
2020-01-17 17:47:08 +01:00
Philip Rebohle
7e35a0687b [d3d9] Don't enable DrawParameters capability
Not used in D3D9 shaders.
2020-01-17 17:46:59 +01:00
Joshua Ashton
b954ab886f [d3d9] Implement GetFrontBufferData (currently with first backbuffer)
Fixes screenshots in ATi ToyShop demo
2020-01-17 06:01:48 +00:00
Joshua Ashton
e5df573292 [d3d9] Add AreFormatsSimilar helper 2020-01-17 05:55:47 +00:00
Joshua Ashton
9fce945b62 [d3d9] Don't create views if we are a null resource 2020-01-17 04:20:05 +00:00
Philip Rebohle
eb37dfa8d2 [d3d9] Create multiple back buffers for GetBackBuffer API
Needed by Atelier Sophie.
2020-01-16 18:50:23 +01:00
Philip Rebohle
c911784bb8 [d3d9] Synchronize with presentation in D3D9SwapChainEx::Reset
Otherwise, the subsequent patches would break if Reset is called
while there's still a frame in flight.
2020-01-16 18:50:23 +01:00
Joshua Ashton
9e5e4c1cfc [d3d9] Don't mark for hazards if we aren't rendering to mip 0 2020-01-16 03:04:58 +00:00
Joshua Ashton
7c53a997ef [d3d9] Keep subresource views in subresources, defer creation until needed
Avoid creating a bunch of views that we probably don't need whenever a texture is created
2020-01-16 03:00:31 +00:00
Joshua Ashton
64ece36349 [d3d9] Implement d3d9.forceSwapchainMSAA
Works good enough for some titles like Vampire The Masquerade: Bloodlines.
2020-01-11 02:34:37 +00:00
Joshua Ashton
3ebd4b28a3 [d3d9] Defer dialog mode swapchain recreation decision to Present
Avoids unnecessary swapchain recreations if the game calls SetDialogBoxMode multiple times per frame
2020-01-10 04:30:55 +00:00
Joshua Ashton
9647e449d2 [d3d9] Remove redundant logging from SetDialogBoxMode
This path doesn't error anyway...
2020-01-10 04:30:02 +00:00
Philip Rebohle
79fcaa9fba [d3d9] Remove unused variable from D3D9DeviceEx::Clear
Fixes a compiler warning.
2020-01-09 18:06:58 +00:00
Joshua Ashton
47555f1dda [d3d9] Add GetSurfaceExtent helper 2020-01-09 03:29:58 +00:00
Joshua Ashton
cd58b147a1 [d3d9] Respect mip != 0 for Clear fastpath 2020-01-09 03:24:50 +00:00
Joshua Ashton
ebcab68822 [d3d9] Respect specific mip size for implicit viewport in SetRenderTarget
Closes #1295
2020-01-09 03:19:37 +00:00
Joshua Ashton
b738c4220b [d3d9] Scale depth bias value based on current format's r value 2020-01-08 19:38:18 +00:00
Joshua Ashton
2d7f4b1a2c [d3d9] Set depth bias values separately, optimize redundant rasterizer state changes 2020-01-08 19:38:18 +00:00
Joshua Ashton
9541aef0b8 [d3d9] Ensure D3DDISPLAYMODEEX we use to call the Ex funcs has its size set correctly 2020-01-06 04:14:02 +00:00
Joshua Ashton
61b6f8f297 [d3d9] Hook up GetAdapterDisplayMode to resp. adapter func
Fixes fullscreen at < native res in Vampire: The Masquerade Bloodlines 1/2
2020-01-06 04:07:02 +00:00
Joshua Ashton
91574993df [d3d9] Return current display mode in GetAdapterDisplayModeEx rather than last mode
Fixes fullscreen at < native res in Vampire: The Masquerade Bloodlines 1/2
2020-01-06 04:06:45 +00:00
Joshua Ashton
845ab2b5af [d3d9] Don't re-set dialogbox mode on swapchain Reset
There's no reason to do this now that we have no error path in SetDialogBoxMode...
2020-01-04 21:12:53 +00:00
Joshua Ashton
d53b3adaea [d3d9] Remove incorrect error returns SetDialogBoxMode
The Microsoft docs for this are incorrect based on my tests of all the described edge-cases.
https://docs.microsoft.com/en-us/windows/win32/api/d3d9/nf-d3d9-idirect3ddevice9-setdialogboxmode
2020-01-04 21:10:26 +00:00
Joshua Ashton
c024b89171 [dxso] Implement d3d9.forceSamplerTypeSpecConstants
This option makes us always use a spec constant to determine sampler type (instead of just in PS 1.x)
which works around a game bug in Halo CE where it gives cube textures to 2d/volume samplers
2020-01-01 20:56:05 +00:00
Joshua Ashton
ff129abaf0 [d3d9] Fix crash when trying to present with a currently invalid presenter
Closes #1304
2019-12-28 01:27:18 +00:00
Joshua Ashton
b4f2094c02 [d3d9] Enable bounds testing for D3DPOOL_SYSTEMMEM buffers
Improves performance in Halo CE.
2019-12-22 19:05:22 +00:00
Joshua Ashton
fb4d794412 [d3d9] Use VK_FORMAT_D24_UNORM_S8_UINT for D3DFMT_DF24
May improve performance in some instances
2019-12-22 01:46:50 +00:00
Joshua Ashton
05de0b20a0 [d3d9] Use VK_FORMAT_D24_UNORM_S8_UINT for D3DFMT_D24X8
May improve performance in some instances
2019-12-22 01:43:36 +00:00
Joshua Ashton
90ce37c8c9 [d3d9] Make ChangeReportedMemory actually atomic
Massive edge case that will never happen, but better to be safe than sorry.
Reduces the atomic ops too.
2019-12-20 18:07:35 +00:00
Joshua Ashton
5cc0fd5c25 [d3d9] Simplify SetViewport
pViewport == nullptr is illegal
2019-12-18 23:18:01 +00:00
Joshua Ashton
bab56433cb [d3d9] Avoid rebinding scissor rects if the same one is re-set 2019-12-18 23:18:01 +00:00
Joshua Ashton
288a9dd547 [d3d9] Avoid rebinding viewports if the same one is re-set 2019-12-18 23:18:01 +00:00
Joshua Ashton
9ec0541b93 [d3d9] Still rebind viewport/scissor when setting the same RT
Closes #1290
2019-12-18 23:18:01 +00:00
Joshua Ashton
7b0723520a [d3d9] Add operator overloads for RECT 2019-12-18 23:18:01 +00:00
Joshua Ashton
777cd4cd64 [d3d9] Add operator overloads for D3DVIEWPORT9 2019-12-18 23:01:16 +00:00
Philip Rebohle
31948cae8c [spirv] Allow specifying the SPIR-V version explicitly
We're going to use some SPIR-V 1.4 features for D3D11 if supported,
but 1.4 is not supported by all implementations.
2019-12-18 17:36:46 +01:00
Joshua Ashton
78e4816fc0 [d3d9] Avoid unnecessary state block constant bits when not SWVPing 2019-12-18 14:48:01 +01:00
Joshua Ashton
312905e8a3 [d3d9] Use new bitset helper + tzcnt for stateblocks 2019-12-18 14:48:01 +01:00
Joshua Ashton
784abe5cf4 [d3d9] Move auto depth stencil creation to after swapchain creation
If the app specifies w == 0 and/or h == 0 then this will be filled in by then in the presentation params.

Impacts #1278
2019-12-18 00:09:55 +00:00
Joshua Ashton
009e772fe8 [d3d9] Remove initial device reset outside of constructor
Allows us to funnel hresults from that to the response of CreateDevice
2019-12-17 23:59:37 +00:00
Joshua Ashton
3b119c0be6 [d3d9] Log unavailable backbuffer format if encountered when resetting swapchain 2019-12-17 22:36:27 +00:00
Joshua Ashton
3abd30bb96 [d3d9] Fix return value for invalid backbuffer formats
This got changed when I saw that the auto depth stencil when set to an unavailable returns D3DERR_NOTAVAILABLE.
Turns out if the backbuffer is unavailable it returns D3DERR_INVALIDCALL...

Consistent...

Closes #1278
2019-12-17 22:36:27 +00:00
Joshua Ashton
91b5105db5 [d3d9] Move capture struct and enum to stateblock header
Makes more sense for it to be here.
2019-12-17 03:16:50 +00:00
Joshie
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