Commit Graph

4767 Commits

Author SHA1 Message Date
31cfe8250d Lint fixes 2023-02-09 18:36:20 +13:00
11de923dcb Move xfb tracking and IR scaling out of RenderBase 2023-02-09 18:36:20 +13:00
e009002411 Refactor ClearRegion
And fix bug where opengl was getting the wrong coordinates
2023-02-09 18:36:20 +13:00
4d164fcb77 Allow building against system libspng 2023-02-06 13:30:46 +01:00
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
0f037a1af8 Merge pull request #10864 from TellowKrinkle/BetterLogicBlend
VideoCommon: Better logic op invert approximation
2023-01-31 01:55:55 -05:00
b753641dd4 Add some descriptions to new classes 2023-01-31 19:41:24 +13:00
abfc75f362 Cleanup headers 2023-01-31 19:41:24 +13:00
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
3be63221c7 Renderer still needs to track swaps for savestates 2023-01-31 19:41:24 +13:00
3ae78b8e76 Also use events for config changed 2023-01-31 19:41:24 +13:00
0da69055d9 Split out everying remaining from Swap 2023-01-31 19:41:24 +13:00
2a18b34a73 Wire up frame before/after events 2023-01-31 19:41:24 +13:00
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
d6cd8de1a7 Delete unused EFBHasAlphaChannel function 2023-01-31 19:41:24 +13:00
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
ca5ec13e13 Move GraphicsMod out of RenderBase 2023-01-31 19:41:24 +13:00
55d15bdd6e Move utiltily drawing out of RenderBase 2023-01-31 19:41:24 +13:00
99d3e489ea Move BoundingBox out of RenderBase
They were essentially just pass-though methods
2023-01-31 19:41:24 +13:00
8bc8e43dd6 Add virtual Initialize() to PerfQueryBase
Both DX12 and Vulkan already had one.
2023-01-31 19:41:24 +13:00
3c73707dfe Fix dead code. 2023-01-31 19:41:24 +13:00
b007b8e104 Replace BeginUI/EndUI 2023-01-31 19:41:24 +13:00
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
f158ff300b Handle VideoSoftware's present fallback better
Not a good idea to abuse bSupportsPostProcessing
2023-01-31 19:41:24 +13:00
26e00c3bb4 Fix warning about using & with bools 2023-01-31 19:41:23 +13:00
74d3b3443a Fix warning about compare sign mismatch 2023-01-31 19:41:23 +13:00
8f5b196019 Minimise include polution from RenderState 2023-01-31 19:41:23 +13:00
2a2014af09 Implement AbstractGfx for Vulkan 2023-01-31 19:41:23 +13:00
58b70b2fb2 Don't set common globals from Video Backends 2023-01-31 19:41:23 +13:00
d37f83ffeb Implement AbstractGfx for Software & Null 2023-01-31 19:41:23 +13:00
f0336a3129 Implement AbstractGfx for OpenGL
Mostly involves moving contents of OGLRender
to OGLGfx and OGLConfig
2023-01-31 18:46:04 +13:00
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
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
0d4537d60f Move Presenting, Dumping and ImGui out of Renderer 2023-01-31 18:45:21 +13:00
c38c76abad Refactor to remove virtual from RenderXFBToScreen
Slightly simplifies the upcoming refactor
2023-01-31 18:29:47 +13:00
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
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
c1fd4a2013 Move TCacheEntry out of TextureCacheBase
Allows for fowards declaration
2023-01-31 18:29:47 +13:00
600ad5f498 VideoCommon: Better logic op invert approximation 2023-01-30 14:04:37 -06:00
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
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
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
ebf114aef5 Tie Speed to CPU Speed and not VPS 2023-01-29 13:33:48 -05:00
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
0a343007cb PowerPC: Parametrize LR macro. 2023-01-27 15:22:43 +01:00
be8d0b76ca PowerPC: Remove PC macro. 2023-01-27 15:22:41 +01:00
9c9310bf44 Merge pull request #11208 from TellowKrinkle/CPUCull
Cull vertices on the CPU
2023-01-26 23:15:23 +01:00
a0e6d7c173 VideoCommon: Explicitly disable fp_contract for CPUCull 2023-01-25 02:21:56 -06:00
1be0149146 VideoCommon: Cull vertices on the CPU 2023-01-25 02:21:56 -06:00
b170ef9651 VideoCommon: Add class for quickly transforming and culling vertices on the CPU 2023-01-25 02:21:56 -06:00