aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/dma_pusher.cpp
AgeCommit message (Collapse)Author
2024-01-18Core: Clang format and other small issues.Fernando Sahmkow
2024-01-18SMMU: Initial adaptation to video_core.Fernando Sahmkow
2023-08-27VideoCore: Implement DispatchIndirectFernando Sahmkow
2023-08-26DMA Pusher: Fix regression caused by guest memory optimizationsFernando Sahmkow
2023-07-02Use spans over guest memory where possible instead of copying data.Kelebek1
2023-01-01DMAPusher: Improve collection of non executing methodsFernando Sahmkow
2023-01-01Revert Buffer cache changes and setup additional macros.Fernando Sahmkow
2023-01-01MacroHLE: Reduce massive calculations on sizing estimation.Fernando Sahmkow
2023-01-01MacroHLE: Refactor MacroHLE system.Fernando Sahmkow
2023-01-01MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect.Fernando Sahmkow
2023-01-01MacroHLE: Add MultidrawIndirect HLE Macro.Fernando Sahmkow
2022-12-19scratch_buffer: Explicitly defing resize and resize_destructive functionsameerj
resize keeps previous data intact when the buffer grows resize_destructive destroys the previous data when the buffer grows
2022-12-19dma_pusher: Rework command_headers usageameerj
Uses ScratchBuffer and avoids overwriting the command_headers buffer with the prefetch_command_list
2022-10-06VideoCore: Refactor fencing system.Fernando Sahmkow
2022-10-06VideoCore: implement channels on gpu caches.Fernando Sahmkow
2022-04-23general: Convert source file copyright comments over to SPDXMorph
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.
2022-03-19video_core: Reduce unused includesameerj
2021-07-09BufferCache: Additional download fixes.Fernando Sahmkow
2021-02-13video_core: Reimplement the buffer cacheReinUsesLisp
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.
2020-12-04video_core: Resolve more variable shadowing scenariosLioncash
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.
2020-11-07video_core: dma_pusher: Remove integrity check on command lists.bunnei
- This seems to cause softlocks in Breath of the Wild.
2020-11-01video_core: dma_pusher: Add support for integrity checks.bunnei
- Log corrupted command lists, rather than crash.
2020-11-01video_core: dma_pusher: Add support for prefetched command lists.bunnei
2020-05-16DmaPusher: Remove dead code in stepDavid Marcec
2020-04-27VideoCore/GPU: Delegate subchannel engines to the dma pusher.Fernando Sahmkow
2020-04-23DMAPusher: Propagate multimethod writes into the engines.Fernando Sahmkow
2020-04-22GPU: Delay Fences.Fernando Sahmkow
2020-04-22BufferCache: Implement OnCPUWrite and SyncGuestHostFernando Sahmkow
2020-04-22GPU: Refactor synchronization on Async GPUFernando Sahmkow
2020-04-19dma_pusher: Remove reliance on the global system instanceLioncash
With this, the video core is now has no calls to the global system instance at all.
2020-02-28video_core: Reintroduce dirty flags infrastructureReinUsesLisp
2020-02-28gl_rasterizer: Remove dirty flagsReinUsesLisp
2019-07-26GPU: Flush commands on every dma pusher step.Fernando Sahmkow
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.
2019-07-17Maxwell3D: Rework the dirty system to be more consistant and scaleableFernando Sahmkow
2019-05-19Dma_pusher: ASSERT on empty command_listFernando Sahmkow
This is a measure to avoid crashes on command list reading as an empty command_list is considered a NOP.
2019-04-28Merge pull request #2322 from ReinUsesLisp/wswitchbunnei
video_core: Silent -Wswitch warnings
2019-04-18video_core: Silent -Wswitch warningsReinUsesLisp
2019-04-16Use ReadBlockUnsafe for fetyching DMA CommandListsFernando Sahmkow
2019-04-06video_core/texures/texture: Remove unnecessary includesLioncash
Nothing in this header relies on common_funcs or the memory manager. This gets rid of reliance on indirect inclusions in the OpenGL caches.
2019-03-16video_core: Refactor to use MemoryManager interface for all memory access.bunnei
# 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
2019-03-08dma_pusher: Store command_list_header by copyReinUsesLisp
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.
2019-02-19video_core/dma_pusher: Simplyfy Step() logic.Markus Wick
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.
2019-02-19video_core/dma_pusher: The full list of headers at once.Markus Wick
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.
2019-02-03video_core: Assert on invalid GPU to CPU address queriesReinUsesLisp
2018-11-27dma_pushbuffer: Optimize to avoid loop and copy on Push.bunnei
2018-11-27gpu: Move command list profiling to DmaPusher::DispatchCalls.bunnei
2018-11-26gpu: Rewrite GPU command list processing with DmaPusher class.bunnei
- More accurate impl., fixes Undertale (among other games).