| Age | Commit message (Collapse) | Author |
|
Pad FixedPipelineState's size to 384 bytes to be a multiple of 16.
Compare the whole struct with std::memcmp and hash with CityHash. Using
CityHash instead of a naive hash should reduce the number of collisions.
Improve used type traits to ensure this operation is safe.
With these changes the improvements to the hashable pipeline state are:
Optimized structure
Hash: 89 ns
Comparison: 103 ns
Construction*: 164 ns
Struct size: 384 bytes
Original structure
Hash: 148 ns
Equal: 174 ns
Construction*: 281 ns
Size: 1384 bytes
* Attribute state initialization is not measured
These measures are averages taken with std::chrono::high_accuracy_clock
on MSVC shipped on Visual Studio 16.6.0 Preview 2.1.
|
|
Reduce FixedPipelineState's size to 364 bytes.
|
|
Reduce FixedPipelineState's size to 600 bytes.
|
|
Reduce FixedPipelineState's size to 632 bytes.
|
|
Reduce FixedPipelineState's size from 1384 to 664 bytes
|
|
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.
|
|
Nvidia recently introduced a new memory type for data streaming
(awesome!), but yuzu was assuming that all heaps had enough memory
for the assumed stream buffer size (256 MiB).
This worked fine on AMD but Nvidia's new memory heap was smaller than
256 MiB. This commit changes this assumption and allocates a bit less
than the size of the preferred heap, with a maximum of 256 MiB (to avoid
allocating all system memory on integrated devices).
- Fixes a crash on NVIDIA 450.82.0.0
|
|
|
|
Implement a new virtual memory manager
|
|
gl_query_cache: Resolve use-after-move in CachedQuery move assignment operator
|
|
|
|
- helpful to disambiguate Kernel::Memory namespace.
|
|
|
|
Only the first element of the returned pair is ever used.
|
|
Some variables aren't used, so we can remove these.
Unfortunately, diagnostics are still reported on structured bindings
even when annotated with [[maybe_unused]], so we need to unpack the
elements that we want to use manually.
|
|
Same behavior, less code.
|
|
We can just specify the initializers.
|
|
CMakeLists: Specify -Wextra on linux builds
|
|
nouveau expects this to be true but it doesn't set it.
|
|
Implement indexed quads (GL_QUADS used with glDrawElements*) with a
compute pass conversion.
The compute shader converts from uint8/uint16/uint32 indices to uint32.
The format is passed through push constants to avoid having different
variants of the same shader.
- Used by Fast RMX
- Used by Xenoblade Chronicles 2 (it still has graphical due to
synchronization issues on Vulkan)
|
|
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.
|
|
decode/shift: Remove unused variable within Shift()
|
|
surface_view: Add missing operator!= to ViewParams
|
|
gl_device: Mark stage_swizzle as constexpr
|
|
surface_base: Make IsInside() a const member function
|
|
control_flow: Make use of std::move in TryInspectAddress()
|
|
Removes a redundant variable that is already satisfied by the IsFull()
utility function.
|
|
Provides logical symmetry to the interface.
|
|
This doesn't modify internal state, so this can be made const.
|
|
video_core: Amend doxygen comment references
|
|
Previously these were all using the red component to derive the indices,
which is definitely not intentional.
|
|
Eliminates redundant atomic reference count increments and decrements.
|
|
Fixes broken documentation references.
|
|
|
|
Avoids potential invalid junk data from being read.
|
|
The components' sizes were mismatched. This corrects that.
|
|
Previously this was mutable even though it shouldn't be.
|
|
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
|
|
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
|