aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines/draw_manager.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #334 from snowstormxd/codex/upstream-mkw-testJonas32 hours1-0/+3
|\ | | | | MKW performance improvements
| * vulkan: submit native work sooner and use the active draw countsnowstormxd35 hours1-0/+3
| | | | | | | | | | | | Adapted from sylvieistaken/selevet-eglantine performance builds, including 8b076b167ffc5ca1ba8ffedcd00e255accbe018c and d8c95fef. Preserve upstream command-list coherency and submission ordering. Assisted by Codex.
* | video_core: continue a split instance loop at its own instance indexSssnowyyy35 hours1-2/+14
|/ | | | | | | | | | | | | | | | | Writing any register outside the instance loop's own methods now draws the waiting instances first, so the batch sees the base instance it was begun with. When a title writes another register in the middle of a loop, such as a per-instance constant buffer, the loop is drawn in several batches, and each later batch started again at global_base_instance_index with one extra instance, so it used the instance IDs of the first records. Count the instances already drawn for the current loop and start the next batch after them, without the extra first-instance draw. A loop that is not split is drawn exactly as before. Follow-up to 2ad0830d2f and eb99da6072. Assisted-by: Claude Sonnet 5.5 (implementation and commit message)
* video_core: draw deferred instances before the state after their loopTakoroka4 days1-0/+27
| | | | | | | | | | | | | | | | | A draw of N instances arrives as Begin(First)/End and N-1 Begin(Subsequent)/ End pairs. The draw manager draws the first at once and the rest together at DrawDeferred, which ran at the next Begin(First) or when the macro returned. NVN's draw macros reset the base instance register and its copy in c[0][0x644] right after the loop, before returning, so the deferred instances were drawn with base instance 0 and read the first records of the instance buffer instead of their own. In Mario Kart World every tree mesh is drawn this way, from one shared instance buffer: each mesh got other meshes' transforms, which showed as low-detail, inflated or scattered trees. Any write other than the loop's own methods (draw begin/end, vertex and index counts, inline indices) now draws the waiting instances first.
* Revert "Import experimental NS2 support and accumulated GPU fixes"Takoroka6 days1-49/+0
| | | | | This reverts commit 535b676970. The Switch 2 support comes from the nx2 work instead, merged next.
* Import experimental NS2 support and accumulated GPU fixesyumekiru6 days1-0/+49
| | | | | | | | | | | Bring the NS2 patch and local follow-up fixes onto Eglantine master. Includes native graphics services, instruction translation, syncpoint cancellation acknowledgement, texture handling and diagnostics. Experimental checkpoint; not ready to merge. The original Eden build passed, but this rebased branch has not been built or tested. Assisted-by: OpenAI Codex (implementation, debugging, tests and PR preparation)
* [maxwell_3d] append inline index draw streams in bulk (#4083)simply00012026-06-271-0/+40
| | | | | | | | | Inline index draws arrive as a batch but were processed one word at a time, so each index ran through the full per-method path and got appended a byte at a time. Handle the whole batch in one pass instead, updating state once and appending all the indices together. Replay shadow control still goes word by word since it has to reload each one. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4083 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
* [video_core/engines/maxwell3d] memory inline DrawState to reduce indirection ↵lizzie2026-04-281-141/+105
| | | | | | | | | | | | | | | | | | on hot paths (#3758) usual indirection removal helps very slightly to codegen the idea is basically to reduce the amount of pointer deference overall in the code, and use idiomatic std::variant<>-isms to not rely on vtables/unique_ptr overhead this should allow the compiler to emit better code of course it's a tiny optimisation and only CPU side, but allows us to reduce indirection which is almost always a good thing "but youre passing more parameters to the function!!!" its literally memoized into a register my friend Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3758 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
* vk_rasterizer: flip scissor y on lower left origin mode (#13122)liamwhite2024-02-271-7/+4
|
* Implement vertex array first and subsequent drawsKelebek12023-10-141-1/+23
|
* video_core: drawtexture support upscaleFeng Chen2023-06-161-3/+7
|
* video_core: Invalid index_buffer flag when inline_index drawFengChen2023-03-121-0/+1
|
* Address feedbackFeng Chen2023-01-161-2/+2
|
* video_core: Implement maxwell3d draw texture methodFeng Chen2023-01-051-0/+31
|
* Video_core: Address feedbackFernando Sahmkow2023-01-041-5/+8
|
* MacroHLE: Final cleanup and fixes.Fernando Sahmkow2023-01-011-1/+2
|
* MacroHLE: Refactor MacroHLE system.Fernando Sahmkow2023-01-011-0/+6
|
* MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect.Fernando Sahmkow2023-01-011-1/+1
|
* MacroHLE: Add MultidrawIndirect HLE Macro.Fernando Sahmkow2023-01-011-0/+21
|
* Merge pull request #9406 from vonchenplus/topologybunnei2022-12-121-24/+34
|\ | | | | video_core: Adjust topology update logic and Adjust Clear Manage
| * video_core: Add vertex_array_instance_* sbubbed called warningFengChen2022-12-081-0/+5
| |
| * video_core: The draw manager manages whether Clear is required.FengChen2022-12-081-4/+9
| |
| * video_core: Adjust topology update logicFengChen2022-12-081-21/+21
| |
* | Fix compilation errorSalvage2022-12-091-1/+1
|/
* video_core: Implement maxwell3d draw manager and split draw logicFeng Chen2022-12-081-0/+191