summaryrefslogtreecommitdiffstats
path: root/src/video_core/memory_manager.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* video_core: Implement memory manager page kindFengChen2022-10-171-3/+18
|
* General: address feedbackFernando Sahmkow2022-10-061-1/+1
|
* Buffer Cache: Deduce vertex array limit from memory layout when limit is the highest possible.Fernando Sahmkow2022-10-061-0/+4
|
* DMA & InlineToMemory Engines Rework.bunnei2022-10-061-0/+6
|
* MemoryManager: Finish up the initial implementation.Fernando Sahmkow2022-10-061-4/+7
|
* MemoryManager: initial multi paging system implementation.Fernando Sahmkow2022-10-061-16/+41
|
* Refactor VideoCore to use AS sepparate from Channel.Fernando Sahmkow2022-10-061-0/+9
|
* NVDRV: Remake ASGPUFernando Sahmkow2022-10-061-1/+2
|
* VideoCore: Update MemoryManagerFernando Sahmkow2022-10-061-71/+27
|
* 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.
* Inline2Memory: Flush before writting buffer.Fernando Sahmkow2022-01-291-2/+2
|
* video_core/memory_manager: Deduplicate Read/WriteBlockameerj2021-12-311-0/+5
|
* Texture Cache: Address feedback.Fernando Sahmkow2021-07-041-4/+4
|
* Texture Cache: Improve accuracy of sparse texture detection.Fernando Sahmkow2021-07-041-0/+20
|
* Merge branch 'bytes-to-map-end' into new-bufcache-wipReinUsesLisp2021-02-131-0/+2
|
* gpu: Report renderer errors with exceptionsReinUsesLisp2021-02-131-1/+1
| | | | | | Instead of using a two step initialization to report errors, initialize the GPU renderer and rasterizer on the constructor and report errors through std::runtime_error.
* Merge pull request #5795 from ReinUsesLisp/bytes-to-map-endbunnei2021-01-301-0/+6
|\ | | | | video_core/memory_manager: Add BytesToMapEnd
| * video_core/memory_manager: Add BytesToMapEndReinUsesLisp2021-01-221-0/+6
| | | | | | | | | | Track map address sizes in a flat ordered map and add a method to query the number of bytes until the end of a map in a given address.
* | video_core/memory_manager: Remove unused CopyBlockUnsafeReinUsesLisp2021-01-211-1/+0
| | | | | | | | This function was not being used.
* | video_core/memory_manager: Add GPU address based flush methodReinUsesLisp2021-01-211-0/+2
|/ | | | Allow flushing rasterizer contents based on a GPU address.
* video_core: Resolve more variable shadowing scenariosLioncash2020-12-041-2/+2
| | | | | | 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: NVDEC Implementationameerj2020-10-271-1/+4
| | | | | | | | | | | | | | This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library. The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data. To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library. Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header. Async GPU is not properly implemented at the moment. Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
* memory_manager: Make use of [[nodiscard]] in the interfaceLioncash2020-08-271-17/+17
|
* memory_manager: Make operator+ const qualifiedLioncash2020-08-271-1/+1
| | | | This doesn't modify member state, so it can be marked as const.
* Merge pull request #4574 from lioncash/const-fnbunnei2020-08-251-1/+1
|\ | | | | memory_manager: Mark IsGranularRange() as a const member function
| * memory_manager: Mark IsGranularRange() as a const member functionLioncash2020-08-241-1/+1
| | | | | | | | This doesn't modify internal member state, so it can be marked as const.
* | video_core: Initialize renderer with a GPUReinUsesLisp2020-08-221-2/+5
|/ | | | | 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-106/+66
|
* memory_manager: Eliminate variable shadowingLioncash2020-06-201-6/+6
| | | | | | | | 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.
* video_core: memory_manager: Updates for Common::PageTable changes.bunnei2020-04-171-1/+1
|
* Memory: Address Feedback.Fernando Sahmkow2020-04-081-0/+3
|
* GPUMemoryManager: Improve safety of memory reads.Fernando Sahmkow2020-04-081-4/+1
|
* Buffer Cache: Use vAddr instead of physical memory.Fernando Sahmkow2020-04-061-0/+5
|
* PageTable: move backing addresses to a children class as the CPU page table does not need them.Fernando Sahmkow2020-03-141-1/+1
| | | | | | This PR aims to reduce the memory usage in the CPU page table by moving GPU specific parameters into a child class. This saves 1Gb of Memory for most games.
* Revert "video_core: memory_manager: Use GPU interface for cache functions."bunnei2020-02-151-1/+6
|
* video_core: memory_manager: Use GPU interface for cache functions.bunnei2020-02-081-6/+1
|
* prefer system reference over global accessorMichael Scire2019-07-091-1/+7
|
* GPUVM: Correct GPU VM virtual address spaceFernando Sahmkow2019-06-091-2/+2
|
* 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: Mark the constructor as explicitLioncash2019-05-101-1/+1
| | | | Prevents implicit converting constructions of the memory manager.
* video_core/memory_manager: Default the destructor within the cpp fileLioncash2019-05-101-0/+1
| | | | | | 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.
* video_core/memory_manager: Amend doxygen commentsLioncash2019-05-101-7/+7
| | | | Corrects references to non-existent parameters and corrects typos.
* video_core/memory_manager: Remove superfluous const from function declarationsLioncash2019-05-101-7/+7
| | | | | | | | These are able to be omitted from the declaration of functions, since they don't do anything at the type system level. The definitions of the functions can retain the use of const though, since they make the variables immutable in the implementation of the function where they're used.
* Implement IsBlockContinousFernando Sahmkow2019-04-171-2/+5
| | | | | This detects when a GPU Memory Block is not continous within host cpu memory.
* Use ReadBlockUnsafe for fetyching DMA CommandListsFernando Sahmkow2019-04-161-2/+0
|
* Document unsafe versions and add BlockCopyUnsafeFernando Sahmkow2019-04-161-5/+25
|
* GPU MemoryManager: Implement ReadBlockUnsafe and WriteBlockUnsafeFernando Sahmkow2019-04-161-0/+2
|
* memory_manager: Improved implementation of read/write/copy block.bunnei2019-04-061-1/+6
| | | | | - 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-1/+1
| | | | | 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-0/+1
| | | | Allows retrieving read-only pointers from a const context externally.
* video_core/memory_manager: Make FindFreeRegion() a const member functionLioncash2019-04-061-1/+1
| | | | | 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-1/+1
| | | | | 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-2/+2
|
* memory_manager: Bug fixes and further cleanup.bunnei2019-03-211-7/+7
|
* memory_manager: Add protections for invalid GPU addresses.bunnei2019-03-211-7/+8
| | | | - Avoid a crash in Xenoblade Chronicles 2.
* gpu: Rewrite virtual memory manager using PageTable.bunnei2019-03-211-47/+115
|
* gpu: Move GPUVAddr definition to common_types.bunnei2019-03-211-3/+0
|
* video_core: Refactor to use MemoryManager interface for all memory access.bunnei2019-03-161-1/+16
| | | | | | | | | | | # 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: Do not allow 0 to be a valid GPUVAddr.bunnei2018-11-231-1/+2
| | | | - Fixes a bug with Undertale using 0 for a render target.
* memory_manager: Do not MapBufferEx over already in use memory.bunnei2018-11-011-4/+4
| | | | - This fixes rendering when changing areas in Super Mario Odyssey.
* global: Use std::optional instead of boost::optional (#1578)Frederic L2018-10-301-4/+3
| | | | | | | | | | | | | | | | * 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/+1
|
* GPU: Implemented nvhost-as-gpu's UnmapBuffer ioctl.Subv2018-05-201-0/+1
| | | | It removes a mapping previously created with the MapBufferEx ioctl.
* gl_rasterizer_cache: Update to be based on GPU addresses, not CPU addresses.bunnei2018-04-251-1/+0
|
* memory_manager: Add implement CpuToGpuAddress.bunnei2018-04-241-0/+10
|
* memory_manager: Make GpuToCpuAddress return an optional.bunnei2018-04-241-1/+4
|
* memory_manager: Use GPUVAdddr, not PAddr, for GPU addresses.bunnei2018-04-241-8/+8
|
* GPU: Make the GPU virtual memory manager use 16 page bits and 10 page table bits.Subv2018-04-231-1/+5
| | | | 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/+49
Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there.