184 Commits
Author SHA1 Message Date
LibretroAdmin 8a022edefc Remove the video statistics nothing reads
Every Statistics counter, the projection copies and the widescreen ratio
averages were only written since the debug UI went; the counters bumped
per primitive, per triangle and per pixel in the software rasterizer.
The widescreen heuristic keeps only the two vertex counts it compares,
from one projection/viewport ratio per flush instead of up to three.
GetCPRegInfo, the CP register describer, has no caller.
2026-11-09 20:17:05 +01:00
LibretroAdmin 7fc9d4e74e Remove the BP and XF register descriptions
GetBPRegInfo and the GetXF*Info, GetXFMemName and GetXFMemDescription
functions formatted register writes for the FIFO analyzer's UI, which
the core does not have; nothing called them.
2026-11-09 09:01:19 +01:00
LibretroAdmin 85b64dc7b0 VideoCommon: video globals and backend objects as plain pointers 2026-11-08 03:21:40 +01:00
LibretroAdmin f7d5095739 Core, InputCommon, VideoCommon: remove the remaining locks
Every std::mutex, lock_guard, unique_lock, scoped_lock,
condition_variable, call_once and semaphore left in Source/Core is
replaced by a lock-free design:

- Input: the device list, control bindings, stick calibration and
  default device are published snapshots read under a quiesce; a
  rebind requested while another thread is rebinding is handed to
  that thread instead of waited for.
- WiimoteReal: the pool thread owns the slots and runs commands from
  an MPSC queue; the active Wiimotes are atomic slots.
- EXI/SI/IOS devices: socket and packet traffic goes through SPSC
  rings or MPSC handoffs owned by one thread; USB scanning publishes
  its device list, and libusb transfers drain through a CallGate.
- Memory cards: the flush thread applies change records queued by
  the CPU thread.
- Custom assets: loads are scheduled as a published batch with an
  atomic cursor, results come back over an MPSC stack, and busy
  assets are skipped and retried.
- D3D state and GL program caches use insert-only atomic maps
  (Common/AtomicHashMap.h).
- Logging appends with O_APPEND / FILE_APPEND_DATA; FatFs reports
  busy instead of waiting; per-socket WSAStartup/WSACleanup.

Deleted as unused by the libretro core: the profiler, the FIFO
recorder, the volume verifier, the touch InputOverrider and the
GameCube adapter's libusb path.
2026-11-05 20:11:31 +01:00
LibretroAdmin 74999e2082 Remove analytics
Drop DolphinAnalytics and Common/Analytics along with every game-quirk,
game-start, performance-sample and GPU-bug-override report, the
Main.Analytics settings, and the Android opt-in dialog, settings
entries, JNI hooks and session-timestamp tracking that only fed it.
DriverDetails loses its to_string helpers and stored driver name,
which only built the bug-override report.
2026-11-05 04:48:00 +01:00
Tillmann Karras 51e488e84a VideoCommon: ignore zero-stride EFB/XFB copies
just clear if requested
2026-03-28 03:05:08 +00:00
Jordan Woyak cc331feb02 VideoCommon: Make Presenter aware of the next swap time to eliminate unsafe usage of GetTicks() with ImmediateXFB + DualCore. 2025-11-11 20:01:52 -06:00
Jordan WoyakandDentomologist f289b06e0d Common: Make HookableEvent use non-static data.
Co-authored-by: Dentomologist <[email protected]>
2025-11-02 17:30:43 -06:00
iwubcode ee7c476e24 VideoCommon: move global variables out of BPFunctions 2025-10-31 13:27:50 -05:00
iwubcode 14459bcc1b VideoBackends / VideoCommon: rename member variables in RenderState to be consistent 2025-08-23 13:50:22 -05:00
Dentomologist 3cc00c0676 DolphinAnalytics: Use Pascal case for GameQuirk enum 2025-08-14 13:54:23 -07:00
Jordan Woyak 4aa056dd4d BPStructs: Add TODO for unsafe usage of GetTicks. 2025-04-08 19:58:31 -05:00
JosJuice c204b33314 VideoCommon/BPStructs: Add a missing bounds check
Happened to find this when working on the previous commit.
2024-04-20 18:31:08 +02:00
JosJuice 3cfa233b63 VideoCommon: Use GetSpanForAddress safely in texture decoding
Now only VertexLoader remains... But that one might be tricky.
2024-04-20 18:31:08 +02:00
JosJuice 54773bc5d2 VideoCommon: Remove calls to GetPointer
This fourth part of my series of patches to get rid of unsafe uses of
GetPointer takes care of the "easy" cases in VideoCommon. Three uses of
GetPointer now remain in Dolphin: VertexLoaderManager, TextureInfo, and
the software renderer's TextureSampler.
2024-04-09 21:08:57 +02:00
Lioncash cac66317aa VideoCommon/Statistics: Remove global system accessor from s_after_frame_event
Instead, we make the event take a reference to the system and then pass
it in when the event is triggered.

This does introduce two other accessors, but these are much easier to
refactor out over time, and without modification to the existing event
interface.
2024-01-31 13:12:09 -05:00
Admiral H. Curtiss 9a3e770c23 Migrate SConfig::bWii to System. 2024-01-31 12:54:07 +01:00
Admiral H. Curtiss 637fd49909 FifoRecorder: Move instance to System. 2024-01-12 15:06:06 +01:00
Admiral H. Curtiss fc2ec826d4 FifoPlayer: Move instance to System. 2024-01-05 20:15:18 +01:00
Lioncache e539dbba4c VideoCommon/PixelEngine: Passthrough system instance in constructor
Simplifies the interface in terms of usage
2023-12-22 14:19:26 -05:00
iwubcode 849a0c13b5 VideoCommon: move xf state management to its own class, so changes can be detected in places other than VertexShaderManager 2023-11-26 16:27:26 -06:00
Pokechu22 3984d1964b Fix accidental fallthrough in BPStructs
This caused us to update the indirect texture information in shaders more often than we needed to, which probably doesn't matter in practice since it's only used in ubershaders and copyyscale and stride are generally only updated before EFB/XFB copies, which generally will have other changes afterwards.
2023-11-12 10:39:56 -08:00
Pokechu22 da8407e01c Add descriptions for more BP registers 2023-11-11 23:32:17 -08:00
Pokechu22 ea41d0e384 Convert BPMEM_LOADTLUT1 to a struct 2023-11-11 23:32:17 -08:00
Pokechu22 6bad17b170 Rename bpmem.copyMipMapStrideChannels to bpmem.copyDestStride
As far as I can tell, it has nothing to do with the mipmap/half_scale functionality, but does change based on the width of the destination texture (and the destination texture is half the width if half_scale is set). The comment that was there (which dates back to the initial megacommit) seems to not have accounted for the width aspect; it was first used as an actual stride in bbbe898839 (the first commit that used it at all).
2023-11-11 23:32:14 -08:00
Dentomologist 9cabf20aaa Fifo: Convert MemoryUpdate::Type to enum class 2023-09-02 18:19:26 -07:00
Admiral H. Curtiss 069280ddc6 HW/VideoInterface: Refactor to class. 2023-03-11 12:50:35 +01:00
Scott Mansell e0a1631659 Add comment about "end of frame" 2023-02-09 18:36:20 +13:00
Scott Mansell 4422af1272 Cleanup headers 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 3be63221c7 Renderer still needs to track swaps for savestates 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 99d3e489ea Move BoundingBox out of RenderBase
They were essentially just pass-though methods
2023-01-31 19:41:24 +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
Admiral H. Curtiss cb0a603c72 VideoCommon: De-globalize GeometryShaderManager class. 2022-12-29 15:33:19 +01:00
Admiral H. Curtiss 50625728e0 VideoCommon: De-globalize VertexShaderManager class. 2022-12-28 15:52:29 +01:00
Admiral H. Curtiss 725bd64ec2 VideoCommon: De-globalize PixelShaderManager class. 2022-12-27 20:13:24 +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 5624dd6d39 VideoCommon/Fifo: Refactor to class, move to Core::System. 2022-12-10 17:16:19 +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 c9558ecb4c CoreTiming: Refactor to class. 2022-11-27 03:47:12 +01:00
Robin Kertels 779fe13e62 VideoCommon: Update EFB peek cache on draw done and tokens
Massively improves performance in Mario Galaxy on Android.
2022-10-01 18:08:38 +02:00
Pokechu22 39569392bd VideoCommon: Add statistics for draw done and token commands 2022-09-26 16:19:54 -07:00
Pokechu22 3fb09e3297 Fifo analyzer: Improve some BP descriptions
Mainly, the improvements are passing in the current command ID so that e.g. stage numbers can be directly included, instead of saying 0/1 or even/odd.
2022-08-29 11:10:05 -07:00
Pokechu22 bed278d3b7 Create dedicated enum for EFB/XFB gamma correction
This also changes the behavior for the invalid gamma value, which was confirmed to behave the same as 2.2.

Note that currently, the gamma value is only used for XFB copies, even though hardware testing indicates it also works for EFB copies.  This will be changed in a later commit.
2022-07-15 12:29:40 -07:00
Pokechu22 dd41a72378 Only use intensity formats if both intensity_fmt and auto_conv are set
auto_conv is normally always set for EFB copies, but hardware testing indicates that intensity_fmt does nothing if auto_conv is not set.
2022-07-15 12:29:40 -07:00
Pokechu22 076392a0f6 VideoCommon: Rework scissor handling
This increases accuracy, fixing the white rendering in Major Minor's Majestic March.  However, the hardware backends can only have one viewport and scissor rectangle at a time, while sometimes multiple are needed to accurately emulate what is happening.  If possible, this will need to be fixed later.
2022-04-16 10:26:11 -07:00
Pokechu22 b85b35d5ea VideoCommon: Create dedicated structs for scissor pos/offset 2022-04-16 10:26:10 -07:00