summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VideoBackendBase.cpp
AgeCommit message (Collapse)Author
2024-11-03GeneralWidget: Recommend default video backend in tooltipDentomologist
Recommend the platform's default video backend in the Backend tooltip instead of always recommending OpenGL.
2024-11-03VideoBackendBase: Clarify function nameDentomologist
Rename GetDefaultBackendName to GetDefaultBackendConfigName to distinguish it from the display name.
2024-10-04Partially revert "Revert "Audit uses of IsRunning and GetState""JosJuice
This reverts the revert commit bc67fc97c39628c76a4dbca411b0e8a9bfaf726a, except for the changes in BaseConfigLoader.cpp, which caused the bug that made us revert 72cf2bdb87f09deff22e1085de3290126aa4ad05. PR 12917 contains an improved change to BaseConfigLoader.cpp, which can be merged (or rejected) independently. A few changes have also been made based on review comments.
2024-09-27VideoBackendBase: Only populate backend info when uninitializedDentomologist
Prevent potential issues when creating the Graphics window (and thus calling PopulateBackendInfo) while the core state is Stopping, like we already do while it's Starting or Running.
2024-09-26VideoBackendBase: Check Core state in PopulateBackendInfoDentomologist
Remove the PopulateBackendInfoFromUI function, which had a single caller (GraphicsWindow::OnBackendChanged) and checked that the core wasn't running or starting before calling PopulateBackendInfo. Move the core state check into PopulateBackendInfo and have OnBackendChanged call that instead. This guarantees the check is performed by all callers of PopulateBackendInfo, preventing potential reintroduction of the crash fixed in 3d4ae63f if another call to PopulateBackendInfo is added. As of the previous commit the only other caller of PopulateBackendInfo is Core::Init shortly before s_state is set to Starting, so it will always pass the check and so maintain its current behavior.
2024-09-26GraphicsWindow: Fix crash when opening during emulation startupDentomologist
Fix a crash when opening the Graphics window for the first time during emulation startup when the backend is Vulkan, D3D11, or D3D12. Don't call PopulateBackendInfo() from the Host thread when the core is starting up. First, the function has already been called in Core::Init() so we don't need to again. More importantly, PopulateBackendInfo() calls g_video_backend->InitBackendInfo(), and the Vulkan and D3D implementations of those functions load and then unload libraries (and their associated function pointers) which are potentially in use by other threads. This crash was reliably reproducible with the following steps: 1) Select an affected backend. 2) Enable "Compile Shaders Before Starting" 3) Delete the cached shaders (but not the .uidcache file) for the game you're testing. 4) Close and reopen Dolphin. 5) Start the game. 6) While the game is still booting or compiling shaders, open the Graphics window for the first time in that Dolphin session. Fixes https://bugs.dolphin-emu.org/issues/13634.
2024-09-06Texture Dumping: Show OSD message on startup and when toggledDentomologist
If texture dumping is enabled, notify the user on emulation startup using an On Screen Display message. Also notify the user when texture dumping is toggled. Addresses https://bugs.dolphin-emu.org/issues/12445.
2024-05-01Core::IsRunning: Avoid Global System Accessormitaclaw
2024-04-20VideoCommon: Use GetSpanForAddress safely in texture decodingJosJuice
Now only VertexLoader remains... But that one might be tricky.
2024-03-15VideoCommon: Prefer D3D11/12 over OpenGL on Windows.Jordan Woyak
2024-01-20VideoCommon: Only initialize Bounding Box if supported by GPU/driver.Admiral H. Curtiss
2023-12-22VideoCommon/PixelEngine: Passthrough system instance in constructorLioncache
Simplifies the interface in terms of usage
2023-12-20VideoCommon/CommandProcessor: Pass system instance through constructorLioncache
Makes the use of the interface a little less noisy, especially given how much of the interface depends on an instance being present.
2023-12-18VideoCommon/Fifo: Pass system instance through FifoManager constructorLioncache
Given how many member functions make use of the system instance, it's likely just better to pass the system instance in on construction. Makes the interface a little less noisy to use.
2023-11-26VideoCommon: move xf state management to its own class, so changes can be ↵iwubcode
detected in places other than VertexShaderManager
2023-09-03VideoCommon: Deinit Graphics Mod Manager implicitlySketch
2023-06-08VideoCommon: Pass WindowSystemInfo to InitBackendInfoPokechu22
2023-05-06DolphinAnalytics: Add READS_BOUNDING_BOX game quirkPokechu22
2023-02-15Keep Vulkan precedence over OpenGLJosh
2023-02-15VideoBackend: Make Metal Default on MacOSJosh
2023-02-09Make sure pixel shaders pick up Initial EFB ScaleScott Mansell
2023-02-09Move WidescreenHeuristic to it's own classScott Mansell
It's about the only thing left in renderer
2023-01-31Cleanup headersScott Mansell
2023-01-31Move GraphicsMod out of RenderBaseScott Mansell
2023-01-31Move BoundingBox out of RenderBaseScott Mansell
They were essentially just pass-though methods
2023-01-31Add virtual Initialize() to PerfQueryBaseScott Mansell
Both DX12 and Vulkan already had one.
2023-01-31Implement AbstractGfx for VulkanScott Mansell
2023-01-31Don't set common globals from Video BackendsScott Mansell
2023-01-31Implement AbstractGfx for OpenGLScott Mansell
Mostly involves moving contents of OGLRender to OGLGfx and OGLConfig
2023-01-31Split AbstractGfx out of RendererScott Mansell
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-31Move Presenting, Dumping and ImGui out of RendererScott Mansell
2023-01-31TextureCache: Refactor with smart pointersScott Mansell
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.
2022-12-29VideoCommon: De-globalize GeometryShaderManager class.Admiral H. Curtiss
2022-12-28VideoCommon: De-globalize VertexShaderManager class.Admiral H. Curtiss
2022-12-27VideoCommon: De-globalize PixelShaderManager class.Admiral H. Curtiss
2022-12-11VideoCommon/PixelEngine: Pass Core::System to methods.Admiral H. Curtiss
2022-12-11VideoCommon/PixelEngine: Refactor to class, move to Core::System.Admiral H. Curtiss
2022-12-10VideoCommon/Fifo: Pass Core::System to methods.Admiral H. Curtiss
2022-12-10VideoCommon/Fifo: Refactor to class, move to Core::System.Admiral H. Curtiss
2022-11-29VideoCommon/CommandProcessor: Refactor to class, move to Core::System.Admiral H. Curtiss
2022-10-22VideoCommon: Add reasons for disabled VS expandTellowKrinkle
2022-09-19VideoBackends - Enable Metal without VulkanJosh
2022-07-21VideoBackends: Add Metal rendererTellowKrinkle
2022-07-13VideoCommon: Clear backend_info before populatingTellowKrinkle
2022-06-01VideoBackendBase: Remove __builtin_available for macOS 10.14OatmealDome
2022-05-16Verify graphics config validity after populating the backend infoPokechu22
... and refresh the config before populating the backend info, as the config (specifically iAdapter) needs to be set to correctly populate the backend info. Before, the list of valid antialiasing modes was always determined from the first adapter on the list on startup, regardless of the adapter the user selected.
2022-01-22VideoCommon: Move logging/seen check for unknown opcodes into CommandProcessorPokechu22
That way, they're in the same place the panic alerts are generated.
2022-01-09Config: Port dual core setting to new config system.Admiral H. Curtiss
2021-10-12TMEM: Handle savestate and initScott Mansell
2021-08-03VI: Implement post-scanout XFB outputTechjar
This adds about a frame of latency, and since most games don't change VI registers during scanout, we can get away with outputting the XFB at the start of scanout. WWE Crush Hour is the (only currently known) exception, which has flickering problems when doing it this way. This adds a path to perform the output at the end of scanout, and gates it behind an option which defaults to using the latency-reducing pre-scanout path.