Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
According to Atmosphére (https://github.com/Atmosphere-NX/Atmosphere/blob/c7026b90940a1d88f9c10a6d98263bf22e654fa5/libraries/libstratosphere/include/stratosphere/ro/ro_types.hpp), nrr_kind (Atmosphére calls it "type") is 7.0.0+
|
|
This was based on Switchbrew pages:
https://switchbrew.org/wiki/NRR
https://switchbrew.org/wiki/NRO
|
|
shader/other: Implement MEMBAR.CTS
|
|
|
|
maxwell_3d: Reduce severity of logs that can be spammed
|
|
texture_cache: Implement depth stencil texture swizzles
|
|
patch_manager: Add support for case-sensitivity on Linux
|
|
These logs were killing performance on some games when they were
spammed. Reduce them to Debug severity.
|
|
|
|
|
|
gl_shader_manager: Unbind GLSL program when binding a host pipeline
|
|
Changes many patch_manager functions to use a case-less variant of
GetSubdirectory. Fixes patches not showing up on *nix systems when
patch directories are named with odd cases, i.e. `exeFS'.
|
|
main: Log host system memory parameters
|
|
maxwell_to_vk: Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM
|
|
|
|
This silences an assertion we were hitting and uses workgroup memory
barriers when the game requests it.
|
|
Null texture cubes were not considered arrays, causing issues on Vulkan
and OpenGL when creating views.
|
|
This fixes cases where the texture swizzle was applied twice on the same
draw to a texture bound to two different slots.
|
|
Stop ignoring image swizzles on depth and stencil images.
This doesn't fix a known issue on Xenoblade Chronicles 2 where an OpenGL
texture changes swizzles twice before being used. A proper fix would be
having a small texture view cache for this like we do on Vulkan.
|
|
shader/other: Implement BAR.SYNC 0x0
|
|
shader/memory: Implement non-addition operations in RED
|
|
Fixes regression in Link's Awakening caused by 420cc13248350ef5c2d19e0b961cb4185cd16a8a
|
|
shader_decompiler: Visit source nodes even when they assign to RZ
|
|
Correct a series of crashes and intructions on Async GPU and Vulkan Pipeline
|
|
renderer_opengl: Add assembly program code paths
|
|
shader/other: Implement thread comparisons (NV_shader_thread_group)
|
|
buffer_cache: Replace boost::icl::interval_map with boost::intrusive::set
|
|
|
|
Trivially implement this particular case of BAR. Unless games use OpenCL
or CUDA barriers, we shouldn't hit any other case here.
|
|
Trivially implement these instructions. They are used in Astral Chain.
|
|
Hardware S2R special registers match gl_Thread*MaskNV. We can trivially
implement these using Nvidia's extension on OpenGL or naively stubbing
them with the ARB instructions to match. This might cause issues if the
host device warp size doesn't match Nvidia's. That said, this is
unlikely on proper shaders.
Refer to the attached url for more documentation about these flags.
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt
|
|
Some operations like atomicMin were ignored because they returned were
being stored to RZ. This operations have a side effect and it was being
ignored.
|
|
Atomic instructions can be used without returning anything and this is
valid code. Remove the assert.
|
|
|
|
Drop the std::list hack to allocate memory indefinitely.
Instead use a custom allocator that keeps references valid until
destruction. This allocates fixed chunks of memory and puts pointers in
a free list. When an allocation is no longer used put it back to the
free list, this doesn't heap allocate because std::vector doesn't change
the capacity. If the free list is empty, allocate a new chunk.
|
|
Most overlaps in the buffer cache only contain one mapped address.
We can avoid close to all heap allocations once the buffer cache is
warmed up by using a small_vector with a stack size of one.
|
|
Instead of using boost::icl::interval_map for caching, use
boost::intrusive::set. interval_map is intended as a container where the
keys can overlap with one another; we don't need this for caching
buffers and a std::set-like data structure that allows us to search with
lower_bound is enough.
|
|
Removing shared pointers is a first step to be able to use intrusive
objects and keep allocations close to one another in memory.
|
|
Minor style changes. Mostly done so I avoid editing it while doing other
changes.
|
|
|
|
This has been wrong since https://github.com/yuzu-emu/yuzu/commit/0432af5ad1ec34f02071f6fdc5fc78149b059f18
I haven't found a game that called this function (and I haven't tried this on a real Switch), and because of this I haven't been able to check if the number in assert OR the string in the assert is wrong, but one of the two is wrong:
NetworkProfileData is 0x18E, while SfNetworkProfileData is 0x17C, according to Switchbrew
Switchbrew doesn't officially say that NetworkProfileData's size is 0x18E but it's possible to calculate its size since Switchbrew provides the size and the offset of all the components of NetworkProfileData (which isn't currently implemented in yuzu, alongside SfNetworkProfileData)
NetworkProfileData documentation: https://switchbrew.org/wiki/Network_Interface_services#NetworkProfileData
SfNetworkProfileData documentation: https://switchbrew.org/wiki/Network_Interface_services#SfNetworkProfileData
Since I trust ogniK's work on reversing NIFM, I'd assume this was just a typo in the string
|