mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-10-14 15:10:46 -04:00
218c6705d9
This PR primarily focuses on upbringing constexpr maps for handlers. Each time an HLE object of a service is construed, it registers it's own handlers, over and over. Regardless of whetever it needs them at the moment or not. Additionally we don't require to keep track of different function pointers amongst each object. This can be done by overriding the given function instead, as opposed to having a separate hash map for every given object. In other words: Remove handlers (and handlers_tipc) map for every instance then read from a static defined per-class. - [x] Migrate all HLE functions to new `frozen::map` constexpr time finder - [ ] Measure if this approach actually makes better codegen Optional: - [x] Properly gate all functions (that have versions commented next to them) - [x] Maybe store `HandlerFnP<>` and `const char*` separately, version gating can go in a different map as well Information such as name can be used on debug builds, but doesn't particularly help on release as one can consult an external reference (or have an annotated IPC map) Signed-off-by: lizzie <lizzie@eden-emu.dev> - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- Co-authored-by: Maufeat <sahyno1996@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4480 Reviewed-by: Maufeat <sahyno1996@gmail.com> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Tools
Tools for Eden and other subprojects. When adding new scripts please use #!/bin/sh -e or #!/usr/bin/env <interpreter> (for .py, .rb, or .perl). Keep scripts POSIX compliant (i.e not require hard bash to run, just plain old sh).
Third-Party
Binaries
maxwell-spirv: Converts Maxwell shaders (dumped from.ashfiles) into SPIR-V code sent to stdout.maxwell-disas: Dumb raw Maxwell disassembler.maxwell-ir: Dump generated IR of Maxwell shaders.
Scripts
generate_converters.py: Generates converters for given formats of textures (C++ helper).svc_generator.py: Generates the filessrc/core/hle/kernel/svc.cppandsrc/core/hle/kernel/svc.hbased off prototypes.shellcheck.sh: Ensure POSIX compliance (and syntax sanity) for all tools in this directory and subdirectories.llvmpipe-run.sh: Sets environment variables needed to run any command (or Eden) with llvmpipe.optimize-assets.sh: Optimizes PNG assets with OptiPng.update-cpm.sh: Updates CPM.cmake to the latest version.update-icons.sh: Rebuild all icons (macOS, Windows, bitmaps) based on the master SVG file (dist/dev.eden_emu.eden.svg)- Also optimizes the master SVG
- Requires:
png2icns(libicns), ImageMagick,svgo
dtrace-tool.shlanczos-gen.pl: Generates constants for the Lanczos filter.clang-format.sh: Runsclang-formaton the entire codebase.- Requires: clang
find-unused-strings.sh: Find any unused strings in the Android app (XML -> Kotlin).cpp-lint.sh: Homemade dumb C++ linter.fuzzsettings.cpp: Fuzz settings files.
Android
It's recommended to run these scripts after almost any Android change, as they are relatively fast and important both for APK bloat and CI.
unused-strings.sh: Finds unused strings instrings.xmlfiles.stale-translations.sh: Finds translated strings that aren't present in the sourcestrings.xmlfile.