| Age | Commit message (Collapse) | Author |
|
gl_shader_decompiler: Avoid copies where applicable
|
|
video_core: gl_shader_decompiler: Fix implicit fallthrough errors.
|
|
|
|
Avoids unnecessary reference count increments where applicable and also
avoids reallocating a vector.
Unlikely to make a huge difference, but given how trivial of an
amendment it is, why not?
|
|
Since yesterday, this breaks the build on linux.
So let's fix it.
|
|
|
|
gl_query_cache: Resolve use-after-move in CachedQuery move assignment operator
|
|
CMakeLists: Specify -Wextra on linux builds
|
|
buffer_cache: Return handles instead of pointer to handles
|
|
The original idea of returning pointers is that handles can be moved.
The problem is that the implementation didn't take that in mind and made
everything harder to work with. This commit drops pointer to handles and
returns the handles themselves. While it is still true that handles can
be invalidated, this way we get an old handle instead of a dangling
pointer.
This problem can be solved in the future with sparse buffers.
|
|
Avoids potential invalid junk data from being read.
|
|
Previously this was mutable even though it shouldn't be.
|
|
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.
|
|
shader/memory: Implement RED.E.ADD and minor changes to ATOM
|
|
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
|
|
gl_shader_cache: Use CompileDepth::FullDecompile on GLSL
|
|
gl_texture_cache: Fix layered texture attachment base level
|
|
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.
|
|
Credits go to gdkchan from Ryujinx for finding constant attributes are
used in retail games.
|
|
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.
|
|
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.
|
|
gl_rasterizer: Implement line widths and smooth lines
|
|
texture_cache: Remove preserve_contents
|
|
gl_texture_cache: Attach view instead of base texture for layered attchments
|
|
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.
|
|
Avoiding bitwise expressions, this fixes Turing issues in shaders using
half float merges that affected several games.
|
|
preserve_contents was always true. We can't assume we don't have to
preserve clears because scissored and color masked clears exist.
This removes preserve_contents and assumes it as true at all times.
|
|
This way we are not ignoring the base layer of the current texture.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
video_core: Use native ASTC when available
|
|
Implements a reduction operation. It's an atomic operation that doesn't
return a value.
This commit introduces another primitive because some shading languages
might have a primitive for reduction operations.
|
|
shader_decompiler: Remove FragCoord.w hack and change IPA implementation
|
|
gl_rasterizer: Mark cleared textures as dirty
|
|
Refactor Context management (Fixes renderdoc on opengl issues)
|
|
Credits go to gdkchan and Ryujinx. The pull request used for this can
be found here: https://github.com/Ryujinx/Ryujinx/pull/1082
yuzu was already using the header for interpolation, but it was missing
the FragCoord.w multiplication described in the linked pull request.
This commit finally removes the FragCoord.w == 1.0f hack from the shader
decompiler.
While we are at it, this commit renames some enumerations to match
Nvidia's documentation (linked below) and fixes component declaration
order in the shader program header (z and w were swapped).
https://github.com/NVIDIA/open-gpu-doc/blob/master/Shader-Program-Header/Shader-Program-Header.html
|
|
|
|
|
|
|
|
Fixes a potential edge case where cleared textures read from the CPU
were not flushed.
|
|
shader_decode: Implement partial ATOM/ATOMS instr
|
|
|
|
|
|
|