| Age | Commit message (Collapse) | Author |
|
This reverts a tested behavior on delay slots not exiting if the exit
flag is set. Currently new tests are required in order to ensure this
behavior.
|
|
shader: Implement AL2P and ALD.PHYS
|
|
Dma_pusher: ASSERT on empty command_list
|
|
Correct possible error on Rasterizer Caches
|
|
shader/shader_ir: Minor changes
|
|
gl_shader_disk_cache: Minor cleanup
|
|
This is a measure to avoid crashes on command list reading as an empty
command_list is considered a NOP.
|
|
video_core/gpu_thread: Remove redundant copy constructor for CommandDataContainer
|
|
GPU/MMEInterpreter: Ignore the 'exit' flag when it's executed inside a delay slot.
|
|
yuzu: Remove explicit types from locks where applicable
|
|
maxwell_3d: reduce severity of different component formats assert.
|
|
video_core/engines/maxwell_3d: Add is_trivially_copyable_v check for Regs
|
|
video_core/engines/maxwell_3d: Simplify for loops into ranged for loops within InitializeRegisterDefaults()
|
|
gl_rasterizer: Pass the right number of array quad vertices count
|
|
gl_rasterizer: Limit OpenGL point size to a minimum of 1
|
|
video_core/engines/engine_upload: Minor tidying
|
|
maxwell_to_gl: Add TriangleFan primitive topology
|
|
constexpr internally links by default, so the inline specifier is
unnecessary.
|
|
Many of these constructors don't even need to be templated. The only
ones that need to be templated are the ones that actually make use of
the parameter pack.
Even then, since std::vector accepts an initializer list, we can supply
the parameter pack directly to it instead of creating our own copy of
the list, then copying it again into the std::vector.
|
|
Operation() overloads where applicable
These overloads don't actually make use of the parameter pack, so they
can be turned into regular non-template function overloads.
|
|
These don't actually modify instance state, so they can be marked as
const member functions
|
|
file
Given the class contains quite a lot of non-trivial types, place the
constructor and destructor within the cpp file to avoid inlining
construction and destruction code everywhere the class is used.
|
|
Avoids performing copies into the pair being returned. Instead, we can
just move the resources into the pair, avoiding the need to make copies
of both the std::string and ShaderEntries struct.
|
|
ShaderDiskCacheOpenGL
Given the offset is assigned a fixed value in the constructor, we can
just assign it directly and get rid of the need to write the name of the
variable again in the constructor initializer list.
|
|
Given the disk shader cache contains non-trivial types, we should
default it in the cpp file in order to prevent inlining of the
complex destruction logic.
|
|
The standard library expects hash specializations that don't throw
exceptions. Make this explicit in the type to allow selection of better
code paths if possible in implementations.
|
|
LoadDecompiledEntry()
We don't need to load the code into a vector and then construct a string
over the data. We can just create a string with the necessary size ahead
of time, and read the data directly into it, getting rid of an
unnecessary heap allocation.
|
|
std::move does nothing when applied to a const variable. Resources can't
be moved if the object is immutable. With this change, we don't end up
making several unnecessary heap allocations and copies.
|
|
Booleans don't have a guaranteed size, but we still want to have them
integrate into the disk cache system without needing to actually use a
different type. We can do this by supplying non-template overloads for
the bool type.
Non-template overloads always have precedence during function
resolution, so this is safe to provide.
This gets rid of the need to smatter ternary conditionals, as well as
the need to use u8 types to store the value in.
|
|
|
|
|
|
|
|
This was reduced due to happening on most games and at such constant
rate that it affected performance heavily for the end user. In general,
we are well aware of the assert and an implementation is already
planned.
|
|
Silences a -Wreorder warning.
|
|
Avoids inlining destruction logic where applicable, and also makes
forward declarations not cause unexpected compilation errors depending
on where the State class is used.
|
|
function declarations
These only apply in the definition of the function. They can be omitted
from the declaration.
|
|
|
|
We can use the named constant instead of using 32 directly.
|
|
within InitializeRegisterDefaults()
Lessens the amount of code that needs to be read, and gets rid of the
need to introduce an indexing variable. Instead, we just operate on the
objects directly.
|
|
std::memset is used to clear the entire register structure, which
requires that the Regs struct be trivially copyable (otherwise undefined
behavior is invoked). This prevents the case where a non-trivial type is
potentially added to the struct.
|
|
With C++17's deduction guides, the type doesn't need to be explicitly
specified within locking primitives anymore.
|
|
CommandDataContainer
std::move within a copy constructor (on a data member that isn't
mutable) will always result in a copy. Because of that, the behavior of
this copy constructor is identical to the one that would be generated
automatically by the compiler, so we can remove it.
|
|
video_core/memory_manager: Minor tidying
|
|
video_core: Remove a few unused variables and functions
|
|
Rasterizer Cache: refactor flushing & optimize memory usage of surfaces
|
|
slot.
It seems instructions marked with the 'exit' flag will not cause an exit when executed within a delay slot.
This was hwtested by fincs.
|
|
Corrects the typo in its name and marks the function as a const member
function, given it doesn't actually modify memory manager state.
|
|
Prevents implicit converting constructions of the memory manager.
|
|
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.
|
|
Corrects references to non-existent parameters and corrects typos.
|