Add tag cache#596
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #596 +/- ##
==========================================
+ Coverage 98.70% 98.73% +0.03%
==========================================
Files 44 44
Lines 13711 13799 +88
==========================================
+ Hits 13533 13624 +91
+ Misses 178 175 -3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
2103af3 to
c9cb04d
Compare
Owner
Author
|
The gcc CI failures are caused by failed apt-get installs, and are not related with this changeset. They can be ignored because the gcc jobs that succeed are enough to confirm that this changeset works with all gcc versions. Merging now. |
Hancock33
added a commit
to Hancock33/batocera.piboy
that referenced
this pull request
May 9, 2026
------------------------------------------------------------------------------------ cubeb.mk 6ad18e2b523a2c721ee1ed8ad0940521a19f5f84 # Version: Commits on Apr 23, 2026 ------------------------------------------------------------------------------------ wasapi: Promote/demote render thread on start/stop., ------------------------------------------------------------------------------------------ duckstation.mk 8056dc705741c61205bf5a7149defd9b0dfcd4a6 # Version: Commits on May 06, 2026 ------------------------------------------------------------------------------------------ FullscreenUI: Fix change disc hotkey again, ----------------------------------------------------------------------------------- eden.mk b154a7da3cb657a9e224c29ebda2cba83b16290e # Version: Commits on May 06, 2026 ----------------------------------------------------------------------------------- [hle, friend] GetFriendListForViewerV2 STUBBED and update list of functions (#3933) (#3937) -------------------------------------------------------------------------------------- melonds.mk 1609a0f94ebad2cfcf18dbf315f1f00fe3daff35 # Version: Commits on May 06, 2026 -------------------------------------------------------------------------------------- Use Qt's QFile abstraction for the Platform.h file I/O functions (#2646) * Use Qt's QFile abstraction for the Platform.h file I/O functions * forgot to reimplement FileWriteFormatted, -------------------------------------------------------------------------------------- openmsx.mk 9824509fbf0286721ec4995d30dc53adf8554fda # Version: Commits on May 06, 2026 -------------------------------------------------------------------------------------- Adds missing import, ---------------------------------------------------- pcsx2.mk v2.7.318 # Version: Commits on May 06, 2026 ---------------------------------------------------- - [GS/TC: Use temporary source on invalid source TEX0](PCSX2/pcsx2#14325) ------------------------------------------------------------------------------------- ppsspp.mk 9e2c3588f91c947eb4a697df2cba40e49d4b9209 # Version: Commits on May 06, 2026 ------------------------------------------------------------------------------------- Merge pull request #21646 from lrzlin/readme-fix Fix contributors for 1.20.4 improvements in README, --------------------------------------------------------------------------------------- touchhle.mk 8b5a342bd07215809410c2fd6f82bc2b9675e9f2 # Version: Commits on Aug 27, 2025 --------------------------------------------------------------------------------------- Send +initialize to classes Change-Id: Id8a0a179ee99805b80751eea2eb345f71113b444, ----------------------------------------------------------------------------------------- xenia-edge.mk 61aec53823526fe98e332bc5e7e607cc7e489ed5 # Version: Commits on May 06, 2026 ----------------------------------------------------------------------------------------- [Vulkan] Fix regression due to df16917f Scale unnormalized coords to host texels for resolution-scaled fetches, fixes res scaling issues introduced to Trials HD, ----------------------------------------------------------------------------------- ymir.mk 82a26c6c6efc8c75efea592e63a16f655048e086 # Version: Commits on May 06, 2026 ----------------------------------------------------------------------------------- fix(app): Temporarily switch from exclusive to borderless fullscreen when opening a file dialog, ----------------------------------------------------------------------------------------- lightspark.mk 15eb3d7194359f7b24329fbb51333ed60fe2c9a4 # Version: Commits on Apr 25, 2026 ----------------------------------------------------------------------------------------- ensure all changes on list of gc objects are done in VM thread fixes memleaks and crash on exit in \FormulaRacer2012\ and \Super Mario 63\, ------------------------------------------------------- rapidyaml.mk v0.12.0 # Version: Commits on May 06, 2026 ------------------------------------------------------- ## General fixes and improvements This release focuses in compliance with the YAML standard, mostly by ensuring parse errors in invalid YAML cases. rapidyaml **is now 100% compliant to the YAML test suite, both for valid and invalid YAML cases**. - Narrow the scope of `%TAG` to only the following document, as per the standard ([PR#588](biojppm/rapidyaml#588)). This required or prompted some API changes: - Added new type `TagDirectives` - Added `ParseOptions::resolve_tags()` and `ParseOptions::resolve_tags_all()` options to allow controling resolution of tags while parsing. When disabled (which is the default), the tree still has `Tree::resolve_tags()` to perform post-parsing or programmatic resolution. - Changed `TagDirective` to point at its in-scope document, changed API to reflect this. - `ParseEngine` now has an instance of `TagDirectives`, and is in charge of updating it and checking for directive errors. - Removed the old `TagDirective m_tag_directives[]` members from the ints and testsuite handlers. `Tree` also has its own `TagDirectives` member, redundantly updated during parsing: this enables programmatic manipulation the tree's tag directives . - The event handlers now track the current document id, in order to enable the document scope check for `%TAG` directives. This required adding node id tracking to the ints and testsuite handlers. - Added `Tree::ancestor_doc(node_id)` and `ConstNodeRef::ancestor_doc()` to query for the parent document of a node. This is needed to implement resolution of tags. - `NodeType`: rename tag directive types `TAGD`->`TAGH` (tag handle) and `TAGV`->`TAGP` (tag prefix). - Internal changes to improve the design of event handlers, moving relocation and error checking logic to `ParseEngine`, where it is most suited. - Fix warnings with clang-tidy 22 - [PR#596](biojppm/rapidyaml#596): Add `TagCache` accelerator structure (in `c4/yml/tag.hpp`), used by `Tree::resolve_tags()` and the parser engine. This reduces significantly the arena requirements for heavily-tagged YAML by ensuring reuse of resolved tags. ## YAML fixes: valid cases Fix parsing of **valid** YAML corner cases: - Ambiguity of tags/anchors in ? mode ([PR#587](biojppm/rapidyaml#587)): ```yaml ? &mapanchor key: val ? &keyanchor key: val ``` - flow tags/anchors with omitted plain scalar ([PR#587](biojppm/rapidyaml#587)): ```yaml # ... likewise for !tag - [&anchor,&anchor] - {&anchor,&anchor} - [&anchor :,&anchor :] - {&anchor :,&anchor :} - [: &anchor,: &anchor] - {: &anchor,: &anchor} --- ? anchor ``` - flow tags/anchors terminating with `:` (the colon is part of the tag/anchor) ([PR#587](biojppm/rapidyaml#587)): ```yaml # ... likewise for !tag: - [&anchor:,&anchor:] - {&anchor:,&anchor:} - [&anchor: :,&anchor: :] - {&anchor: :,&anchor: :} - [: &anchor:,: &anchor:] - {: &anchor:,: &anchor:} --- ? anchor ``` - Fix corner cases of explicit keys now allow same-line containers ([PR#587](biojppm/rapidyaml#587)): ```yaml ? - a # same-line container key now parses successfully. both seqs and maps : - b # same-line container val now parses successfully. both seqs and maps ? ? - c # nested explicit keys were also fixed ? - d ``` - Missing tags/anchors in some flow maps ([PR#587](biojppm/rapidyaml#587)). ## YAML fixes: invalid cases Ensure parse errors for **invalid** YAML cases, and improve reported error location: - `%TAG` directives are valid only in the following document ([PR#588](biojppm/rapidyaml#588)). ```yaml %TAG !m my- --- !m!first a --- !m!second a # error: %TAG directive out of scope here ... %TAG !m your- --- !m!second a # ok: %TAG provided now. ``` - colon on newline at top level ([PR#585](biojppm/rapidyaml#585)): ```yaml scalar : bad --- [seq] : bad --- {map: } : bad ``` - colon on newline generally in block containers ([PR#585](biojppm/rapidyaml#585)): ```yaml bad cases: scalar : bad colon [seq] : bad colon {map: } : bad colon ``` - colon on newline in flow sequences ([PR#586](biojppm/rapidyaml#586)): ```yaml [a : b] ``` - tokens after explicit document end ([PR#585](biojppm/rapidyaml#585)): ```yaml foo: bar ... bad tokens ``` - `-` is invalid scalar in flow sequences ([PR#586](biojppm/rapidyaml#586)): ```yaml [-] --- [-,-] --- [--,-] --- [- ] ``` - doc start/begin tokens at zero indentation in seq flow and quoted scalars ([PR#587](biojppm/rapidyaml#587)): ```yaml [ ---, --- , ---\\t, ..., ... , ...\\t, # etc ] --- \ --- # error as well ... # error as well \ --- ' --- # error as well ... # error as well ' ``` - nested flow containers now enforce the contextual parent indentation ([PR#587](biojppm/rapidyaml#587)): ```yaml - - - [ a # now this is a parse error ] - - - [ a # this is ok ] ``` - single/double-quoted scalars now enforce the contextual parent indentation ([PR#587](biojppm/rapidyaml#587)): ```yaml - - - \a b\ # now this is a parse error - - - \a b\ # this is ok ``` - plain scalars in block mode starting with `,` ([PR#587](biojppm/rapidyaml#587)): ```yaml all invalid: - , foo - ,foo - , ``` - references with anchors or tags ([PR#587](biojppm/rapidyaml#587)): ```yaml all invalid: - &anchor *ref - !tag *ref ``` - directives with extra tokens ([PR#587](biojppm/rapidyaml#587)): ```yaml %YAML 1.2 blabla # invalid %YAML 1. # this is ok %TAG ! my- ! blabla # this is also wrong --- ``` - multiline implicit keys are invalid ([PR#587](biojppm/rapidyaml#587)): ```yaml multiline plain: invalid 'multiline squoted': invalid \multiline dquoted\: invalid [multiline, seq]: invalid {multiline: map}: invalid ``` - invalid block containers after document open ([PR#592](biojppm/rapidyaml#592)): ```yaml --- a: b # invalid --- - a # invalid --- ? a # invalid ``` - invalid block containers after in-block open ([PR#592](biojppm/rapidyaml#592)): ```yaml a: - b # invalid a: ? b # invalid ``` - same-line repeated annotations ([PR#592](biojppm/rapidyaml#592)): ```yaml !a !b foo: bar # ok --- &a &b foo: bar # ok --- !a !b foo: bar # invalid --- &a &b foo: bar # invalid ``` - Fix parsing of invalid YAML: block scalars with deindented first line ([PR#593](biojppm/rapidyaml#593)): ```yaml # the _ characters are not part of the YAML; # they are used here only to show the leading whitespace empty block scalar: > _ _ _ # comment ``` --------------------------------------------------------------------------------------- etlegacy.mk fea8a10184e2b464af2c04c73466b4f290eab502 # Version: Commits on May 06, 2026 --------------------------------------------------------------------------------------- cgame: fix duplicate selfkill killfeed icons Move the self-kill icon insertion to the obituary event scope so it runs once per death event instead of potentially multiple times for each visible popupmessages component., --------------------------------------------------------------------------------------- mangohud.mk ed2c2496bc666cf85a38f4b2bf19b5e2188e513a # Version: Commits on May 06, 2026 --------------------------------------------------------------------------------------- mangohud-setup: add error when we can't extract, --------------------------------------------------------- vkd3d-proton.mk v3.0.1 # Version: Commits on May 06, 2026 --------------------------------------------------------- This is likely the last release before `VK_EXT_descriptor_heap` lands. There are some practical reasons why this is 3.0.1 instead of 3.1, but numbers don't really matter that much anyway. A ton of work on descriptor heaps have been happening in the background as well, but that is not included in this release. ### Features - D3D12 view instancing is now experimentally supported. It is enabled for the one known game that requires it, Crimson Desert (1.04+). - Implement `VK_EXT_present_timing`, allowing for smooth frame pacing for SyncInterval > 1 when supported. - Support Independent Devices feature. - Add support for new AGS WMMA ops required for FSR4 Ray Reconstruction and Denoiser, as used in Crimson Desert. - Expose new interfaces for more up-to-date NVAPI and expose some support for NVAPI shader intrinsics. With up-to-date dxvk-nvapi, the vendor extensions for Shader Execution Reordering should work for example. - Expose new interfaces for AMD AGS and expose some support for AGS shader intrinsics, as used in Crimson Desert. ### Fixes - Allow `SV_PrimitiveID` to be read in more shader stages as expected. - Various fixes for NVIDIA Reflex to improve performance in some cases. [NVIDIA contrib] - Rather than trying to lock NVAPI present ID to our present ID, these can now be decoupled. This helps frame-gen in particular, since we can now signal this situation properly. - Various fixes to make Turnip pass vkd3d-proton test suite. - Various fixes in dxil-spirv to make new games not crash in shader compiler. - Fix regression in F1 2019/2020 where old workaround in old compiler was not retained in new code. - Misc other bug fixes. ### Performance Most of the performance work for this release revolved around giving some love to mobile chips which rely on tiling for optimal performance: - Implement deferred clears and discards to potentially improve performance on e.g. Turnip. - Take advantage of render pass suspend-resume on mobile GPUs, which can potentially improve performance a lot. NOTE: This depends on driver and game to \do the right thing\. It does not magically make things go faster. - Move query pool initialization and resolves around to avoid breaking render passes as much as possible. - Rework how MSAA resolves work to make it easier for drivers to optimize. Other performance improvements: - Implement a batched system for complex ExecuteIndirect where existing split command list optimization did not work. Improves GPU bound performance in various games that spam ExecuteIndirect with state updates like Crimson Desert, Starfield and Halo Infinite. - Implement SM 6.4 dot2add with `VK_VALVE_shader_mixed_float_dot_product` if supported. - Finally use a proper Vulkan TRANSFER queue for D3D12 COPY queues if supported instead of Vulkan COMPUTE queue. RADV does not expose this by default yet, but a TRANSFER queue is now used on NVIDIA by default, which should improve performance when streaming assets. ### Workarounds - Introduce a mechanism to apply workarounds based on shader entry point name instead of hash. This is not always available, but should avoid churn in e.g. Wuthering Waves and Crimson Desert which are moving targets w.r.t. shader hashes. - Workaround DispatchRays where game forgets to set root signature correctly. - Workaround misc game bugs in: - Shadows of the Tomb Raider - Rise of the Tomb Raider - Spider Man 2 - Death Stranding 2 - Guardians of the Galaxy - REANIMAL - Crimson Desert - ... and others I probably missed to mention - Workaround hardware bug on RDNA4 with `SV_ShadingRate` on affected Mesa versions. - Fixed in 26.1+. Workaround is disabled on those versions. - Remove NULL SMEM PRT HW workaround on AMD in future Mesa 26.2+. - Resolves a 1.5 year old nightmare in Monster Hunter Wilds. - Add performance workaround for NVIDIA kernel when waiting for ID3D12Fences. - Allow RDNA1 GPUs to pretend that they support barycentrics and VRS. Allows Crimson Desert to run on RDNA1. - Remove global submission lock workaround on NVIDIA. ### Misc Remove legacy paths for `VK_NV_device_generated_commands{,_compute}` and compute fallback for `NV_dgcc`. No relevant driver is impacted by this cleanup., --------------------------------------------------------------------------------------------- easyrpg-player.mk be2a606311bcc559a67a1d37731857356049ec7f # Version: Commits on May 06, 2026 --------------------------------------------------------------------------------------------- Merge pull request #3498 from EasyRPG-NewFeatures/maniacs/SaveImage Maniacs Patch - Save Image command, ------------------------------------------------------------------------------------- libdof.mk 2591c0fbe2cca64bb8c866d100b80c9ebc8cca33 # Version: Commits on May 06, 2026 ------------------------------------------------------------------------------------- misc: update to support Visual Studio 2026, ----------------------------------------------------------------------------------------- libwinevbs.mk a226c4ed9fd7bf73f4621a6ce969beb220e1996b # Version: Commits on May 05, 2026 ----------------------------------------------------------------------------------------- refactor: fix create_object callback out-param type The third parameter of the create_object callback is the object output slot, but it was typed as IUnknown* instead of IUnknown**. Callers had to launder it through (IUnknown*)&obj and callbacks had to launder it back via *(IUnknown**)obj. Type it as IUnknown** so the API matches what it actually does., ---------------------------------------------------------------------------------------- doomretro.mk af24396343be4252bcb10f1b43f7ea47ac7bba79 # Version: Commits on May 06, 2026 ---------------------------------------------------------------------------------------- Remove sector_t::mapped, -------------------------------------------------------------------------------------------------- libretro-beetle-psx.mk 42ab8d9943b6a9f4646dfada3f40b7c9dec7bed1 # Version: Commits on May 06, 2026 -------------------------------------------------------------------------------------------------- libretro: drop dead C-accessor layer + -Wdeclaration-after-statement clean Three cleanups, all post-conversion-aftermath, bundled into one commit because they touch overlapping lines. 1) psx_mem.h dedup. The C-accessor forwarders in mednafen/psx/psx_mem.h (ScratchRAM_ReadU8/16/24/32, WriteU8/16/24/32, ScratchRAM_data8, MainRAM_data8/ReadU32/WriteU32, BIOSROM_data8) were added during the cpu.cpp -> cpu.c conversion as a bridge: cpu.c could not include masmem.h while MultiAccessSizeMem was a C++ class template, so plain-C wrappers in libretro.cpp re-exported the member-function calls under C linkage. The bridge is no longer needed. masmem.h became a plain-C struct + free functions in B1, and libretro.cpp became libretro.c in B2 - so every consumer can include masmem.h directly and call MASMEM_ReadU8(ScratchRAM, addr) without going through a forwarder. psx_mem.h is rewritten to a five-line header that just declares the three singleton externs (MainRAM, BIOSROM, ScratchRAM) and pulls in masmem.h. Consumer sites updated: mednafen/psx/cpu.c (12 sites): ScratchRAM_data8() -> ScratchRAM->data8, MainRAM_data8() -> MainRAM->data8, BIOSROM_data8() -> BIOSROM->data8, ScratchRAM_ReadU8(addr) -> MASMEM_ReadU8(ScratchRAM, addr) etc. mednafen/psx/dma.c ( 3 sites): MainRAM_ReadU32 / WriteU32 -> MASMEM_ReadU32 / WriteU32(MainRAM, ...). libretro.c: the 11-function forwarder block at file scope is gone. 2) Dead extern-C guard sweep. Most mednafen/psx headers carried \#ifdef __cplusplus extern \\\C\\\ {\ guards back when libretro.cpp and cpu.cpp pulled them. Both TUs are now C, so the guards are dead boilerplate on any header that no remaining .cpp transitively pulls. The audit: of mednafen/psx/*.h, only gpu.h, gpu_c.h, and timer.h are still pulled by C++ TUs (rsx/rsx_lib_vulkan.cpp directly includes mednafen/psx/gpu.h, which pulls gpu_c.h; timer.h has two parallel-psx consumers). Everything else is C-only. Guards stripped from 14 headers: cpu.h, cpu_c.h, psx.h, psx_events.h, cdc.h, cdc_c.h, dma.h, irq.h, gpu_common.h, frontio.h, spu_c.h, mdec.h, sio.h, gte.h. Kept on gpu.h, gpu_c.h, timer.h. psx.h gets extra cleanup: the BIOSROM / MainRAM / ScratchRAM extern decls were inside a __cplusplus guard (because MultiAccessSizeMem was C++-only) and the analog_combo / analog_combo_hold externs were inside a __cplusplus guard (because they were defined in libretro.cpp). Neither gate is true anymore, so both blocks come out of guards and become plain externs. 3) libretro.c -Wdeclaration-after-statement clean. The freshly-converted libretro.c had ~26 mid-block-decl warnings plus one VLA warning that the rest of the codebase compiles clean. Standing rule is C89-compliant in new code, and now the file is ew\ by way of the conversion, so this brings it to the same standard the other C TUs hold. VLA fix: firmware_is_present had `static const size_t list_size = 16` followed by `const char *bios_name_list[list_size]`. C90 requires array-bound expressions to be integer constant expressions, which a `static const size_t` is not. Spelled with an `enum { list_size = 16 }` instead, which is an ICE. Mid-block decls: 26 sites hoisted to top of nearest enclosing scope. Functions touched: firmware_is_present, extract_basename, extract_directory, TextMem_resize, InitCommon, LoadEXE, DecodeGS, fallback_log, retro_init, retro_load_game, retro_run. Mechanical hoists - the only structural change is in retro_run, where a for-loop with a C99-style `unsigned players` / `for(int i = ...)` cluster needs a wrapping block to give the hoisted decls a scope. Verification: HAVE_LIGHTREC=0 and =1 both build clean, .so sizes bit-identical to post-B2 baseline (LR=0 15,985,736; LR=1 16,818,720). Probe7 PASS at +3456 KB / 48 cycles, identical to baseline drift., --------------------------------------------------------------------------------------------------- libretro-dosbox-pure.mk 9e0d4689acb25b8dc7900b9605c40f96262a3a3b # Version: Commits on May 06, 2026 --------------------------------------------------------------------------------------------------- Further speed improvements over f30a391 of save file writing by not calculating the CRC32 checksum at all if otherwise the existing stored file already matches (#717, #615) This should fix any remaining short freezes of the core while it is writing large save files, ----------------------------------------------------------------------------------------------- libretro-easyrpg.mk be2a606311bcc559a67a1d37731857356049ec7f # Version: Commits on May 06, 2026 ----------------------------------------------------------------------------------------------- Merge pull request #3498 from EasyRPG-NewFeatures/maniacs/SaveImage Maniacs Patch - Save Image command, --------------------------------------------------------------------------------------------- libretro-fbneo.mk 3eeec034f9c7a17c3e7a820ad034861bb1a9522f # Version: Commits on May 06, 2026 --------------------------------------------------------------------------------------------- Add pgm2 memory card option (#1123), ---------------------------------------------------------------------------------------------- libretro-ppsspp.mk 9e2c3588f91c947eb4a697df2cba40e49d4b9209 # Version: Commits on May 06, 2026 ---------------------------------------------------------------------------------------------- Merge pull request #21646 from lrzlin/readme-fix Fix contributors for 1.20.4 improvements in README, --------------------------------------------------------------------------------------------- libretro-vba-m.mk 5f7847d1a8258d5a6de5f314113a7d144639458d # Version: Commits on May 06, 2026 --------------------------------------------------------------------------------------------- Don't reject comma's in the scale validator.,
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.