Robin Kertels
804eca9cad
[d3d9] Respect shader defined constants for HWVP/PS buffer binding range
2021-11-30 01:57:22 +00:00
Robin Kertels
0061139652
[d3d9] Copy shader defined constants into SWVP UBO
...
Co-authored-by: Christopher Egert <cme3000@gmail.com>
Co-authored-by: Georg Lehmann <dadschoorse@gmail.com>
2021-11-30 01:57:22 +00:00
Robin Kertels
39039f9ac8
[dxso+d3d9] Clean up texture slots
2021-11-30 01:57:22 +00:00
Paul Gofman
b672c07a93
[d3d9] Send WM_ACTIVATEAPP messsage on WM_SIZE.
2021-11-30 01:48:24 +00:00
Joshua Ashton
4c0eee89e4
[d3d9] Use clamped LOD for creating new views
2021-11-11 23:53:38 +00:00
Joshua Ashton
c22dcdbaa3
[d3d9] Clamp LOD in calls to SetLOD
...
MSDN says this is clamped and returns the clamped value.
Closes : #1869
2021-11-11 23:52:35 +00:00
Joshua Ashton
5d4b7db9e6
[d3d9] Fix = alignent in CreateView
2021-11-11 23:51:59 +00:00
Joshua Ashton
8912c7adb0
[d3d9] Fix long driver/device names not being null terminated
...
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-10-22 02:58:53 +00:00
Robin Kertels
7f89fe1406
[d3d9+utils] Remove swvp hack
2021-10-15 10:54:18 +01:00
Robin Kertels
530f87f158
[d3d9+dxso] Rely on robustness for unset HW VS & PS constants
2021-10-15 10:54:18 +01:00
Robin Kertels
869f75895c
[d3d9+dxso] Switch constant buffer order
2021-10-15 10:54:18 +01:00
Robin Kertels
791d533a1d
[d3d9+dxso] Rely on robustness for unset SWVP constants
2021-10-15 10:54:18 +01:00
Robin Kertels
01f633289b
[d3d9] Use mapped slice when locking POOL_DEFAULT textures
...
Fixes an issue where the game would end up using the wrong
buffer slice if it previously mapped the same texture with DISCARD.
Fixes #2329
2021-10-15 10:46:40 +01:00
Robin Kertels
c8341e4be3
[d3d9] Fix lenient clears
2021-09-28 21:14:02 +01:00
Robin Kertels
c4449faf5a
[d3d9] Don't clamp clears to the size of RT 0
2021-09-27 21:57:15 +01:00
Robin Kertels
29ee1a74e6
Revert "[d3d9] Avoid depth degenerate viewports"
...
This reverts commit 78d22cc7a5
.
2021-09-27 14:55:49 +01:00
Georg Lehmann
827c7a892c
[util] Replace countof with std::size
2021-09-10 11:58:46 +01:00
Georg Lehmann
ed70f9a07c
[d3d9] Support unsupported formats in LockRect
2021-08-23 17:38:50 +01:00
Georg Lehmann
82d40f5bba
[d3d9] Return a pointer in GetUnsupportedFormatInfo
2021-08-23 17:38:50 +01:00
Georg Lehmann
04474b761b
[d3d9] Brain-dead gamma ramp validation
2021-08-23 15:41:59 +01:00
Georg Lehmann
41d0fcff95
[d3d9] Disable projection for PS 1.4
2021-08-19 01:47:42 -07:00
Robin Kertels
956b23c9e9
[d3d9] Use correct pitch to calculate buffer offset
2021-08-18 13:31:00 -07:00
Robin Kertels
97e91b6c0f
[d3d9] Respect pitch alignment in GetFrontBufferData
2021-08-18 13:31:00 -07:00
Joshua Ashton
3718cee9eb
[d3d9] Clean up texture type tracking
...
Additionally stops leaky pipelines on PS 1.x shaders from partial mask updates.
2021-08-17 07:02:56 -07:00
Joshua Ashton
64852f05c3
[d3d9] Track fixed function sampler bitfields
...
Cleans some stuff up a little bit and makes FF draws faster when this gets incorrectly invalidated.
2021-08-17 07:02:56 -07:00
Joshua Ashton
c6a4c41d20
[d3d9] Batch texture unbinding
2021-08-17 07:02:56 -07:00
Joshua Ashton
a346949304
[d3d9] Remove needless locks in SetTexture and SetSamplerState
2021-08-16 19:09:16 +01:00
Georg Lehmann
6103e3c800
[d3d9] Use BitMask helper
2021-08-16 08:49:46 -07:00
Joshua Ashton
b09b912797
[d3d9] Fix unbinding textures
...
Closes : #2236
2021-08-16 15:33:49 +01:00
Georg Lehmann
a75cf2f39d
[d3d9] Fix parital DS clears with full RT clear
2021-08-15 19:00:47 +00:00
Joshua Ashton
7acbd0f4e1
[d3d9] Expose D3DPMISCCAPS_CLIPTLVERTS
...
Matches what we actually do and fixes a Wine test
2021-08-11 12:44:28 +01:00
Joshua Ashton
a6156856e5
[d3d9] Don't check for NULL pViewport
...
This cannot be NULL.
2021-08-11 11:44:09 +00:00
Joshua Ashton
78d22cc7a5
[d3d9] Avoid depth degenerate viewports
2021-08-11 11:44:09 +00:00
Joshua Ashton
5f4f4d57df
[d3d9] Fix initial mapping of images written by GPU
2021-08-11 12:14:17 +01:00
Joshua Ashton
679d703efc
[d3d9] Fix upload race with default image mapping
...
Fixes a Wine test
2021-08-11 11:53:17 +02:00
Robin Kertels
60a7047550
[d3d9] Fix D3DLOCK_READONLY handling with evictManagedOnUnlock
2021-08-11 07:35:39 +00:00
Joshua Ashton
2c8099adf1
[d3d9] Use Texture2D for CommonTexture resolution
...
Using the generic texture type was a nice idea in theory, but some compilers did not give it a vtable as it was abstract, resulting in a crash here.
2021-08-11 04:25:29 +01:00
Joshua Ashton
ab7fc42f2f
[d3d9] Fix stateblock refcounting
2021-08-11 01:38:50 +01:00
Joshua Ashton
a1f0bb99ee
[d3d9] Cleanup D3D9DeviceEx members
2021-08-11 01:38:34 +01:00
Joshua Ashton
5e48035e99
[d3d9] Only bind textures if they are used by the shader
2021-08-11 01:08:13 +01:00
Joshua Ashton
c0c1565cba
[d3d9, dxso] Alias color and depth samplers and improve tracking
...
Takes me from 340 -> 460fps in A Hat in Time's main menu when CPU bound.
2021-08-10 23:46:03 +00:00
Joshua Ashton
3f78bde928
[d3d9] Optimize GetCommonTexture
2021-08-10 23:46:03 +00:00
Joshua Ashton
85468a5526
[d3d9] Add extra brackets to fetch4 filter check
2021-08-09 22:54:19 +00:00
Joshua Ashton
674f008e23
[d3d9] Use m_activeTexture mask for SRGB check
2021-08-09 22:54:19 +00:00
Joshua Ashton
1823a098a1
[d3d9] Clean up SetStateSamplerState
2021-08-09 22:54:19 +00:00
Joshua Ashton
ea4aa87336
[d3d9] Add unlikelies to rare vendor hacks
2021-08-09 22:54:19 +00:00
Georg Lehmann
1ea79cf136
[d3d9] Only respect relevant bits of D3DRS_STENCILREF
2021-08-09 22:54:06 +00:00
Georg Lehmann
152a08191c
[d3d9] Downgrade format fall back warnings to info
2021-08-09 13:17:43 +02:00
Joshua Ashton
abba425ed0
[d3d9] Optimize MarkTextureBindingDirty with tzcnt loop of m_activeTextures
2021-08-09 09:54:12 +00:00
Joshua Ashton
242b7b6d9c
[d3d9, dxso] Remove AlphaTestEnable spec constant
...
Go based on the func we already have. Avoids wasting a spec const.
2021-08-09 09:52:07 +00:00
Georg Lehmann
ada463badc
[d3d9] Mark mips as dirty on Clear if needed
2021-08-08 10:27:43 +00:00
Georg Lehmann
92deba0310
[d3d9] Implement D3DTOP_BLENDTEXTUREALPHAPM
2021-08-08 10:12:40 +00:00
Georg Lehmann
9162aa5fdf
[d3d9] Captured NULL vertex declarations are not applied
2021-08-08 08:50:00 +00:00
Georg Lehmann
28a07ef445
[d3d9] Validate vertex declaration on draws
2021-08-08 08:50:00 +00:00
Georg Lehmann
8c0003552c
[d3d9] Reject depth stencil StrechRect during an active scene
2021-08-08 08:50:00 +00:00
Georg Lehmann
09e5939502
[d3d9] Reject 2 BeginScene + EndScene without Begin
2021-08-08 08:50:00 +00:00
Georg Lehmann
6071e998fd
[d3d9] Handle invalid modes in Device::Reset
2021-08-08 08:50:00 +00:00
Georg Lehmann
64c4eea922
[d3d9] Mark texture dirty on SetLod
2021-08-08 02:28:44 +00:00
Georg Lehmann
26516dc904
[d3d9] Fix ColorFill with OffscreenPlainSurface
2021-08-08 02:15:06 +00:00
Joshua Ashton
fd50eae5c2
[d3d9] Optimize framebuffer binding with RT mask
2021-08-08 02:14:11 +00:00
Joshua Ashton
2f22c1b53d
[d3d9] Optimize clears with rt mask and better ref tracking
2021-08-08 02:14:11 +00:00
Joshua Ashton
072d3a039e
[d3d9] Track bound RTs
...
This also improves active RT hazard tracking by also accounting for NULL
2021-08-08 02:14:11 +00:00
Joshua Ashton
e0f9ebf695
[d3d9] Common buffer header cleanups and docs
2021-08-08 02:14:11 +00:00
Joshua Ashton
ee11e1af58
[d3d9] Minor buffer code-style cleanups
2021-08-08 02:14:11 +00:00
Joshua Ashton
b1b1524737
[d3d9] Adapter cleanups
2021-08-08 02:14:11 +00:00
Joshua Ashton
da411c8a48
[d3d9] Move m_lod after m_subresources
2021-08-08 02:14:11 +00:00
Joshua Ashton
4a569918c0
[d3d9] Track NULL state per-subresource
2021-08-08 02:14:11 +00:00
Joshua Ashton
d6bc355782
[d3d9] Fix code-style of D3D9Subresource and inline
2021-08-08 02:14:11 +00:00
Joshua Ashton
f4ce795fe7
[d3d9] Do a little packing of subresource members
2021-08-08 02:14:11 +00:00
Joshua Ashton
d922e261e8
[d3d9] Make D3D9_COMMON_TEXTURE_DESC smaller
2021-08-08 02:14:11 +00:00
Joshua Ashton
3592d7b48f
[d3d9] Return const buffer references in D3D9CommonBuffer
...
Avoids some needless refcounting
2021-08-08 02:14:11 +00:00
Joshua Ashton
fb7035f16a
[d3d9] Remove D3D9CommonBuffer::GetDesc
...
We already have ::Desc()
2021-08-08 02:14:11 +00:00
Joshua Ashton
750639d3b6
[d3d9] Return const view references in D3D9Subresource
2021-08-08 02:14:11 +00:00
Joshua Ashton
3cbac8923f
[d3d9] Return const refs for image/buffers + format mapping in CommonTexture
...
Avoids needless Rc ref counts and copies of that fairly large structure.
2021-08-08 02:14:11 +00:00
Georg Lehmann
23873cbb57
[d3d9] Disable primitive restart
2021-08-08 02:05:27 +00:00
Georg Lehmann
fdc2e2e78f
[d3d9] Fix NEVER alpha testing
2021-08-07 21:54:30 +00:00
Georg Lehmann
be3c248c8b
[d3d9] Don't mark mips as dirty when the texture doesn't have automatic mips
2021-08-07 21:53:34 +00:00
Georg Lehmann
973678e6bf
[d3d9] Only look at the last bit for D3DSAMP_SRGBTEXTURE
2021-08-07 13:09:13 +00:00
Georg Lehmann
a1fbcf35de
[d3d9] Ignore clear with Count == 0 and non-NULL rect
2021-08-06 18:54:17 +00:00
Robin Kertels
7873bebaf2
[d3d9] Only check range overlap if the buffer is not directly mapped
2021-07-28 16:57:02 +00:00
Joshua Ashton
b8a4b85c48
[d3d9] Fix clearing render targets on device reset
2021-07-26 14:35:48 +02:00
Robin Kertels
b4e6f81cb5
[d3d9] Respect aligned pitch when using initial data
2021-07-24 19:41:59 +00:00
Robin Kertels
6ba3d2f9d4
[d3d9] Set correct usage flags for large temporary staging buffers
2021-07-23 13:36:21 +00:00
Robin Kertels
fa279eb8ad
[d3d9] Ignore NO_DIRTY_UPDATE for POOL_DEFAULT resources
...
Respecting it breaks Senren Banka because we never upload the texture.
2021-07-23 13:36:21 +00:00
Robin Kertels
584e1515b1
[d3d9] Fix pitch when copying straight from mapping buffer
2021-07-23 13:36:21 +00:00
Robin Kertels
34101dcf26
[d3d9] Fix UpdateTexture extent
...
Same as 5f1629f2cb
2021-07-23 13:36:21 +00:00
Joshua Ashton
d3112c320b
[d3d9] Add dirty texture tracking
...
Reduces overhead from re-binding and unnecessary binding (srgb changes) in L4D2.
I go from about 750 -> 850-900 fps in c1m2_streets with this change.
2021-07-14 20:38:49 +00:00
Robin Kertels
8eeff90e0a
[d3d9] Only use staging buffers for uploads once we've stalled on the resource
2021-07-14 19:26:25 +00:00
Robin Kertels
b83261b759
[d3d9] Adjust waiting in LockBuffer to staging buffer upload
...
Now that we're uploading using a staging buffer,
we don't need to wait for non default buffers.
We should also respect READONLY for WRITEONLY buffers
(yes, it sounds dumb) because Nostale relies on that.
2021-07-14 19:26:25 +00:00
Robin Kertels
ed24c17d53
[d3d9] Validate srcRect and dstPoint in UpdateSurface
2021-07-14 18:33:38 +00:00
Georg Lehmann
b3b2f0921c
[d3d9] Never init pSharedHandle.
...
This parameter has three different meanings if it's non NULL:
- if Pool is D3DPOOL_SYSTEMMEM it's a host pointer for inital data
- if it points to a nullptr it's a output handle
- if it's a pointer to non NULL pointer it's an import handle
2021-07-14 15:29:46 +00:00
Robin Kertels
5f1629f2cb
[d3d9] Fix FlushImage extent for smaller mip maps
2021-07-10 16:23:56 +00:00
Robin Kertels
9f0775b1ac
[d3d9] Always use cached memory for texture mapping buffers
...
We read from that memory when uploading the texture.
Fixes performance in Oblivion.
2021-07-08 21:42:12 +00:00
Joshua Ashton
c7f8267f98
[d3d9] Fix NV12 conversion
...
Froggy is the right color now
2021-07-08 22:36:59 -07:00
Connor Abbott
9579132942
[d3d9] Remove extra spaces in def file
...
wrc is pickier about this than windres and refuses to accept it.
2021-07-03 14:28:28 +02:00
Connor Abbott
aae0e57a46
Don't add def file as an object
...
This is unnecessary even on mingw, and leads to duplicating the .def
file on the linking command line which winegcc complains about.
2021-07-03 14:28:28 +02:00
Robin Kertels
309284e7dc
[d3d9] Respect 4 byte pitch when reading back texture
2021-07-01 05:47:44 -07:00
Robin Kertels
c43618d19f
[d3d9] Fix texture dirty box clearing
...
- Fix interleaved locks with evictManagedOnUnlock
We need to make sure there are no other subresources of a texture locked
before clearing the dirty box. Otherwise the data for those other subresources
won't get copied into VRAM.
- Clear dirty box regardless of texture pool
Otherwise we keep repacking and copying the whole texture
for every single lock. This causes performance problems
in Star Wars: The Old Republic.
2021-07-01 05:47:44 -07:00
Philip Rebohle
2ff8b42fff
[d3d9] Enable robustBufferAccess2 feature if available
...
Tightens some out-of-bound rules around vertex attributes.
2021-06-29 18:35:47 -07:00
Philip Rebohle
96f5641a7e
[d3d9] Ensure that the bound UP vertex buffer region is large enough
...
If the buffer size is less than (vertexCount * stride), the last vertex
may be considered out-of-bounds, even if all attributes are included in
the vertex.
Fixes #2131 .
2021-06-29 18:35:47 -07:00