iwubcode
989ecca235
VideoCommon: add a texture pool for resource management
2025-11-23 11:04:24 -06:00
iwubcode
2d21a99205
VideoCommon: separate the concept of a 'resource' from an 'asset'. A resource is potentially multiple assets that are chained together but represent one type of data to the rest of the system. An example is a 'material'. A 'material' is a collection of textures, a custom shader, and some metadata that all comes together to form what the concept of the material is. There will be a 'material' resource. For now, start small by introducing the interface and change our texture loading which used assets from the old resource manager, to an actual resource.
2025-11-23 11:04:24 -06:00
iwubcode
59d9c1772a
VideoCommon: rename 'IsAnisostropicEnhancementSafe' to 'IsAnisotropicEnhancementSafe' in TextureCacheBase
2025-11-23 11:04:24 -06:00
JosJuice
2d9f317f04
Core: Make s_cpu_thread_job_finished a local variable
...
Having it be static leads to a race condition if two different threads
call RunOnCPUThread with wait_for_completion set to true. (There's
currently nobody calling RunOnCPUThread from anything other than the
host thread, so this hasn't led to any consequences yet.)
2025-11-23 15:17:20 +01:00
JosJuice
aeac5f1a58
Merge pull request #14107 from jordan-woyak/mGBA-version-bump
...
Externals: Update mGBA to latest master.
2025-11-23 14:38:39 +01:00
JosJuice
5769fc7372
Merge pull request #14134 from jordan-woyak/mercusys-rtl-firmware
...
Bluetooth/RealtekFirmwareLoader: Add Mercusys MA530 to list.
2025-11-23 14:29:08 +01:00
JMC47
65f39c076e
Merge pull request #14149 from iwubcode/shader_asset_vector_properties
...
VideoCommon: update ShaderAsset to use a vector of properties
2025-11-23 06:34:45 -05:00
Jordan Woyak
e5ad814142
Core/DiscIO: Add a setting to load the running game into memory via CachedBlobReader.
2025-11-23 05:17:22 -06:00
Jordan Woyak
d7c3513eae
DiscIO: Add CachedBlobReader which takes another BlobReader and reads it into memory in the background.
2025-11-23 05:17:22 -06:00
Jordan Woyak
fbb864a0b5
MemArena/LazyMemoryRegion: Add EnsureMemoryPagesWritable function to ensure a region of bytes is writable without the caller needing to be aware of the windows-only BLOCK_SIZE value.
2025-11-23 05:17:22 -06:00
Sintendo
a18cf5693e
JitArm64: Remove some unused includes
2025-11-23 09:54:53 +01:00
Sintendo
419f90107d
JitArm64_Integer: Merge subfx and subfcx
...
The optimizations for subfcx introduced in #13852 also apply to subfx.
Rather than duplicating the logic, we merge the handlers, like we did
in #10120 for x86.
2025-11-23 09:54:45 +01:00
JosJuice
490615c72a
Merge pull request #14142 from JosJuice/directiofile-cant-create-saf
...
Common: Treat DirectIOFile as unable to create SAF files
2025-11-23 09:50:44 +01:00
Jordan Woyak
151d295b2c
Merge pull request #14148 from jordan-woyak/hookable-event-add-remove-inside-trigger
...
HookableEvent: Allow hooks to be added and removed from within a Trigger callback.
2025-11-23 02:20:47 -06:00
Jordan Woyak
80da48f631
DolphinQt: Add "Poll Rate" display to GCAdapter config window. The window now refreshes every 500ms. SetAdapterCallback is no longer used.
2025-11-23 02:15:47 -06:00
Jordan Woyak
f9a5051bae
GCAdapter: Calculate poll rate for display in UI. It's currently updated every 50 reads.
2025-11-23 02:06:39 -06:00
JosJuice
30dbcb2f80
Merge pull request #14128 from jordan-woyak/fix-run-on-object-race
...
DolphinQt/QtUtils: Simplify RunOnObject and eliminate Common::Event race. Introduce Common::OneShotEvent class.
2025-11-22 21:52:17 +01:00
Jordan Woyak
6464ed9e6b
Merge pull request #14157 from jordan-woyak/fix-rush-speed-display
...
CoreTiming: Fix percent speed display when "Rush Frame Presentation" is enabled.
2025-11-22 14:46:00 -06:00
JosJuice
f4f7424a9f
Merge pull request #13583 from LillyJadeKatrin/retroachievements-android
...
Android Support for RetroAchievements
2025-11-22 17:00:03 +01:00
Jordan Woyak
cab8d7ca01
CoreTiming: Fix percent speed display when "Rush Frame Presentation" is enabled.
2025-11-22 05:04:09 -06:00
JMC47
3fd8d072bf
Merge pull request #14037 from jordan-woyak/presentation-timing
...
Add "Rush Frame Presentation" and "Smooth Early Presentation" settings.
2025-11-22 04:49:03 -05:00
JMC47
ccc19aafe0
Merge pull request #14119 from jordan-woyak/si-status-response-length
...
HW/SI: Fix CMD_STATUS response lengths.
2025-11-22 04:38:12 -05:00
Jordan Woyak
127e068e51
Common/Result: Swap order of template parameters to match C++26's std::expected, make all member functions constexpr, and add moving "unexpected" conversion constructor for consistency.
2025-11-21 19:24:48 -06:00
oltolm
58b3c14c23
AudioCommon / VideoBackends / WinUpdater - cleanup WRL code
2025-11-22 01:23:39 +01:00
Jordan Woyak
11318e0be5
HookableEvent: Allow hooks to be added and removed from within a Trigger callback. This fixes a deadlock in FIFOFifoRecorder.
2025-11-21 16:58:20 -06:00
iwubcode
2c646cec40
VideoCommon: update ShaderAsset to use a vector of properties, this way we ensure the order of these properties match the order of the material
2025-11-21 14:31:10 -06:00
iwubcode
1f083a60c9
VideoCommon: update ShaderAsset to remove requirement of the code name being in the shader source, this just makes it more difficult to iteratively test changes, assume shader devs know what they are doing
2025-11-21 14:29:24 -06:00
Jordan Woyak
c9b0e4928a
DolphinQt/OnScreenDisplayPane: Swap the positions of "Show Performance Graphs" and "Show Speed Colors".
2025-11-21 01:35:28 -06:00
Jordan Woyak
8efc4086f0
DolphinQt/OnScreenDisplayPane: Rename "Graph Update Rate" back to "Performance Sample Window" and don't disable it based on "Show Performance Graphs".
2025-11-21 01:35:22 -06:00
iwubcode
506e378289
VideoCommon: remove template parameter from lock guards in AsyncShaderCompiler, let type deduction do its thing and improve readability
2025-11-21 01:18:35 -06:00
iwubcode
75c66e35c6
VideoCommon: add method to async shader compiler to clear pending/completed work (used on shutdown), this will in turn clear up any resources that the worker items may have held onto
2025-11-21 01:17:45 -06:00
iwubcode
6e13a7d7e9
VideoCommon: fix MaterialAsset so that boolean parameters are written to memory as integers, matching the format internally expected by shaders
2025-11-20 23:51:34 -06:00
Jordan Woyak
4f30aaf1ca
Merge pull request #13152 from Naim2000/sdlock
...
SDIO: report write lock status
2025-11-20 15:04:39 -06:00
iwubcode
a4599a1add
VideoCommon: avoid assuming global state exists for 'EndUtilityDrawing', use last stored viewport/scissor rect instead
2025-11-20 00:35:01 -06:00
Jordan Woyak
2719a5673e
Merge pull request #14121 from jordan-woyak/warn-silence
...
Common and VideoCommon: Silence a few warnings.
2025-11-19 22:09:19 -06:00
Jordan Woyak
1a71f0fa2e
SDIO: Remove file "good" checks so errors are properly produced.
2025-11-19 21:05:57 -06:00
Naim2000
f1f8b0a825
SDIO: the CID/CSD are sent a bit differently
2025-11-19 21:05:54 -06:00
Naim2000
227c4e0515
SDIO: report actual error if writes are disabled
2025-11-19 20:11:05 -06:00
Naim2000
2e340ab160
SDIO: report write lock status
2025-11-19 18:58:13 -06:00
Jordan Woyak
2acb49544c
Merge pull request #13539 from tygyh/DiscIO-Remove-redundant-casts
...
DiscIO: Remove redundant casts
2025-11-19 17:40:42 -06:00
Jordan Woyak
41b6ab40e1
Merge pull request #13619 from y21/usbv5_getversion_size
...
Check buffer out/size in HID_USBv5/USB_VEN GetVersion Ioctl
2025-11-19 17:32:33 -06:00
Jordan Woyak
d0341b3bfc
Merge pull request #14127 from jordan-woyak/movie-cpu-thread-guard
...
Movie: Replace a blocking RunOnCPUThread call with a CPUThreadGuard.
2025-11-19 13:43:05 -06:00
Jordan Woyak
9f0a5c2a37
Core: Allow CPUManager::SetStepping to be called from the CPU thread so a call doesn't need to be routed through the host thread on boot.
2025-11-19 02:59:01 -06:00
Jordan Woyak
19f1d329c9
Core: Remove unused HostMessageID enum members.
2025-11-19 02:43:44 -06:00
LillyJadeKatrin
ddced1a070
RetroAchievements - Android login callback
...
Modify the RetroAchievements login code in Android to pass in a callback, pop a message if login fails, close the login box if it succeeds.
2025-11-18 20:40:15 -05:00
JosJuice
9883235c0c
Common: Treat DirectIOFile as unable to create SAF files
...
In 405baed805 , we made the assumption that whether OpenAndroidContent
is able to create a new file depends on the open mode, the document
provider, and the positions of the celestial bodies. However, I'm
fairly sure that it can't create files at all as currently implemented.
First, ContentResolver.openFileDescriptor is documented as throwing
FileNotFoundException if the file doesn't exist. Now, the SAF
documentation is notoriously unreliable on matters like these, and
document providers can do whatever they want anyway, so we can't
actually trust this to mean that FileNotFoundException will always
be thrown if the file doesn't exist. But second, the Dolphin function
ContentHandler.unmangle is also unable to handle files that don't
already exist (unless the passed-in URI isn't mangled to begin with,
but to the best of my knowledge, there's no way to get a non-mangled URI
for a file that doesn't exist (unless you make assumptions about how the
document provider's URI scheme works, which we don't do in Dolphin)).
Summed up, it looks a lot like OpenAndroidContent can't create files,
or at the very least can't do so reliably.
Therefore I'm making DirectIOFile throw an assertion and return false
in situations where it's being asked to create a file under SAF. For
reference, there's no code in Dolphin that actually tries to create a
file under SAF. In all instances where we use SAF to write to files, the
file is created by the system file picker before it returns the URI of
the file to us.
What does this change gain us? First, if someone in the future tries to
use DirectIOFile to create a file under SAF, they'll be immediately
informed that this isn't supported rather than discovering it doesn't
work and chalking it up to SAF being bad for unpredictable reasons.
Second, we get rid of a call to File::Exists, which is a notable
performance improvement for game list scanning due to SAF and Dolphin's
"unmangling" being bad for reasons that unfortunately are entirely
predictable to those of us who have stared into the SAF void.
I've tested that game list scanning and game conversion still works.
2025-11-18 23:17:03 +01:00
Jordan Woyak
5a6fce31b2
DolphinQt/QtUtils: Simplify RunOnObject and eliminate Common::Event race.
2025-11-18 14:19:21 -06:00
Jordan Woyak
d25742fe8b
Common: Introduce a OneShotEvent class. Unlike Common::Event, OneShotEvent is safe in situations when being immediately destructed.
2025-11-18 14:19:21 -06:00
Jordan Woyak
605cc579a4
Common/Functional: Add InvokerOf template which can convert function pointers to functor types.
2025-11-18 14:19:21 -06:00
Jordan Woyak
1b63776f2d
Common/ScopeGuard: Fix move constructor.
2025-11-18 14:19:21 -06:00