| Commit message (Collapse) | Author | Age | Files | Lines |
| |\
| |
| | |
CMakeLists: Define QT_USE_QSTRINGBUILDER for the Qt target
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a compile definition introduced in Qt 4.8 for reducing the total
potential number of strings created when performing string
concatenation. This allows for less memory churn.
This can be read about here:
https://blog.qt.io/blog/2011/06/13/string-concatenation-with-qstringbuilder/
For a change that isn't source-compatible, we only had one occurrence
that actually need to have its type clarified, which is pretty good, as
far as transitioning goes.
|
| |\ \
| | |
| | | |
shader/memory: Implement STG and global memory flushing
|
| | |/ |
|
| |\ \
| | |
| | | |
yuzu/configure_hotkey: Minor changes
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Without passing in a parent, this can result in focus being stolen from
the dialog in certain cases.
Example:
On Windows, if the logging window is left open, the logging Window will
potentially get focus over the hotkey dialog itself, since it brings all
open windows for the application into view. By specifying a parent, we
only bring windows for the parent into view (of which there are none,
aside from the hotkey dialog).
|
| | | |
| | |
| | |
| | |
| | | |
Without a parent, this dialog won't have its memory freed when it
happens to get destroyed.
|
| | | |
| | |
| | |
| | | |
Configure()
|
| | | |
| | |
| | |
| | |
| | | |
This is checking if an index is valid or not and returning early if it
isn't.
|
| | | |
| | |
| | |
| | | |
Avoids a -Wreorder compiler warning.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Avoids dumping all of the core settings machinery into whatever files
include this header. Nothing inside the header itself actually made use
of anything in settings.h anyways.
|
| | | |
| | |
| | |
| | |
| | | |
This doesn't actually modify instance state of the dialog, so this can
be made const.
|
| |\ \ \
| | | |
| | | | |
common/{lz4_compression, zstd_compression}: Add missing header guards
|
| | | |/
| |/|
| | |
| | | |
These two files were missing the #pragma once directive.
|
| |\ \ \
| | | |
| | | | |
service: Update service function tables
|
| | | |/
| |/|
| | |
| | | |
Updates function tables based off information from SwitchBrew.
|
| |\ \ \
| | | |
| | | | |
kernel/svc: Implement svcMapProcessCodeMemory/svcUnmapProcessCodeMemory
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Essentially performs the inverse of svcMapProcessCodeMemory. This unmaps
the aliasing region first, then restores the general traits of the
aliased memory.
What this entails, is:
- Restoring Read/Write permissions to the VMA.
- Restoring its memory state to reflect it as a general heap memory region.
- Clearing the memory attributes on the region.
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
This is utilized for mapping code modules into memory. Notably, the
ldr service would call this in order to map objects into memory.
|
| |\ \ \ \
| | | | |
| | | | | |
kernel/thread: Remove BoostPriority()
|
| | | |_|/
| |/| |
| | | |
| | | |
| | | | |
This is a holdover from Citra that currently remains unused, so it can
be removed from the Thread interface.
|
| |/ / / |
|
| |\ \ \
| | | |
| | | | |
ldr: Minor amendments to IPC-related parameters
|
| | | | |
| | | |
| | | |
| | | | |
This doesn't modify instance state, so it can be made const.
|
| | | |/
| |/|
| | |
| | |
| | | |
The initial two words indicate a process ID. Also UnloadNro only
specifies one address, not two.
|
| |\ \ \
| | | |
| | | | |
Set Pixel Format to Z32 if its R32F and depth compare enabled, and Implement format ZF32_X24S8
|
| | | | | |
|
| | | | | |
|
| |\ \ \ \
| | | | |
| | | | | |
Add a toggle to force 30FPS mode
|
| | |/ / / |
|
| |\ \ \ \
| | | | |
| | | | | |
fsp_srv: Minor cleanup related changes
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
IDirectory's Read() function doesn't take any input parameters. It only
uses the output parameters that we already provide.
|
| | | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
These indicate options that alter how a read/write is performed.
Currently we don't need to handle these, as the only one that seems to
be used is for writes, but all the custom options ever seem to do is
immediate flushing, which we already do by default.
|
| |\ \ \ \
| | | | |
| | | | | |
gl_shader_manager: Move code to source file and minor clean up
|
| | | | | | |
|
| |\ \ \ \ \
| | | | | |
| | | | | | |
Frontend: Migrate to QOpenGLWindow and support shared contexts
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
While we are at it, remove nullptr checks for deletion, since the C++
standard defines that delete does it by its own
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
With the loading screen merged, we don't want to actually show at this
point, but it still needs to be shown to actually create the context.
Turns out you can just show and hide it immediately and it'll work.
|
| | | | | | | |
|
| | | | | | | |
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
ui_settings: Rename game directory variables
|
| | | | | | | | |
|
| | | |/ / / /
| |/| | | | |
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
common/scope_exit: Replace std::move with std::forward in ScopeExit()
|
| | | |_|/ / /
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The template type here is actually a forwarding reference, not an rvalue
reference in this case, so it's more appropriate to use std::forward to
preserve the value category of the type being moved.
|
| |\ \ \ \ \ \
| |_|_|_|_|/
|/| | | | | |
common/swap: Minor cleanup and improvements to byte swapping functions
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Uses arithmetic that can be identified more trivially by compilers for
optimizations. e.g. Rather than shifting the halves of the value and
then swapping and combining them, we can swap them in place.
e.g. for the original swap32 code on x86-64, clang 8.0 would generate:
mov ecx, edi
rol cx, 8
shl ecx, 16
shr edi, 16
rol di, 8
movzx eax, di
or eax, ecx
ret
while GCC 8.3 would generate the ideal:
mov eax, edi
bswap eax
ret
now both generate the same optimal output.
MSVC used to generate the following with the old code:
mov eax, ecx
rol cx, 8
shr eax, 16
rol ax, 8
movzx ecx, cx
movzx eax, ax
shl ecx, 16
or eax, ecx
ret 0
Now MSVC also generates a similar, but equally optimal result as clang/GCC:
bswap ecx
mov eax, ecx
ret 0
====
In the swap64 case, for the original code, clang 8.0 would generate:
mov eax, edi
bswap eax
shl rax, 32
shr rdi, 32
bswap edi
or rax, rdi
ret
(almost there, but still missing the mark)
while, again, GCC 8.3 would generate the more ideal:
mov rax, rdi
bswap rax
ret
now clang also generates the optimal sequence for this fallback as well.
This is a case where MSVC unfortunately falls short, despite the new
code, this one still generates a doozy of an output.
mov r8, rcx
mov r9, rcx
mov rax, 71776119061217280
mov rdx, r8
and r9, rax
and edx, 65280
mov rax, rcx
shr rax, 16
or r9, rax
mov rax, rcx
shr r9, 16
mov rcx, 280375465082880
and rax, rcx
mov rcx, 1095216660480
or r9, rax
mov rax, r8
and rax, rcx
shr r9, 16
or r9, rax
mov rcx, r8
mov rax, r8
shr r9, 8
shl rax, 16
and ecx, 16711680
or rdx, rax
mov eax, -16777216
and rax, r8
shl rdx, 16
or rdx, rcx
shl rdx, 16
or rax, rdx
shl rax, 8
or rax, r9
ret 0
which is pretty unfortunate.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Allows the compiler to inform when the result of a swap function is
being ignored (which is 100% a bug in all usage scenarios). We also mark
them noexcept to allow other functions using them to be able to be
marked as noexcept and play nicely with things that potentially inspect
"nothrowability".
|