summaryrefslogtreecommitdiffstats
path: root/src/video_core/memory_manager.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* General: Make use of std::nullopt where applicableLioncash2020-09-221-3/+3
| | | | | | | | Allows some implementations to avoid completely zeroing out the internal buffer of the optional, and instead only set the validity byte within the structure. This also makes it consistent how we return empty optionals.
* Merge pull request #4574 from lioncash/const-fnbunnei2020-08-251-2/+2
|\ | | | | memory_manager: Mark IsGranularRange() as a const member function
| * memory_manager: Mark IsGranularRange() as a const member functionLioncash2020-08-241-2/+2
| | | | | | | | This doesn't modify internal member state, so it can be marked as const.
* | video_core: Initialize renderer with a GPUReinUsesLisp2020-08-221-4/+8
|/ | | | | Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
* hle: nvdrv: Rewrite of GPU memory management.bunnei2020-07-261-394/+138
|
* memory_manager: Eliminate variable shadowingLioncash2020-06-201-18/+22
| | | | | | | | Renames some variables to prevent ones in inner scopes from shadowing outer-scoped variables. The Copy* functions have no shadowing, but we rename them anyways to remain consistent with the other functions.
* kernel: memory: Improve implementation of device shared memory. (#3707)bunnei2020-04-231-13/+5
| | | | | | | * kernel: memory: Improve implementation of device shared memory. * fixup! kernel: memory: Improve implementation of device shared memory. * fixup! kernel: memory: Improve implementation of device shared memory.
* video_core: memory_manager: Updates for Common::PageTable changes.bunnei2020-04-171-66/+33
|
* Memory: Correct GCC errors.Fernando Sahmkow2020-04-091-2/+2
|
* GPUMemoryManager: Improve safety of memory reads.Fernando Sahmkow2020-04-081-48/+43
|
* GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddrFernando Sahmkow2020-04-061-5/+5
|
* video_core: memory_manager: Flush/invalidate asynchronously on Unmap.bunnei2020-02-201-1/+10
| | | | - Minor perf improvement.
* Revert "video_core: memory_manager: Use GPU interface for cache functions."bunnei2020-02-151-7/+7
|
* video_core: memory_manager: Use GPU interface for cache functions.bunnei2020-02-081-7/+7
|
* core/memory: Migrate over GetPointer()Lioncash2019-11-271-2/+2
| | | | | With all of the interfaces ready for migration, it's trivial to migrate over GetPointer().
* prefer system reference over global accessorMichael Scire2019-07-091-7/+5
|
* Prevent merging of device mapped memory blocks.Michael Scire2019-07-091-1/+23
| | | | | | | This sets the DeviceMapped attribute for GPU-mapped memory blocks, and prevents merging device mapped blocks. This prevents memory mapped from the gpu from having its backing address changed by block coalesce.
* texture_cache: Handle uncontinuous surfaces.Fernando Sahmkow2019-06-211-2/+3
|
* Change texture_cache chaching from GPUAddr to CacheAddrFernando Sahmkow2019-06-211-1/+1
| | | | | This also reverses the changes to make invalidation and flushing through the GPU address.
* Deglobalize Memory Manager on texture cahe and Implement Invalidation and Flushing using GPUVAddrFernando Sahmkow2019-06-211-1/+1
|
* video_core/memory_manager: Mark IsBlockContinuous() as a const member functionLioncash2019-05-101-2/+2
| | | | | Corrects the typo in its name and marks the function as a const member function, given it doesn't actually modify memory manager state.
* video_core/memory_manager: Default the destructor within the cpp fileLioncash2019-05-101-0/+2
| | | | | | Makes the class less surprising when it comes to forward declaring the type, and also prevents inlining the destruction code of the class, given it contains non-trivial types.
* make ReadBlockunsafe and WriteBlockunsafe, ignore invalid pages.Fernando Sahmkow2019-04-201-4/+12
|
* Implement IsBlockContinousFernando Sahmkow2019-04-171-0/+8
| | | | | This detects when a GPU Memory Block is not continous within host cpu memory.
* Document unsafe versions and add BlockCopyUnsafeFernando Sahmkow2019-04-161-5/+13
|
* Use ReadBlockUnsafe on TIC and TSC readingFernando Sahmkow2019-04-161-0/+2
| | | | | Use ReadBlockUnsafe on TIC and TSC reading as memory is never flushed from host GPU there.
* GPU MemoryManager: Implement ReadBlockUnsafe and WriteBlockUnsafeFernando Sahmkow2019-04-161-0/+32
|
* memory_manager: Improved implementation of read/write/copy block.bunnei2019-04-061-10/+77
| | | | | - Fixes graphical issues with Chocobo's Mystery Dungeon EVERY BUDDY! - Fixes a crash with Mario Tennis Aces
* video_core/memory_manager: Make Read() a const qualified member functionLioncash2019-04-061-5/+5
| | | | | Given this doesn't actually alter internal state, this can be made a const member function.
* video_core/memory_manager: Make ReadBlock() a const qualifier member functionLioncash2019-04-061-1/+1
| | | | | | | | Now, since we have a const qualified variant of GetPointer(), we can put it to use in ReadBlock() to retrieve the source pointer that is passed into memcpy. Now block reading may be done from a const context.
* video_core/memory_manager: Add a const qualified variant of GetPointer()Lioncash2019-04-061-2/+16
| | | | Allows retrieving read-only pointers from a const context externally.
* video_core/memory_manager: Make FindFreeRegion() a const member functionLioncash2019-04-061-9/+10
| | | | | This doesn't modify internal state, so it can be made a const member function.
* video_core/memory_manager: Make GpuToCpuAddress() a const member functionLioncash2019-04-061-2/+2
| | | | | This doesn't modify any internal state, so it can be made a const member function to allow its use in const contexts.
* memory_manager: Cleanup FindFreeRegion.bunnei2019-03-211-10/+4
|
* memory_manager: Use Common::AlignUp in public interface as needed.bunnei2019-03-211-11/+22
|
* memory_manager: Bug fixes and further cleanup.bunnei2019-03-211-66/+65
|
* memory_manager: Add protections for invalid GPU addresses.bunnei2019-03-211-15/+35
| | | | - Avoid a crash in Xenoblade Chronicles 2.
* gpu: Rewrite virtual memory manager using PageTable.bunnei2019-03-211-134/+338
|
* video_core: Refactor to use MemoryManager interface for all memory access.bunnei2019-03-161-9/+46
| | | | | | | | | | | # 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
* memory_manager: Check for reserved page statusReinUsesLisp2019-02-031-1/+2
|
* memory_manager: Do not allow 0 to be a valid GPUVAddr.bunnei2018-11-231-0/+7
| | | | - Fixes a bug with Undertale using 0 for a render target.
* memory_manager: Do not MapBufferEx over already in use memory.bunnei2018-11-011-27/+48
| | | | - This fixes rendering when changing areas in Super Mario Odyssey.
* global: Use std::optional instead of boost::optional (#1578)Frederic L2018-10-301-4/+4
| | | | | | | | | | | | | | | | * get rid of boost::optional * Remove optional references * Use std::reference_wrapper for optional references * Fix clang format * Fix clang format part 2 * Adressed feedback * Fix clang format and MacOS build
* memory_manager: Add a method for querying the end of a mapped GPU region.bunnei2018-10-161-0/+10
|
* video_core/memory_manager: Replace a loop with std::array's fill() function in PageSlot()Lioncash2018-07-241-3/+1
| | | | | We already have a function that does what this code was doing, so let's use that instead.
* video_core/memory_manager: Avoid repeated unnecessary page slot lookupsLioncash2018-07-241-11/+21
| | | | | | | We don't need to keep calling the same function over and over again in a loop, especially when the behavior is slightly non-trivial. We can just keep a reference to the looked up location and do all the checking and assignments based off it instead.
* GPU: Allow GpuToCpuAddress to return boost::none for unmapped addresses.Subv2018-07-021-2/+2
|
* GPU: Implemented nvhost-as-gpu's UnmapBuffer ioctl.Subv2018-05-201-0/+19
| | | | It removes a mapping previously created with the MapBufferEx ioctl.
* memory_manager: Add implement CpuToGpuAddress.bunnei2018-04-241-0/+17
|
* memory_manager: Make GpuToCpuAddress return an optional.bunnei2018-04-241-1/+6
|
* memory_manager: Use GPUVAdddr, not PAddr, for GPU addresses.bunnei2018-04-241-36/+36
|
* GPU: Make the GPU virtual memory manager use 16 page bits and 10 page table bits.Subv2018-04-231-33/+20
| | | | Also removed some dead code and added memory map consistency asserts.
* Make a GPU class in VideoCore to contain the GPU state.Subv2018-02-121-0/+110
Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there.