Commit Graph

1172 Commits

Author SHA1 Message Date
Stenzek
e169d54f3c D3D11: Fix CPU EFB color reads when MSAA is enabled
Also swaps the byte order from RGBA->BGRA to match GL/D3D12, and what
the read handler is expecting.

Depth reads will now return the minimum depth of all samples, instead of
the average of all samples.
2016-05-19 22:51:00 +10:00
Stenzek
89e54fbd6c OGL: Work around slowdown of glMapBufferRange with SSBO on NVIDIA drivers
Using glMapBufferRange to read back the contents of the SSBO is extremely
slow on NVIDIA drivers. This is more noticeable at higher internal
resolutions. Using glGetBufferSubData instead does not seem to exhibit
this slowdown.
2016-05-19 21:24:09 +10:00
Markus Wick
22648729c7 Merge pull request #3832 from degasus/android
DriverDetails: Update Qualcomm new driver version.
2016-05-18 21:26:45 +02:00
degasus
3a452f3cc5 VideoSW: Fix XFB config. 2016-05-18 18:37:44 +02:00
degasus
fa3526962d VideoSW: Drop Update in XFB copy. 2016-05-18 18:37:44 +02:00
degasus
bca0e06a95 OGL: Use coherent mapping on Qualcomm devices. 2016-05-11 23:55:28 +02:00
degasus
6219c39cf5 OGL: Drop QC ES3.1 workaround.
This was never tested well:

HdkR> The tester was most likely trying to load a stale shader cache or something
2016-05-11 20:45:07 +02:00
Stenzek
ccf9470241 D3D12: Specify read/write ranges when calling Map/Unmap 2016-05-08 23:18:59 +10:00
Stenzek
fde7dee652 D3D12: Fix invalid CopyTextureRegion call in CopyRectangleFromTexture
This was occuring when the source texture was larger than the destination
texture, but the source rect was <= dest rect, so the copy is valid.
2016-05-08 23:18:58 +10:00
Stenzek
9bff187547 D3D12: Cleanup startup/shutdown process
Sorts out references that cause some modules to be kept around after
backend shutdown.

Should also solve the issue with errors being thrown due to the config
being loaded after device creation, leading to the incorrect device being
used in a multi-adapter system.
2016-05-08 23:18:58 +10:00
Stenzek
4269abdc3e D3D12: Implement perf query support 2016-05-08 23:18:57 +10:00
Stenzek
25d5da0ea3 D3D12: Remove D3D11 header references 2016-05-08 23:18:56 +10:00
Stenzek
6f3573dda8 D3D12: Implement XFB encoding/decoding (support Real XFB) 2016-05-08 23:18:51 +10:00
Stenzek
3372bfa6ab D3D12: Remove feature level checks
We don't create a device below feature level 11_0 anyway, so no point
checking, we can just assume support.
2016-05-08 12:08:25 +10:00
Stenzek
063761fbd2 D3D12: Don't add padding when allocating within empty StreamBuffer
Resources are already aligned to an address larger than any of our
requirements, anyway.
2016-05-08 12:08:25 +10:00
Stenzek
0c27aae7d3 D3D12: Improve output of shader compiler errors
These were completely broken due to lack of c_str(). We also output
warnings now as well (these can be useful).
2016-05-08 12:08:25 +10:00
Stenzek
acfa93372e D3D12: Refactoring and cleanups
Moves render target restoring to RestoreAPIState, this also means no need
to manually restore after allocating in a buffer that caused execution,
because the manager restores it for us.

Remove a method that wasn't used from D3DUtil.cpp, and fixes a few errors
in EFB poke drawing.
2016-05-08 12:08:25 +10:00
Stenzek
7ec1fce741 D3D12: Fix error with >1xIR/MSAA EFB depth access 2016-05-08 12:08:25 +10:00
Stenzek
ac1cd8279b D3D12: Implement GPU-based bounding box 2016-05-08 12:08:25 +10:00
Stenzek
32599559db D3D12: Use helper method for binding EFB render targets 2016-05-08 12:08:25 +10:00
Stenzek
984da2d624 D3D12: Use signed ints for viewport origin
Fixes black screen when crop is enabled.
2016-05-08 12:08:25 +10:00
Stenzek
a8c4d6c242 D3D12: Allow large texture uploads (>64MiB) by using temporary buffer
This is not optimal, but for those texture packs with extremely large
images, it won't crash. Releasing after the frame completes is an option
too, however, there is the risk of running out of memory by doing this.
2016-05-08 12:08:25 +10:00
Matthew Parlane
1634948b6e Merge pull request #3742 from phire/dither
Implement Dithering for video software
2016-05-03 22:41:39 +12:00
degasus
6f2d8483b7 VideoSW: Fix special case.
I have no clue what this special case shall be, but accessing g_main_cp_state within Flush() is not allowed.
We likely still have a bad behavior, but now it only depends on the current state, not on the next one after flushing.
2016-04-30 13:14:09 +02:00
Jules Blok
8a21b082d6 Merge pull request #3745 from stenzek/d3d11-texcache
D3D11: Fix EFB MSAA depth buffer copies, StateManager desyncs in some cases
2016-04-24 11:47:32 +02:00
Lioncash
33c22ffab7 D3D: Amend code to fix a new VS warning
Fixes warning C4334
2016-03-30 20:59:57 -04:00
Pierre Bourdon
486d3a7114 Merge pull request #3656 from phire/windows-10-sdk-update
Updated D3D12 to build on the newer windows 10 sdk.
2016-03-30 18:37:53 +02:00
Scott Mansell
c036cf7a5f Updated D3D12 to build on the newer windows 10 sdk. 2016-03-26 18:11:49 +13:00
Pierre Bourdon
2fd0884347 Merge pull request #3672 from EmptyChaos/d3d-anisotropy
Fix D3D Forced Anisotropy
2016-03-26 03:25:01 +01:00
Scott Mansell
066b6b0bcb OpenGL: Cache query to max texture size.
This showed up really high when I was profiling things.
2016-03-26 03:14:39 +13:00
Stenzek
53cf42fb06 D3D11: Fix some cases where render target switches desynced StateManager
This was occuring in certain EFB copy patterns, leaving the textures
unbound for the next draw call.
2016-03-26 00:01:26 +10:00
Stenzek
63e4e07683 D3D11: Simplify MSAA depth texture resolving
This also fixes EFB depth buffer copies when MSAA is enabled.
2016-03-26 00:00:39 +10:00
EmptyChaos
0b9a72a62d VideoCommon: Refactor TexMode0 mipmaps disabled test into a helper function 2016-03-24 13:43:29 +11:00
EmptyChaos
902e5cddf7 VideoBackends: Do not use Anisotropy on Point filtered textures.
The D3D backend was always forcing Anisotropic filtering when that is enabled regardless of how the game chose to configure the texture filtering registers; this causes the same issues as "Force Filtering" without Anisotropy, such as causing game UI elements to no longer line up adjacent correctly. Historically, OpenGL's Anisotropy support has always worked "better" than D3D's due to seeming to not have this problem; unfortunately, OpenGL's Anisotropy specification only gives GL_LINEAR based filtering modes defined behavior, with only the mipmap setting being required to be considered. Some OpenGL implementations were implicitly disabling Anisotropy when the min/mag filters were set to GL_NEAREST, but this behavior is not required by the spec so cannot be relied on.
2016-03-24 13:43:29 +11:00
Scott Mansell
51dc779b7c Implement Dithering for video software 2016-03-23 12:29:35 +13:00
mimimi085181
e4f984d5dd Minor fixes to the partial updates code
- remove an outdated comment about the efb to ram and scaled efb restriction
- when upscaling efb copies, mark the new texture as efb copy
- dx12 fixes for the src box, especially the number of layers for 3D
2016-03-16 22:24:11 +01:00
degasus
ab44d2ec5c VideoSW: Drop SetTevReg for colors. 2016-03-06 11:05:49 +01:00
degasus
7a154181b4 VideoSW: Drop SetScissor().
Just access the global state directly.
2016-03-06 10:24:28 +01:00
degasus
8b0fd623e5 VideoSW: Drop SetViewOffset.
Just use the global state.
2016-03-06 10:22:44 +01:00
Mathew Maidment
c2802f96a6 Merge pull request #3655 from jcowgill/spelling-fixes
Fix some very minor spelling mistakes
2016-03-02 14:04:05 -05:00
EmptyChaos
cc36dec9b5 D3D12: Cleanup DX12::Renderer::SetSamplerState
Remove uninitialized non-static variable. Replace test to avoid unnecessary state changes with a simpler one.
2016-03-01 23:55:19 +11:00
Pierre Bourdon
07ff8379ba Merge pull request #3647 from stenzek/d3d12-fences
D3D12: Multiple fixes (texture cache, fences, MSAA, CPU EFB access)
2016-02-29 16:49:03 +01:00
Pierre Bourdon
961901daae Merge pull request #3355 from mimimi085181/partial-texture-updates-check-dimensions
Partial texture updates: Check the dimensions of the efb copy
2016-02-29 00:49:48 +01:00
Stenzek
0a96e2f531 D3D11: Fix texture dumping, for both single and multi-mip textures 2016-02-28 17:24:47 +10:00
Stenzek
c793459b88 D3D12: Fixed issue where EFB copies could end up corrupted after reset
Also prevents previously-released textures from ending up in a descriptor
table.
2016-02-28 17:24:46 +10:00
Stenzek
74275bdfe3 D3D12: Don't keep screenshot/encoder buffers mapped
Readback heaps do not support persistent mapping. See D3D12 docs.
2016-02-28 17:24:09 +10:00
Stenzek
c4d79d6db3 D3D12: Add helper method for setting both viewport and scissor rect
Simplfies making changes, as well as keeping the two in sync.
2016-02-28 17:18:46 +10:00
Stenzek
13e143de38 D3D12: Optionally prevent StreamBuffer from executing command list
This applies to callers that do not have full knowledge of the command
list state, and thus, cannot restore it should allocations cause command
list execution. Instead we reallocate a new buffer. Should not happen
often enough for this to be a concern, as it's mainly for the utility
classes.
2016-02-28 17:18:46 +10:00
Stenzek
04257029e0 D3D12: Don't enumerate outputs, it's not used anywhere
The D3D12 backend does not support exclusive fullscreen.
2016-02-28 17:18:45 +10:00
Stenzek
9efe66509d D3D12: Fix crash/errors when switching MSAA modes while running 2016-02-28 17:18:44 +10:00