summaryrefslogtreecommitdiffstats
path: root/src/video_core/dma_pusher.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Core: Clang format and other small issues.Fernando Sahmkow2024-01-191-2/+2
|
* SMMU: Initial adaptation to video_core.Fernando Sahmkow2024-01-191-5/+5
|
* VideoCore: Implement DispatchIndirectFernando Sahmkow2023-08-271-6/+22
|
* DMA Pusher: Fix regression caused by guest memory optimizationsFernando Sahmkow2023-08-261-0/+8
|
* Use spans over guest memory where possible instead of copying data.Kelebek12023-07-031-16/+10
|
* DMAPusher: Improve collection of non executing methodsFernando Sahmkow2023-01-011-0/+6
|
* Revert Buffer cache changes and setup additional macros.Fernando Sahmkow2023-01-011-4/+13
|
* MacroHLE: Reduce massive calculations on sizing estimation.Fernando Sahmkow2023-01-011-1/+2
|
* MacroHLE: Refactor MacroHLE system.Fernando Sahmkow2023-01-011-3/+6
|
* MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect.Fernando Sahmkow2023-01-011-1/+2
|
* MacroHLE: Add MultidrawIndirect HLE Macro.Fernando Sahmkow2023-01-011-6/+8
|
* scratch_buffer: Explicitly defing resize and resize_destructive functionsameerj2022-12-201-1/+1
| | | | | resize keeps previous data intact when the buffer grows resize_destructive destroys the previous data when the buffer grows
* dma_pusher: Rework command_headers usageameerj2022-12-201-7/+10
| | | | Uses ScratchBuffer and avoids overwriting the command_headers buffer with the prefetch_command_list
* VideoCore: Refactor fencing system.Fernando Sahmkow2022-10-061-3/+0
|
* VideoCore: implement channels on gpu caches.Fernando Sahmkow2022-10-061-8/+15
|
* 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.
* video_core: Reduce unused includesameerj2022-03-191-1/+0
|
* BufferCache: Additional download fixes.Fernando Sahmkow2021-07-091-2/+8
|
* video_core: Reimplement the buffer cacheReinUsesLisp2021-02-131-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Reimplement the buffer cache using cached bindings and page level granularity for modification tracking. This also drops the usage of shared pointers and virtual functions from the cache. - Bindings are cached, allowing to skip work when the game changes few bits between draws. - OpenGL Assembly shaders no longer copy when a region has been modified from the GPU to emulate constant buffers, instead GL_EXT_memory_object is used to alias sub-buffers within the same allocation. - OpenGL Assembly shaders stream constant buffer data using glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In theory this should save one hash table resolve inside the driver compared to glBufferSubData. - A new OpenGL stream buffer is implemented based on fences for drivers that are not Nvidia's proprietary, due to their low performance on partial glBufferSubData calls synchronized with 3D rendering (that some games use a lot). - Most optimizations are shared between APIs now, allowing Vulkan to cache more bindings than before, skipping unnecesarry work. This commit adds the necessary infrastructure to use Vulkan object from OpenGL. Overall, it improves performance and fixes some bugs present on the old cache. There are still some edge cases hit by some games that harm performance on some vendors, this are planned to be fixed in later commits.
* video_core: Resolve more variable shadowing scenariosLioncash2020-12-041-2/+7
| | | | | | Resolves variable shadowing scenarios up to the end of the OpenGL code to make it nicer to review. The rest will be resolved in a following commit.
* video_core: dma_pusher: Remove integrity check on command lists.bunnei2020-11-071-25/+1
| | | | - This seems to cause softlocks in Breath of the Wild.
* video_core: dma_pusher: Add support for integrity checks.bunnei2020-11-011-0/+24
| | | | - Log corrupted command lists, rather than crash.
* video_core: dma_pusher: Add support for prefetched command lists.bunnei2020-11-011-23/+33
|
* DmaPusher: Remove dead code in stepDavid Marcec2020-05-161-8/+1
|
* VideoCore/GPU: Delegate subchannel engines to the dma pusher.Fernando Sahmkow2020-04-281-3/+17
|
* DMAPusher: Propagate multimethod writes into the engines.Fernando Sahmkow2020-04-231-9/+21
|
* GPU: Delay Fences.Fernando Sahmkow2020-04-221-0/+1
|
* BufferCache: Implement OnCPUWrite and SyncGuestHostFernando Sahmkow2020-04-221-0/+1
|
* GPU: Refactor synchronization on Async GPUFernando Sahmkow2020-04-221-0/+1
|
* dma_pusher: Remove reliance on the global system instanceLioncash2020-04-191-2/+2
| | | | | With this, the video core is now has no calls to the global system instance at all.
* video_core: Reintroduce dirty flags infrastructureReinUsesLisp2020-02-281-0/+3
|
* gl_rasterizer: Remove dirty flagsReinUsesLisp2020-02-281-3/+0
|
* GPU: Flush commands on every dma pusher step.Fernando Sahmkow2019-07-261-0/+1
| | | | | | This commit ensures that the host gpu is constantly fed with commands to work with, while the guest gpu keeps producing the rest of the commands. This reduces syncing time between host and guest gpu.
* Maxwell3D: Rework the dirty system to be more consistant and scaleableFernando Sahmkow2019-07-171-1/+1
|
* Dma_pusher: ASSERT on empty command_listFernando Sahmkow2019-05-191-0/+7
| | | | | This is a measure to avoid crashes on command list reading as an empty command_list is considered a NOP.
* Merge pull request #2322 from ReinUsesLisp/wswitchbunnei2019-04-291-0/+2
|\ | | | | video_core: Silent -Wswitch warnings
| * video_core: Silent -Wswitch warningsReinUsesLisp2019-04-181-0/+2
| |
* | Use ReadBlockUnsafe for fetyching DMA CommandListsFernando Sahmkow2019-04-161-2/+2
|/
* video_core/texures/texture: Remove unnecessary includesLioncash2019-04-061-0/+1
| | | | | | Nothing in this header relies on common_funcs or the memory manager. This gets rid of reliance on indirect inclusions in the OpenGL caches.
* video_core: Refactor to use MemoryManager interface for all memory access.bunnei2019-03-161-5/+2
| | | | | | | | | | | # Conflicts: # src/video_core/engines/kepler_memory.cpp # src/video_core/engines/maxwell_3d.cpp # src/video_core/morton.cpp # src/video_core/morton.h # src/video_core/renderer_opengl/gl_global_cache.cpp # src/video_core/renderer_opengl/gl_global_cache.h # src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
* dma_pusher: Store command_list_header by copyReinUsesLisp2019-03-081-1/+1
| | | | | | Instead of holding a reference that will get invalidated by dma_pushbuffer.pop(), hold it as a copy. This doesn't have any performance cost since CommandListHeader is 8 bytes long.
* video_core/dma_pusher: Simplyfy Step() logic.Markus Wick2019-02-191-78/+77
| | | | | As fetching command list headers and and the list of command headers is a fixed 1:1 relation now, they can be implemented within a single call. This cleans up the Step() logic quite a bit.
* video_core/dma_pusher: The full list of headers at once.Markus Wick2019-02-191-48/+56
| | | | | Fetching every u32 from memory leads to a big overhead. So let's fetch all of them as a block if possible. This reduces the Memory::* calls by the dma_pusher by a factor of 10.
* video_core: Assert on invalid GPU to CPU address queriesReinUsesLisp2019-02-031-2/+4
|
* dma_pushbuffer: Optimize to avoid loop and copy on Push.bunnei2018-11-281-2/+10
|
* gpu: Move command list profiling to DmaPusher::DispatchCalls.bunnei2018-11-281-0/+5
|
* gpu: Rewrite GPU command list processing with DmaPusher class.bunnei2018-11-271-0/+110
- More accurate impl., fixes Undertale (among other games).