- May 19, 2019
-
-
Fernando Sahmkow authored
This is a measure to avoid crashes on command list reading as an empty command_list is considered a NOP.
-
Lioncash authored
constexpr internally links by default, so the inline specifier is unnecessary.
-
Lioncash authored
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.
-
Lioncash authored
shader/shader_ir: Remove unnecessary template parameter packs from 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.
-
Lioncash authored
These don't actually modify instance state, so they can be marked as const member functions
-
Lioncash authored
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.
-
Lioncash authored
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.
-
Lioncash authored
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.
-
Lioncash authored
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.
-
Lioncash authored
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.
-
Lioncash authored
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.
-
Lioncash authored
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.
-
Lioncash authored
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.
-
- May 18, 2019
-
-
ReinUsesLisp authored
-
- May 17, 2019
-
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
- May 14, 2019
-
-
Fernando Sahmkow authored
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.
-
Lioncash authored
Silences a -Wreorder warning.
-
Lioncash authored
Avoids inlining destruction logic where applicable, and also makes forward declarations not cause unexpected compilation errors depending on where the State class is used.
-
Lioncash authored
These only apply in the definition of the function. They can be omitted from the declaration.
-
Lioncash authored
-
Lioncash authored
We can use the named constant instead of using 32 directly.
-
Lioncash authored
video_core/engines/maxwell_3d: Simplify for loops into ranged for loops 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.
-
Lioncash authored
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.
-
Lioncash authored
With C++17's deduction guides, the type doesn't need to be explicitly specified within locking primitives anymore.
-
Lioncash authored
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.
-
- May 12, 2019
-
-
Sebastian Valle authored
It seems instructions marked with the 'exit' flag will not cause an exit when executed within a delay slot. This was hwtested by fincs.
-
- May 09, 2019
-
-
Lioncash authored
Corrects the typo in its name and marks the function as a const member function, given it doesn't actually modify memory manager state.
-
Lioncash authored
Prevents implicit converting constructions of the memory manager.
-
Lioncash authored
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.
-
Lioncash authored
Corrects references to non-existent parameters and corrects typos.
-
Lioncash authored
These are able to be omitted from the declaration of functions, since they don't do anything at the type system level. The definitions of the functions can retain the use of const though, since they make the variables immutable in the implementation of the function where they're used.
-
Lioncash authored
Silences a -Wreorder warning.
-
Lioncash authored
-
Lioncash authored
-
Lioncash authored
This isn't used at all, so it can be removed.
-
Lioncash authored
This variable is unused entirely, so it can be removed.
-
Lioncash authored
Instead of retrieving the data from the std::variant instance, we can just check if the variant contains that type of data. This is essentially the same behavior, only it returns a bool indicating whether or not the type in the variant is currently active, instead of actually retrieving the data.
-
Lioncash authored
Silences a few compilation warnings.
-
- May 07, 2019
-
-
Fernando Sahmkow authored
There was a weird bug that could happen if the object died directly and the cache address wasn't stored.
-