Scott Mansell
cf9a6f8477
Lint fixes
2023-02-09 18:36:20 +13:00
Scott Mansell
628af9d564
Fix builds with FFMPEG disabled
2023-02-09 18:36:20 +13:00
Scott Mansell
4422af1272
Cleanup headers
2023-02-09 18:36:20 +13:00
Scott Mansell
5803786beb
Move UseVertexDepthRange() out of Renderer
...
There wasn't really a good place for it, but this will do
2023-02-09 18:36:20 +13:00
Scott Mansell
2cfc02a116
Move m_prev_efb_format into FramebufferManager
2023-02-09 18:36:20 +13:00
Scott Mansell
9b5397abdb
Move WidescreenHeuristic to it's own class
...
It's about the only thing left in renderer
2023-02-09 18:36:20 +13:00
Scott Mansell
31cfe8250d
Lint fixes
2023-02-09 18:36:20 +13:00
Scott Mansell
11de923dcb
Move xfb tracking and IR scaling out of RenderBase
2023-02-09 18:36:20 +13:00
Scott Mansell
e009002411
Refactor ClearRegion
...
And fix bug where opengl was getting the wrong coordinates
2023-02-09 18:36:20 +13:00
Jordi Mallach
4d164fcb77
Allow building against system libspng
2023-02-06 13:30:46 +01:00
Scott Mansell
e98ab0784d
Merge pull request #11501 from iwubcode/abstract_texture_load_specify_layer
...
VideoBackends: add a way to load data into a specific level AND layer
2023-02-01 00:03:59 +13:00
OatmealDome
0f037a1af8
Merge pull request #10864 from TellowKrinkle/BetterLogicBlend
...
VideoCommon: Better logic op invert approximation
2023-01-31 01:55:55 -05:00
Scott Mansell
b753641dd4
Add some descriptions to new classes
2023-01-31 19:41:24 +13:00
Scott Mansell
abfc75f362
Cleanup headers
2023-01-31 19:41:24 +13:00
Scott Mansell
ec8f46b02c
Expose Renderer's Framecount
...
We don't want to move it, because we want to complete
this refactor without changing savestate version
2023-01-31 19:41:24 +13:00
Scott Mansell
3be63221c7
Renderer still needs to track swaps for savestates
2023-01-31 19:41:24 +13:00
Scott Mansell
3ae78b8e76
Also use events for config changed
2023-01-31 19:41:24 +13:00
Scott Mansell
0da69055d9
Split out everying remaining from Swap
2023-01-31 19:41:24 +13:00
Scott Mansell
2a18b34a73
Wire up frame before/after events
2023-01-31 19:41:24 +13:00
Scott Mansell
154cb4f722
Introduce an Event system to VideoCommon
...
A lot of the remaining complexity in Renderer is the massive Swap function
which tries to handle a bunch of FrameBegin/FrameEnd events.
Rather than create a new place for it. This event system will try
to distribute it all over the place
2023-01-31 19:41:24 +13:00
Scott Mansell
d6cd8de1a7
Delete unused EFBHasAlphaChannel function
2023-01-31 19:41:24 +13:00
Scott Mansell
9d125a6e43
Move ConfigChanged out of RenderBase
...
There is this nice VideoConfig file that's perfect for it
2023-01-31 19:41:24 +13:00
Scott Mansell
ca5ec13e13
Move GraphicsMod out of RenderBase
2023-01-31 19:41:24 +13:00
Scott Mansell
55d15bdd6e
Move utiltily drawing out of RenderBase
2023-01-31 19:41:24 +13:00
Scott Mansell
99d3e489ea
Move BoundingBox out of RenderBase
...
They were essentially just pass-though methods
2023-01-31 19:41:24 +13:00
Scott Mansell
8bc8e43dd6
Add virtual Initialize() to PerfQueryBase
...
Both DX12 and Vulkan already had one.
2023-01-31 19:41:24 +13:00
Scott Mansell
3c73707dfe
Fix dead code.
2023-01-31 19:41:24 +13:00
Scott Mansell
b007b8e104
Replace BeginUI/EndUI
2023-01-31 19:41:24 +13:00
Scott Mansell
18c799f0b6
Present: Set surface info before initializing ImGui
...
Otherwise you get subtle bugs in vulkan that take hours to track down.
2023-01-31 19:41:24 +13:00
Scott Mansell
f158ff300b
Handle VideoSoftware's present fallback better
...
Not a good idea to abuse bSupportsPostProcessing
2023-01-31 19:41:24 +13:00
Scott Mansell
26e00c3bb4
Fix warning about using & with bools
2023-01-31 19:41:23 +13:00
Scott Mansell
74d3b3443a
Fix warning about compare sign mismatch
2023-01-31 19:41:23 +13:00
Scott Mansell
8f5b196019
Minimise include polution from RenderState
2023-01-31 19:41:23 +13:00
Scott Mansell
2a2014af09
Implement AbstractGfx for Vulkan
2023-01-31 19:41:23 +13:00
Scott Mansell
58b70b2fb2
Don't set common globals from Video Backends
2023-01-31 19:41:23 +13:00
Scott Mansell
d37f83ffeb
Implement AbstractGfx for Software & Null
2023-01-31 19:41:23 +13:00
Scott Mansell
f0336a3129
Implement AbstractGfx for OpenGL
...
Mostly involves moving contents of OGLRender
to OGLGfx and OGLConfig
2023-01-31 18:46:04 +13:00
Scott Mansell
8a23629345
Split AbstractGfx out of Renderer
...
Almost all the virtual functions in Renderer are part of dolphin's
"graphics api abstraction layer", which has slowly formed over the
last decade or two.
Most of the work was done previously with the introduction of the
various "AbstractX" classes, associated with texture cache cleanups
and implementation of newer graphics APIs (Direct3D 12, Vulkan, Metal).
We are simply taking the last step and yeeting these functions out
of Renderer.
This "AbstractGfx" class is now completely agnostic of any details
from the flipper/hollywood GPU we are emulating, though somewhat
specialized.
(Will not build, this commit only contains changes outside VideoBackends)
2023-01-31 18:46:02 +13:00
Scott Mansell
e57eb04ed3
Rename FrameDump.{cpp,h} to FrameDumpFFMpeg.{cpp,h}
...
The name kind of conflicts with a new FrameDumper class
2023-01-31 18:45:29 +13:00
Scott Mansell
0d4537d60f
Move Presenting, Dumping and ImGui out of Renderer
2023-01-31 18:45:21 +13:00
Scott Mansell
c38c76abad
Refactor to remove virtual from RenderXFBToScreen
...
Slightly simplifies the upcoming refactor
2023-01-31 18:29:47 +13:00
Scott Mansell
a01d5283ec
TextureCache: Add content locking
...
Texture cache occasionally mutates textures for efficiency.
Which is awkward if we want to borrow those textures from texture cache
to do something else, such as a graphics debugger, or async presentation
on another thread.
Content locking provides a way to signal that the contents of a texture
cache entry should not change. Texture cache will be forced to use
alternative strategies.
2023-01-31 18:29:47 +13:00
Scott Mansell
606c18210d
TextureCache: Refactor with smart pointers
...
The whole ownership model was getting a bit of a mess, with a some
of special cases to deal with. And I'm planning to make it even more
complex in the future.
So here is some upfront work to convert it over to reference counted
pointers.
2023-01-31 18:29:47 +13:00
Scott Mansell
c1fd4a2013
Move TCacheEntry out of TextureCacheBase
...
Allows for fowards declaration
2023-01-31 18:29:47 +13:00
TellowKrinkle
600ad5f498
VideoCommon: Better logic op invert approximation
2023-01-30 14:04:37 -06:00
Pierre Bourdon
a2f4606d33
Merge pull request #11205 from TellowKrinkle/AutoPresent
...
VideoBackends:Metal: Default to presentDrawable when vsync is on
2023-01-30 09:01:18 +01:00
Scott Mansell
6d7303993c
Merge pull request #11509 from Sam-Belliveau/improved-speed-counter
...
Tie Speed to CPU Speed and not VPS
2023-01-30 20:41:03 +13:00
TellowKrinkle
1119a9ba32
VideoCommon: Don't create pipelines with no render targets
...
Some backends don't like it when you do that
2023-01-29 14:35:23 -06:00
Sam Belliveau
ebf114aef5
Tie Speed to CPU Speed and not VPS
2023-01-29 13:33:48 -05:00
iwubcode
7bea39b39e
VideoBackends: add a way to load data into a specific level AND layer, default to layer 0
2023-01-27 18:46:53 -06:00
Admiral H. Curtiss
0a343007cb
PowerPC: Parametrize LR macro.
2023-01-27 15:22:43 +01:00
Admiral H. Curtiss
be8d0b76ca
PowerPC: Remove PC macro.
2023-01-27 15:22:41 +01:00
Pierre Bourdon
9c9310bf44
Merge pull request #11208 from TellowKrinkle/CPUCull
...
Cull vertices on the CPU
2023-01-26 23:15:23 +01:00
TellowKrinkle
a0e6d7c173
VideoCommon: Explicitly disable fp_contract for CPUCull
2023-01-25 02:21:56 -06:00
TellowKrinkle
1be0149146
VideoCommon: Cull vertices on the CPU
2023-01-25 02:21:56 -06:00
TellowKrinkle
b170ef9651
VideoCommon: Add class for quickly transforming and culling vertices on the CPU
2023-01-25 02:21:56 -06:00
Pierre Bourdon
8d5edb13a9
Merge pull request #11367 from Sam-Belliveau/lagbegone
...
VideoCommon: VI Skip
2023-01-19 01:20:01 +01:00
Pierre Bourdon
a7d1683149
Merge pull request #11432 from Pokechu22/generic-vertex-loader-test-error
...
VertexLoader: Fix loading tangent/binormal caches with NormalIndex3
2023-01-17 23:30:29 +01:00
Sam Belliveau
23ad07b368
Add VISkip
2023-01-14 01:56:37 -05:00
Pokechu22
3910bdd68b
VertexLoader: Don't write position_cache if vertex is skipped
...
This is the behavior in the x64 and ARM64 vertex loaders. I don't know if it makes sense (the whole skipped vertex system seems jank, but several games behave incorrectly without it).
2023-01-13 15:38:00 -08:00
Pokechu22
16c0593a52
VertexLoader: Fix loading tangent/binormal caches with NormalIndex3
2023-01-13 15:38:00 -08:00
Pokechu22
2d53b73643
VertexLoaderTester: Add assertions for position/binormal/tangent caches
2023-01-13 15:38:00 -08:00
Pokechu22
c681d96d46
VertexLoaderTester: Use asserts instead of logs
...
Logs don't show up in unit tests, and since this is debugging functionality (though not enabled for tests by default) it's better to do it this way.
2023-01-13 15:38:00 -08:00
Sam Belliveau
bc1cc9eeb4
CoreTiming: Throttle Before Every Event Using Chrono
2023-01-06 17:21:17 -05:00
Sam Belliveau
588a72a4fc
PerformanceTracker: Add ownership of m_log_name.
2023-01-06 20:27:25 +01:00
Sam Belliveau
bc46089ab0
PerformanceTracker: Use shared_mutex instead of mutex so multiple threads can read at the same time.
2023-01-06 20:27:25 +01:00
Sam Belliveau
9143eb00fb
PerformanceMetrics: Fix Line Width Issue on Non HiDPI Screens
2023-01-06 20:27:17 +01:00
Mai
cc14d60bbb
Merge pull request #11402 from Pokechu22/too-many-indices
...
IndexGenerator: Fix off-by-one in GetRemainingIndices
2023-01-05 15:15:09 +00:00
Pokechu22
cefcd9c93c
IndexGenerator: Fix off-by-one in GetRemainingIndices
...
Fixes https://bugs.dolphin-emu.org/issues/13136 .
2023-01-04 10:42:00 -08:00
Pokechu22
6c58ba353c
IndexGenerator: Add assertion for overflow in GetRemainingIndices
...
This assertion is currently triggered by Pocoyo Racing (https://bugs.dolphin-emu.org/issues/13136 ).
2023-01-04 10:41:14 -08:00
Admiral H. Curtiss
2fdaf0a86e
HW/ProcessorInterface: Rename member variables to fit naming convention.
2023-01-04 03:17:26 +01:00
Admiral H. Curtiss
74e1577a2c
HW/ProcessorInterface: Refactor to class, move to Core::System.
2023-01-04 03:00:10 +01:00
Pokechu22
d91f340c86
VertexManagerBase: Move free space check to after the buffer is reset
...
Fixes incorrect logspam when the buffer needed to be reset on flushes (which we already were doing, but 52feed04db
moved it to after the check was made). This is https://bugs.dolphin-emu.org/issues/10312 .
I also converted it to an assert, as if this does happen, things are going to render incorrectly, so we want to make it obvious.
2023-01-03 17:06:51 -08:00
Admiral H. Curtiss
ed9915308b
Merge pull request #11386 from Pokechu22/manual-texture-sampling-stereoscopic-layer-bounds-check
...
PixelShaderGen: Clamp texture layer when using manual texture sampling with stereoscopic 3D
2023-01-03 18:07:06 +01:00
Admiral H. Curtiss
cb0a603c72
VideoCommon: De-globalize GeometryShaderManager class.
2022-12-29 15:33:19 +01:00
Admiral H. Curtiss
7e55cc9e90
VideoCommon/VertexShaderManager: Rename private variables.
2022-12-28 16:00:15 +01:00
Admiral H. Curtiss
50625728e0
VideoCommon: De-globalize VertexShaderManager class.
2022-12-28 15:52:29 +01:00
Pokechu22
f3df3a7727
PixelShaderGen: Clamp texture layer when using manual texture sampling with stereoscopic 3D
...
Otherwise, texelFetch() will use an out-of-bounds layer for game textures (that have 1 layer; EFB copies have 2 layers in stereoscopic 3D mode), which is undefined behavior (often resulting in a black image). The fast texture sampling path uses texture(), which always clamps (see https://www.khronos.org/opengl/wiki/Array_Texture#Access_in_shaders ), so it was unaffected by this difference.
2022-12-27 13:45:13 -08:00
Admiral H. Curtiss
4549fb4acb
VideoCommon/PixelShaderManager: Rename s_ variables.
2022-12-27 20:20:27 +01:00
Admiral H. Curtiss
725bd64ec2
VideoCommon: De-globalize PixelShaderManager class.
2022-12-27 20:13:24 +01:00
Sam Belliveau
6052a5ca9b
Fix Speed Counter Sample Size
2022-12-26 16:47:12 -05:00
Sam Belliveau
e1d078ada6
Remove Redundant Access Specifiers
2022-12-23 20:13:01 -05:00
Sam Belliveau
673f81c18a
New FrameTime/VBlank Analyzer + Graph
2022-12-23 19:52:53 -05:00
Minty-Meeo
05bebee802
Replace BitUtils with C++20: Counting Zeroes
...
With the upgrade to C++20, std::countl_zero and std::countr_zero can replace these home-spun implementations from the BitUtil.h library.
2022-12-21 04:17:00 -06:00
JosJuice
547d956278
Common: Use C++20 <bit> header in BitSet.h
2022-12-18 16:51:32 +01:00
Admiral H. Curtiss
c486baffe6
VideoCommon/PixelEngine: Pass Core::System to methods.
2022-12-11 21:57:30 +01:00
Admiral H. Curtiss
ec8aaf1f30
VideoCommon/PixelEngine: Refactor to class, move to Core::System.
2022-12-11 21:57:19 +01:00
Admiral H. Curtiss
ceae4242fc
VideoCommon/Fifo: Pass Core::System to methods.
2022-12-10 17:16:26 +01:00
Admiral H. Curtiss
5624dd6d39
VideoCommon/Fifo: Refactor to class, move to Core::System.
2022-12-10 17:16:19 +01:00
Admiral H. Curtiss
8a3b8a925e
Core: Add option to force linear texture filtering.
2022-12-09 02:02:16 +01:00
Admiral H. Curtiss
839db591d9
HW/Memmap: Refactor Memory to class, move to Core::System.
2022-12-03 13:27:02 +01:00
Admiral H. Curtiss
6941d2e7e6
VideoCommon/CommandProcessor: Refactor to class, move to Core::System.
2022-11-29 08:15:01 +01:00
Admiral H. Curtiss
c9558ecb4c
CoreTiming: Refactor to class.
2022-11-27 03:47:12 +01:00
Mai
7be4c90f67
Merge pull request #11166 from AdmiralCurtiss/mmio-system
...
HW: Pass System to MMIO handlers.
2022-11-24 00:58:45 +00:00
Pokechu22
cc5640245c
Fix build errors related to formatting non-scoped enums
2022-11-23 13:45:43 -08:00
Admiral H. Curtiss
545fee9c94
Core/CommandProcessor: Reformat single/dual core dependent MMIO handlers.
2022-11-23 21:58:18 +01:00
Admiral H. Curtiss
0a6fdb9c13
HW: Pass System to MMIO handlers.
2022-11-23 05:52:21 +01:00
Mai
a47ed2124f
Merge pull request #11253 from AdmiralCurtiss/core-timing-events-pass-system
...
CoreTiming: Pass Core::System to Events.
2022-11-23 04:46:11 +00:00
Mai
cb232155d9
Merge pull request #11298 from Pokechu22/vertexloader-no-DataReader
...
VertexLoader: Eliminate use of DataReader
2022-11-23 04:40:53 +00:00
Pokechu22
e13094766d
Fix VertexLoader.cpp using the wrong size for texture matrix indices without a corresponding texture
...
This regressed in 0a906f553f
, I think (though I haven't confirmed it). Mario Tennis and Luigi's Mansion both use these for some reason (as far as I can tell, the data isn't actually used; it's just extra data included for no reason)
2022-11-22 17:49:54 -08:00