aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines/maxwell_dma.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Switch 2: title 4 menu text renders uprightTakoroka7 days1-0/+18
| | | | | | | | | | | - 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-4/+13
| | | | | | | | | | | | | | | | | 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.
* Switch 2: suspend channels on semaphore acquires; fix pushbuffer desyncsTakoroka7 days1-1/+5
| | | | | | | | | | | | | | | | NVN2 gates command buffers with semaphores the CPU releases after writing them. Eden read past unmet SEMAPHORED acquires, so it executed stale commands and desynchronised. Channels now suspend on an unmet acquire and resume from the same word once it is met (scheduler keeps the waiting channels, the GPU thread polls them), as in changes.patch. Also: methods split across GPFIFO entries around a called command buffer are set aside and resumed; subchannel 2 defaults to inline-to-memory; unbound subchannels and out-of-range compute/DMA methods are dropped instead of crashing; 4-byte semaphore releases no longer write 16 bytes; Ampere SEM_PAYLOAD_HI/SEM_EXECUTE no longer spin as Kepler acquires; unmapped GPU reads log instead of asserting. Debug aids: EDEN_NX2_PB_CHECK (pushbuffer changed after submit), EDEN_NX2_QUERY_TRACE, a one-time pushbuffer dump.
* [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-9/+8
| | | | | | | | | | 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>
* [maxwell_dma] Fix CONST_A for different component sizes in MaxwellDMA Launch ↵MaranBr2025-12-311-8/+7
| | | | | | | | | | | (#3211) This implements 1 byte and 2 bytes component sizes, required by Marvel: Cosmic Invasion. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3211 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
* [vk] Implement Shader Read Barrier (#2671)Ribbit2025-10-041-0/+2
| | | | | | | | | | | Adding the shader read barrier keeps every render/compute/transfer write visible before the image is sampled, so it prevents the “read-before-writes-finish” hazards. Without it you can get random stale frames, flickering post process passes, partially updated HUD textures, and corrupted depth-to-color conversions especially in scenes that render into an offscreen image and immediately feed that image to a shader (reflections, bloom, dynamic resolution, depth visualizers, etc.). This fix makes those R2T chains deterministic again across all Vulkan drivers. Co-authored-by: Ribbit <ribbit@placeholder.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2671 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: Ribbit <ribbit@eden-emu.dev> Co-committed-by: Ribbit <ribbit@eden-emu.dev>
* [video_core] Fix stutters and freezes when playing FMV content in some games ↵MaranBr2025-10-031-3/+0
| | | | | | | | | | (#2650) This fixes stutters and freezes when playing FMV content in some games. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2650 Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
* [common] remove ranges polyfill (#2546)lizzie2025-09-241-1/+1
| | | | | | | | | Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2546 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [cmake] enable clang-cl and WoA builds (#348)lizzie2025-09-091-3/+3
| | | | | | | | | | | | | | Compilation and CMake fixes for both Windows on ARM and clang-cl, meaning Windows can now be built on both MSVC and clang on both amd64 and aarch64. Compiling on clang is *dramatically* faster so this should be useful for CI. Co-authored-by: crueter <crueter@eden-emu.dev> Co-authored-by: crueter <crueter@crueter.xyz> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/348 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [meta] remove MicroProfile (#185)crueter2025-08-061-14/+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>
* Core: Eliminate core/memory dependancies.Fernando Sahmkow2024-01-181-1/+0
|
* SMMU: Initial adaptation to video_core.Fernando Sahmkow2024-01-181-12/+13
|
* MaxwellDMA: Don't flush the outputs of a dma copy.Fernando Sahmkow2023-12-311-2/+2
|
* Query Cachge: Fully rework Vulkan's query cacheFernando Sahmkow2023-09-231-8/+4
|
* Fix DMA engine register offsetsKelebek12023-09-211-2/+3
|
* general: fix apple clang buildLiam2023-08-091-0/+1
|
* Use spans over guest memory where possible instead of copying data.Kelebek12023-07-021-46/+41
|
* maxwell_dma: Specify dst_operand.pitch instead of a temp varMorph2023-06-301-4/+3
|
* Use safe reads in DMA engineKelebek12023-06-261-5/+6
|
* Remove memory allocations in some hot pathsKelebek12023-06-221-16/+19
|
* Texture cache: Only force flush the dma downloadsFernando Sahmkow2023-05-071-1/+1
|
* GPU: Add Reactive flushingFernando Sahmkow2023-05-071-6/+2
|
* Engines: Implement Accelerate DMA Texture.Fernando Sahmkow2023-03-051-48/+59
|
* BufferBase: Don't ignore GPU pages.Fernando Sahmkow2023-01-051-2/+2
|
* video_core: Cache GPU internal writes.Fernando Sahmkow2023-01-051-8/+9
|
* DMAPusher: Improve collection of non executing methodsFernando Sahmkow2023-01-011-1/+11
|
* scratch_buffer: Explicitly defing resize and resize_destructive functionsameerj2022-12-191-9/+9
| | | | | resize keeps previous data intact when the buffer grows resize_destructive destroys the previous data when the buffer grows
* video_core: Add usages of ScratchBufferameerj2022-12-191-24/+8
|
* engines: Remove unnecessary castsLioncash2022-11-291-7/+7
| | | | In a few cases we have some casts that can be trivially removed.
* MaxwellDMA: Implement BlockLinear to BlockLinear copies.Fernando Sahmkow2022-11-241-1/+66
|
* Merge pull request #9229 from Docteh/achy_breaky_heartMorph2022-11-171-0/+1
|\ | | | | Add break for default cases
| * Add break for default casesKyle Kienapfel2022-11-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | Visual Studio has an option to search all files in a solution, so I did a search in there for "default:" looking for any missing break statements. I've left out default statements that return something, and that throw something, even if via ThrowInvalidType. UNREACHABLE leads towards throw R_THROW macro leads towards a return
* | video_core: Fix dma copy 1D random crashFengChen2022-11-111-17/+20
|/
* video_core: implement 1D copies based on VMM 'kind'FengChen2022-10-171-54/+73
|
* maxwell_dma: remove warnings from implemented functionalityLiam2022-10-061-2/+0
|
* NVDRV: Further improvements.Fernando Sahmkow2022-10-061-5/+13
|
* DMA & InlineToMemory Engines Rework.bunnei2022-10-061-33/+58
|
* common: Change semantics of UNREACHABLE to unconditionally crashLiam2022-06-131-2/+2
|
* maxwell_dma: use fallback if remapping is enabledLiam2022-05-101-3/+6
|
* maxwell_dma: fix bytes per pixelLiam2022-05-061-3/+3
|
* 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.
* MaxwellDMA: Implement semaphore operationsLody2022-03-071-1/+19
|
* maxwell_dma: Minor refactoringameerj2021-09-191-32/+32
|
* DMA: Restrict optimised path for BlockToLinear further.FernandoS272021-07-221-1/+2
|
* Buffer cache: Fixes, Clang and Feedback.Fernando Sahmkow2021-07-151-0/+5
|
* DMAEngine: Revert flushing from Pitch to BlpockLinear.Fernando Sahmkow2021-07-141-2/+7
|
* DMAEngine: Accelerate BufferClearFernando Sahmkow2021-07-131-2/+4
|
* accelerateDMA: Accelerate Buffer Copies.Fernando Sahmkow2021-07-111-9/+27
|