| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
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.
|
|
This function was not being used.
|
|
When we copy into a buffer, it might contain data modified from the GPU
on the same pages. Because of this, we have to flush the contents before
writing new data.
An alternative approach would be to write the data in place, but games
can also write data in other ways, invalidating our contents.
Fixes geometry in Zombie Panic in Wonderland DX.
|
|
Allow flushing rasterizer contents based on a GPU address.
|
|
The current texture cache has several points that hurt maintainability
and performance. It's easy to break unrelated parts of the cache
when doing minor changes. The cache can easily forget valuable
information about the cached textures by CPU writes or simply by its
normal usage.The current texture cache has several points that hurt
maintainability and performance. It's easy to break unrelated parts
of the cache when doing minor changes. The cache can easily forget
valuable information about the cached textures by CPU writes or simply
by its normal usage.
This commit aims to address those issues.
|
|
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>
|
|
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.
|
|
This doesn't modify internal member state, so it can be marked as const.
|
|
Add an extra step in GPU initialization to be able to initialize render
backends with a valid GPU instance.
|
|
|
|
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.
* fixup! kernel: memory: Improve implementation of device shared memory.
* fixup! kernel: memory: Improve implementation of device shared memory.
|
|
|
|
|
|
|
|
|
|
- Minor perf improvement.
|
|
|
|
|
|
With all of the interfaces ready for migration, it's trivial to migrate
over GetPointer().
|
|
|
|
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.
|
|
|
|
This also reverses the changes to make invalidation and flushing through
the GPU address.
|
|
|
|
Corrects the typo in its name and marks the function as a const member
function, given it doesn't actually modify memory manager state.
|
|
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.
|
|
|
|
This detects when a GPU Memory Block is not continous within host cpu
memory.
|
|
|
|
Use ReadBlockUnsafe on TIC and TSC reading as memory is never flushed
from host GPU there.
|
|
|
|
- Fixes graphical issues with Chocobo's Mystery Dungeon EVERY BUDDY!
- Fixes a crash with Mario Tennis Aces
|
|
Given this doesn't actually alter internal state, this can be made a
const member function.
|
|
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.
|
|
Allows retrieving read-only pointers from a const context externally.
|
|
This doesn't modify internal state, so it can be made a const member
function.
|
|
This doesn't modify any internal state, so it can be made a const member
function to allow its use in const contexts.
|
|
|
|
|
|
|
|
- Avoid a crash in Xenoblade Chronicles 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
|
|
|
|
- Fixes a bug with Undertale using 0 for a render target.
|
|
- This fixes rendering when changing areas in Super Mario Odyssey.
|
|
* 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
|
|
|
|
We already have a function that does what this code was doing, so let's
use that instead.
|
|
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.
|
|
|
|
It removes a mapping previously created with the MapBufferEx ioctl.
|
|
|
|
|
|
|
|
Also removed some dead code and added memory map consistency asserts.
|
|
Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there.
|
|
|