aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines/fermi_2d.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Switch 2: title 4 menu text renders uprightTakoroka7 days1-0/+13
| | | | | | | | | | | - Present flips the image vertically: title 4 renders with a lower-left origin (negative viewport scale), so its frames are stored bottom-up. - Lowering: TEX/TEXS FP16 results (bit 79, packed half pairs) - the glyph shaders unpack them with HADD2.F32; LDG.E with a register address; SHF.R.U32 low word with a zero high word. - Debug aids: EDEN_NX2_TRACE_PS / EDEN_NX2_WINDOW_TRACE_SKIP for the window trace, EDEN_NX2_TEXTURE_DUMP, EDEN_NX2_TRACE_DST for copies; RT trace keyed by shader pair. NX2_NOTES: blockers 53-57, next steps.
* Switch 2: Turing macros, native compute, Ampere shader lowering, native tilingTakoroka7 days1-0/+9
| | | | | | | | | | | | | | | | | From changes.patch: the TU104/GA10x MME interpreter (shared macro context for the process's channels, also on the compute class), native compute with QMD 3.0 dependency scheduling, the Ampere-to-Maxwell shader lowering, native vertex stream sizes, and the console's GOB swizzle for textures, DMA copies and the host unswizzle shaders. Switch 2 channels turn all of it on at init. The lowering is widened for title 4 (all 32 of its programs lower): general TEX (any dimension/LOD/mask, operand split 1+1/2+1/2+2/4+n, any but consistent descriptor buffer), cube/array, SULD channel masks, 128-bit STG, indexed IPA, VOTE, SHFL with any immediate or predicate output, R2P/P2R byte select, uniform ULOP3/ULEA/UBREV/UFLO.SH/UISETP signed/UMOV URZ, IMNMX cbuf, IADD3 and FFMA uniform operands, FMUL /4 /8 x8, and BSSY/BSYNC/BREAK/WARPSYNC as no-ops. The capture stops at unmapped memory. EDEN_NX2_SHADER_DUMP dumps every native program; tools in C:\dev\nx2work test the lowering offline.
* [fmt] use {#:x} instead of 0x{:#x} (#4170)lizzie2026-07-251-1/+1
| | | | | | | | | | continuation of #309 but applying to even more files than before :) also makes them lowercase because `0xfafafa` is better as `0XFAFAFA` Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4170 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: Maufeat <sahyno1996@gmail.com>
* [video_core, hle] remove redundant parent references in system structs (#3908)lizzie2026-06-231-8/+6
| | | | | | | | | | reworked a bit to remove references of parent objects and instead pass as arguments to methods to prevent useless reloads Signed-off-by: lizzie <lizzie@eden-emu.dev> Co-authored-by: maufeat <sahyno1996@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3908 Reviewed-by: Maufeat <sahyno1996@gmail.com> Reviewed-by: crueter <crueter@eden-emu.dev>
* [common/logging] Simplify logging logic and fix issues when logging before ↵lizzie2026-03-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | system is created (#3688) - our logging code was bigger than spdlog itself, why???? just keep it simple - fix issues when logging before logging system is even started - removes the "initialized logging twice" issue - removes uneeded indirection in file logging - uses direct formatting instead of jumping hoopla-around the fmt::format() ressult - code duplication and dead code removal as usual I did explore dup2() but I think it's not worth the hassle I did try `fwopen()` but it's better if things are just kept as-is. there is a lot of noise because I removed a bunch of redundant files on logging and just put everything in one file now normally this wouldn't be a good idea, however consider: the complexity of logging; it's less than 500 lines... does it really need a whole subsystem?!?!?! ITS JUST LOGGING Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3688 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: DraVee <chimera@dravee.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* Revert "[bsd, am, fermi] Replace assertions with warnings and update stubs ↵crueter2025-12-311-3/+1
| | | | | | | | | | | (#3160)" (#3239) This reverts commit adc41bff70d975038e1cd3ae9873f4281c768b34. fixes jackbox, potentially some others Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3239 Reviewed-by: MaranBr <maranbr@eden-emu.dev>
* [bsd, am, fermi] Replace assertions with warnings and update stubs (#3160)JPikachu2025-12-121-1/+3
| | | | | | | | | | | | | | | | - Return error logs instead of asserts for BSD sockets - Warn about source depth != 1 in blits instead of assert in Fermi2D - Update AM 210 - GetLaunchRequiredVersionUpgrade Credit: liberodark. Fixes Marvel Cosmic Invasion loading screen crash. Co-authored-by: JPikachu <jpikachu.eden@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3160 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Co-authored-by: JPikachu <jpikachu@eden-emu.dev> Co-committed-by: JPikachu <jpikachu@eden-emu.dev>
* [meta] remove MicroProfile (#185)crueter2025-08-061-5/+3
| | | | | | Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/185 Reviewed-by: Lizzie <lizzie@eden-emu.dev>
* shader_recompiler: Fix spelling of "derivate" (#12067)Ameer J2023-11-181-2/+2
|
* Account for a pre-added offset when using Corner sample mode for 2D blitsKelebek12023-04-211-4/+12
|
* Fermi2D: sync cache flushesFernando Sahmkow2023-01-051-2/+4
|
* DMAPusher: Improve collection of non executing methodsFernando Sahmkow2023-01-011-0/+10
|
* Fermi2D: Implement Bilinear software filtering and address feedback.Fernando Sahmkow2022-11-241-4/+7
|
* Fermi2D: Rework blit engine and add a software blitter.Fernando Sahmkow2022-11-241-3/+16
|
* general: Convert source file copyright comments over to SPDXMorph2022-04-231-3/+2
| | | | | This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
* Out of bound blit (#6531)Feng Chen2021-07-081-2/+20
| | | | | | | | | * Fix out of bound blit error * Fix code read * Fix ci error Co-authored-by: Feng Chen <chen.feng@gloritysolutions.com>
* gpu: Report renderer errors with exceptionsReinUsesLisp2021-02-131-2/+2
| | | | | | Instead of using a two step initialization to report errors, initialize the GPU renderer and rasterizer on the constructor and report errors through std::runtime_error.
* video_core: Rewrite the texture cacheReinUsesLisp2020-12-301-60/+29
| | | | | | | | | | | | | | The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues.
* video_core: Remove unnecessary enum class casting in logging messagesLioncash2020-12-071-2/+1
| | | | | | | fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit.
* fermi_2d: Make use of designated initializersLioncash2020-09-181-6/+6
| | | | | Same behavior, less repetition. We can also ensure all members of Config are initialized.
* video_core: Initialize renderer with a GPUReinUsesLisp2020-08-221-2/+8
| | | | | Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
* VideoCore/Engines: Refactor Engines CallMethod.Fernando Sahmkow2020-04-271-5/+5
|
* DMAPusher: Propagate multimethod writes into the engines.Fernando Sahmkow2020-04-231-0/+6
|
* General: Resolve warnings related to missing declarationsLioncash2020-04-161-1/+1
|
* Fermi2D: Use a different formula for delimiting blit areas.Fernando Sahmkow2019-10-171-14/+28
|
* Fermi2D: limit blit area to only available areaFernando Sahmkow2019-10-171-4/+14
| | | | | | | | Normaly OpenGL does not care if the areas exceed the texture regions but other backends such as Vulkan do care about the limits of this areas. This PR crops the areas of the blit in order that they don't surpass the limits of the textures. This should help Vulkan and faulty OpenGL drivers
* Fix clang-formatFearlessTobi2019-09-221-1/+1
|
* fermi_2d: Lower surface copy log severity to DEBUGFearlessTobi2019-09-221-1/+1
|
* video_core: Silent miscellaneous warnings (#2820)Rodrigo Locatti2019-08-301-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | * texture_cache/surface_params: Remove unused local variable * rasterizer_interface: Add missing documentation commentary * maxwell_dma: Remove unused rasterizer reference * video_core/gpu: Sort member declaration order to silent -Wreorder warning * fermi_2d: Remove unused MemoryManager reference * video_core: Silent unused variable warnings * buffer_cache: Silent -Wreorder warnings * kepler_memory: Remove unused MemoryManager reference * gl_texture_cache: Add missing override * buffer_cache: Add missing include * shader/decode: Remove unused variables
* fermi2d: Correct Origin ModeFernando Sahmkow2019-06-201-5/+10
|
* texture_cache: Fermi2D reform and implement View MirageFernando Sahmkow2019-06-201-3/+7
| | | | | This also does some fixes on compressed textures reinterpret and on the Fermi2D engine in general.
* video_core/engines: Make memory manager members privateLioncash2019-04-051-1/+1
| | | | | These aren't used externally by anything, so they can be made private data members.
* video_core/engines: Remove unnecessary inclusions where applicableLioncash2019-04-051-0/+1
| | | | | | Replaces header inclusions with forward declarations where applicable and also removes unused headers within the cpp file. This reduces a few more dependencies on core/memory.h
* video_core/engines: Remove unnecessary includesLioncash2019-03-051-4/+3
| | | | | | | | | Removes a few unnecessary dependencies on core-related machinery, such as the core.h and memory.h, which reduces the amount of rebuilding necessary if those files change. This also uncovered some indirect dependencies within other source files. This also fixes those.
* common/math_util: Move contents into the Common namespaceLioncash2019-02-271-4/+4
| | | | | These types are within the common library, so they should be within the Common namespace.
* gl_rasterizer: Implement a more accurate fermi 2D copy.bunnei2019-02-061-47/+15
| | | | - This is a blit, use the blit registers.
* video_core: Assert on invalid GPU to CPU address queriesReinUsesLisp2019-02-031-7/+9
|
* Merge pull request #1792 from bunnei/dma-pusherbunnei2018-11-281-4/+4
|\ | | | | gpu: Rewrite GPU command list processing with DmaPusher class.
| * gpu: Rewrite GPU command list processing with DmaPusher class.bunnei2018-11-261-4/+4
| | | | | | | | - More accurate impl., fixes Undertale (among other games).
* | Merge pull request #1735 from FernandoS27/tex-spacingbunnei2018-11-271-2/+2
|\ \ | |/ |/| Texture decoder: Implemented Tile Width Spacing
| * Implemented Tile Width SpacingFernandoS272018-11-261-2/+2
| |
* | gl_rasterizer: Skip VB upload if the state is clean.Markus Wick2018-11-171-0/+5
|/
* fermi_2d: Add support for more accurate surface copies.bunnei2018-10-181-3/+6
|
* Propagate depth and depth_block on modules using decodersFernandoS272018-10-131-6/+8
|
* fermi_2d: Implement simple copies with AccelerateSurfaceCopy.bunnei2018-10-061-22/+28
|
* video_core: Use nested namespaces where applicableLioncash2018-07-201-4/+2
| | | | Compresses a few namespace specifiers to be more compact.
* Update clang formatJames Rowe2018-07-021-1/+1
|
* Rename logging macro back to LOG_*James Rowe2018-07-021-1/+1
|
* GPU: Partially implemented the Maxwell DMA engine.Subv2018-06-121-0/+1
| | | | Only tiled->linear and linear->tiled copies that aren't offsetted are supported for now. Queries are not supported. Swizzled copies are not supported.
* fermi_2d: Fix surface copy block height.bunnei2018-04-281-2/+2
|