| Age | Commit message (Collapse) | Author |
|
Two variables can be references, while two others can be std::moved.
Makes for 4 less atomic reference count increments and decrements.
|
|
Allows reporting more cases where logic errors may exist, such as
implicit fallthrough cases, etc.
We currently ignore unused parameters, since we currently have many
cases where this is intentional (virtual interfaces).
While we're at it, we can also tidy up any existing code that causes
warnings. This also uncovered a few bugs as well.
|
|
Texture Cache: Read current data when flushing a 3D segment.
|
|
shader/memory: Implement RED.E.ADD and minor changes to ATOM
|
|
It's undefined behavior to pass a null pointer to std::fread and
std::fwrite, even if the length passed in is zero, so we must perform
the precondition checking ourselves.
A common case where this can occur is when passing in the data of an
empty std::vector and size, as an empty vector will typically have a
null internal buffer.
While we're at it, we can move the implementation out of line and add
debug checks against passing in nullptr to std::fread and std::fwrite.
|
|
This can result in silent logic bugs within code, and given the amount
of times these kind of warnings are caused, they should be flagged at
compile-time so no new code is submitted with them.
|
|
|
|
gl_rasterizer: Implement constant vertex attributes
|
|
This PR corrects flushing of 3D segments when data of other segments is
mixed, this aims to preserve the data in place.
|
|
maxwell_to_vk: Add uint16 vertex formats
|
|
gl_shader_cache: Use CompileDepth::FullDecompile on GLSL
|
|
gl_texture_cache: Fix layered texture attachment base level
|
|
shader/arithmetic: Add FCMP_CR variant
|
|
Revert "gl_shader_decompiler: Implement merges with bitfieldInsert"
|
|
|
|
Avoid invalid fallbacks.
|
|
When the dynamic state is specified, pViewports and pScissors are
ignored, quoting the specification:
pViewports is a pointer to an array of VkViewport structures, defining
the viewport transforms. If the viewport state is dynamic, this member
is ignored.
That said, AMD's proprietary driver itself seem to read it regardless of
what the specification says.
|
|
vk_rasterizer: Default to 1 viewports with a size of 0
|
|
This is a simple optimization as Buffer Copies are mostly used for texture recycling. They are, however, useful when games abuse undefined behavior but most 3D APIs forbid it.
|
|
- Used by Animal Crossing: New Horizons.
|
|
This reverts commit 05cf27083608bebd3ee4c38f2f948c8f2030f881.
Apparently the first approach using floats instead of bitfieldInert
worked better for Fire Emblem: Three Houses. Reverting to get that
behavior back.
|
|
Adds another variant of FCMP.
|
|
service: friend: Stub IFriendService::GetBlockedUserListIds.
|
|
Credits go to gdkchan from Ryujinx for finding constant attributes are
used in retail games.
|
|
|
|
- This is safe to stub, as there should be no adverse consequences from reporting no blocked users.
|
|
Silence validation layer errors.
|
|
From my testing on a Splatoon 2 shader that takes 3800ms on average to
compile changing to FullDecompile reduces it to 900ms on average.
The shader decoder will automatically fallback to a more naive method if
it can't use full decompile.
|
|
Adds optional support for Nsight Aftermath. It is enabled through
ENABLE_NSIGHT_AFTERMATH in cmake. A path to the SDK has to be provided
by the environment variable NSIGHT_AFTERMATH_SDK.
Nsight Aftermath allows an application to generate "minidumps" of the
GPU state when a device loss happens. By analysing these on Nsight we
can know what a game was doing and why it triggered a device loss.
The dump is generated inside %APPDATA%\yuzu\log\gpucrash and this
directory is deleted every time a new instance is initialized with
Nsight enabled.
To enable it on yuzu there has a to be a driver and device capable of
running Nsight Aftermath on Vulkan. That means only Turing based GPUs
on the latest stable driver, beta drivers won't work for now.
It is manually enabled in Configuration>Debug>Enable Graphics Debugging
because when using all debugging capabilities there is a runtime cost.
|
|
Makes popup texts more compact and clear and also links our quickstart guide now.
Also removes OnMenuSelectEmulatedDirectory from the File dropdown, as the action already exists in the Filesystem tab and provides better visual feedback there.
|
|
The base level is already included in the texture view. If we specify
the base level in the texture again, this will end up in the incorrect
level and potentially out of bounds.
|
|
|
|
|
|
renderer_vulkan: Drop Vulkan-Hpp
|
|
gl_rasterizer: Implement line widths and smooth lines
|
|
texture_cache: Remove preserve_contents
|
|
texture/astc: More small ASTC optimizations
|
|
shader/conversion: Implement I2I sign extension, saturation and selection
|
|
gl_texture_cache: Attach view instead of base texture for layered attchments
|
|
gl_shader_decompiler: Improve generated code in HMergeH*
|
|
shader/texture: Remove type mismatches management from shader decoder
|
|
Implements "legacy" features from OpenGL present on hardware such as
smooth lines and line width.
|
|
This also fixes Turing issues but it avoids doing more bitcasts. This
should improve the generated code while also avoiding more points where
compilers can flush floats.
|
|
service/vi: Partially implement BufferQueue disconnect
|
|
shader/video: Partially implement VMNMX
|
|
video_core: Add MSAA registers in 3D engine and TIC
|
|
Avoiding bitwise expressions, this fixes Turing issues in shaders using
half float merges that affected several games.
|
|
Implements the common usages for VMNMX. Inputs with a different size
than 32 bits are not supported and sign mismatches aren't supported
either.
VMNMX works as follows:
It grabs Ra and Rb and applies a maximum/minimum on them (this is
defined by .MX), having in mind the input sign. This result can then be
saturated. After the intermediate result is calculated, it applies
another operation on it using Rc. These operations are merges,
accumulations or another min/max pass.
This instruction allows to implement with a more flexible approach GCN's
min3 and max3 instructions (for instance).
|
|
This adds the registers used for multisampling. It doesn't implement
anything for now.
|
|
Buffer queue: Correct behavior of free buffer.
|