| Age | Commit message (Collapse) | Author |
|
Minor cleanups with "parenthesized initialization of aggregates".
|
|
EXI: Show on-screen error when USB Gecko fails to bind
|
|
Previously, if the USB Gecko server failed to bind to any port in the
55020-55030 range, it silently returned with no indication to the user.
Now displays an on-screen message and logs an error.
|
|
VideoBackends / VideoCommon: split draw calls into separate commit and render functions
|
|
DolphinQt: Fix crash from stale timer event in ToolTipWidget
|
|
workaround.
|
|
initialization of aggregates".
|
|
MathUtil: C++20/23 modernisations
|
|
HW/Wiimote: Speaker logic accuracy fixes, comments, and code cleanups.
|
|
feat(retroachievements): implement achievement notification sounds
|
|
|
|
render steps
|
|
Vulkan: Allow custom drivers on Mali devices
|
|
Android: Add global hotkeys
|
|
PowerPC/MMU: Use effective address for special-case unaligned stores
|
|
JitArm64_SystemRegister: mfspr - Sign extension nit
|
|
VertexLoaderARM64: Optimize RGB565 and RGBA6666
|
|
VideoCommon: Add TextureDecoder_ARM64.cpp
|
|
IOS/DolphinDevice: Enable some requests with WantsDeterminism rather than disabling them all.
|
|
ArmCPUDetect: check elf_aux_info() return value in ReadHwCap
|
|
Replace manual calculations with std::lerp and std::midpoint
|
|
DolphinQt: Make individual tabs of PostProcessingConfigWindow scrollable.
|
|
VideoCommon: Option for byte to memset in RAM when `EFBToTextureEnable = True`
|
|
shaders with too many settings to fit on the screen.
|
|
|
|
PPCAnalyst: Avoid using strncmp
|
|
Jit: Optimize trampoline info allocation
|
|
|
|
|
|
Its usage appears in the profiler, and while small, it's not completely insignificant.
|
|
disabling them all.
|
|
UnitTests: Fix CoreTiming.SharedSlot test so it can run independently.
|
|
Revert "msvc: use std::chrono for GetLocalTimeSinceJan1970"
|
|
This commit replaces the old instruction sequence with one that is
considerably shorter. Main ideas are as follows:
- Use AND with constant mask to isolate the needed bits.
- Use ORR + LSL/LSR to shirt the bits into position and combine in one
instruction where possible.
- Red and alpha are already sequential, so don't need to wait for the
byteswap.
- Do the expansion from 6 to 8 bits at the end for all 4 components
in one step.
Before:
ldur w14, [x0]
rev w14, w14
ubfx w15, w14, #0, #6
orr w15, wzr, w15, lsl #2
orr w15, w15, w15, lsr #6
orr w16, wzr, w15, lsl #24
ubfx w15, w14, #6, #6
orr w15, wzr, w15, lsl #2
orr w15, w15, w15, lsr #6
orr w16, w16, w15, lsl #16
ubfx w15, w14, #12, #6
orr w15, wzr, w15, lsl #2
orr w15, w15, w15, lsr #6
orr w16, w16, w15, lsl #8
ubfx w15, w14, #18, #6
orr w16, w16, w15, lsl #2
orr w16, w16, w15, lsr #4
str w16, [x1, #0xc]
After:
ldur w14, [x0]
rev w15, w14
and w16, w14, #0xfc00
and w14, w14, #0x3f000000
lsr w16, w16, #8
orr w16, w16, w14, lsl #2
and w14, w15, #0xfc0
and w15, w15, #0x3f000
orr w15, w15, w14, lsl #14
orr w16, w16, w15, lsr #2
and w15, w16, #0xc0c0c0c0
orr w16, w16, w15, lsr #6
str w16, [x1, #0xc]
|
|
This replaces the old instruction sequence with one that is considerably
shorter. Main ideas are as follows:
- Use AND with constant mask to isolate the needed bits.
- Use ORR + LSL/LSR to shift the bits into position and combine in one
instruction where possible.
- Red and blue are already sequential, so don't need to wait for the
byteswap. This is especially handy for red, where the bits are
already where they need to be.
- Red and blue can be expanded from 5 to 8 bits together.
Before:
ldurh w14, [x0, #0x1]
rev16 w14, w14
and w15, w14, #0x1f
orr w15, wzr, w15, lsl #3
orr w15, w15, w15, lsr #5
orr w16, wzr, w15, lsl #16
ubfx w15, w14, #5, #6
orr w15, wzr, w15, lsl #2
orr w15, w15, w15, lsr #6
orr w16, w16, w15, lsl #8
ubfx w15, w14, #11, #5
orr w16, w16, w15, lsl #3
orr w16, w16, w15, lsr #2
orr w16, w16, #0xff000000
str w16, [x1, #0xc]
After:
ldurh w14, [x0, #0x1]
rev16 w15, w14
bfi w14, w14, #11, #13
and w16, w14, #0xf800f8
and w14, w14, #0xe000e0
orr w16, w16, #0xff000000
orr w16, w16, w14, lsr #5
and w14, w15, #0x7e0
and w15, w15, #0x600
orr w14, w14, w15, lsr #6
orr w16, w16, w14, lsl #5
str w16, [x1, #0xc]
|
|
|
|
This reverts commit 86da6c98fbd229d87de7cf8b9c7eb94c16923829.
|
|
cleanups.
|
|
Common: Introduce MD5Context class and ComputeMD5 function to minimize mbedtls dependence.
|
|
This instruction effectively performs the following computation:
```
Xresult = SXTW(slice_length) - Xresult + global_timer;
```
ARM64 has a dedicated sign extension instruction, but also allows this
sign extension to happen as part of many arithmetic operations. By
reordering the computation, we can take advantage of this:
```
Xresult = global_timer + SXTW(slice_length) - Xresult;
```
Before:
```
ldr w24, [x29, #0x2f0]
scvtf s8, w24
ldr s9, [x27, #0x20]
fmul s8, s8, s9
fcvtzs x25, s8
ldp x24, x23, [x27]
sxtw x23, w23
sub x25, x23, x25
add x25, x25, x24
ldp x24, x23, [x27, #0x10]
sub x25, x25, x23
mov x23, #-0x5555555555555556 ; =-6148914691236517206
add x23, x23, #0x1
umulh x25, x25, x23
add x25, x24, x25, lsr #3
str x25, [x29, #0x770]
```
After:
```
ldr w24, [x29, #0x2f0]
scvtf s8, w24
ldr s9, [x27, #0x20]
fmul s8, s8, s9
fcvtzs x25, s8
ldp x24, x23, [x27]
add x24, x24, w23, sxtw
sub x25, x24, x25
ldp x24, x23, [x27, #0x10]
sub x25, x25, x23
mov x23, #-0x5555555555555556 ; =-6148914691236517206
add x23, x23, #0x1
umulh x25, x25, x23
add x25, x24, x25, lsr #3
str x25, [x29, #0x770]
```
|
|
Dentomologist/cmake_add_explicit_check_for_minimum_qt_version
CMake: Enforce minimum Qt version 6.2
|
|
Android: Trigger netplay game digest check
|
|
|
|
|
|
|
|
to mbedtls throughout the project.
|
|
Qt 6.2 has been de facto required since
afa6e26e5de58e942c8e7ef3a02632ccfb851d3d added a call to
QPixmap::deviceIndependentSize which was introduced in that Qt version.
Qt 6.2 was released 5 years ago and we've required 6.2+ for over 2
years, so let's make that requirement explicit in CMakeLists.txt instead
of having an apparently random compile error if anyone happens to try
building with an older Qt version.
|
|
LLM generated explaination for the LLM generated commit:
A queued QTimerEvent can be dispatched after the timer was already killed (Qt recycles timer ids), e.g. when a slider is dragged and enter/leave events fire in rapid succession. In that case m_timer_id is empty and dereferencing it in timerEvent() asserts on 'this->_M_is_engaged()' in debug builds, while in release builds it passes a garbage timer id to killTimer().
Only process the event if it matches the timer we are tracking, which also prevents showing a balloon for a stale event.
|
|
|
|
|