Commit Graph

12337 Commits (274143dfd2fc8ca4cf20cf01afede8e1f3d0c35b)
 

Author SHA1 Message Date
Stenzek 8a96948a8d
GPUDevice: Use same buffer sizes across backends
Hopefully avoid failed allocations in Metal.
2 months ago
Stenzek c8abcf4b25
GDBServer: Expose GTE registers 2 months ago
Stenzek 8c1a2022e4
GDBServer: Expose target memory map and registers
Ugh, XML.
2 months ago
Stenzek e2b78d4cab
Qt: Tie relative mouse state to the active window
Release mouse grab when we switch to another window, re-acquire it once
we get focus again.
2 months ago
Stenzek cf24957592
Qt: Implement mouse capture using CoreGraphics
Specifically CGAssociateMouseAndMouseCursorPosition().

Avoids the need for accessibility permissions for mouse capture.
2 months ago
Stenzek 2cf108618f
GDBServer: Fix unused capture warning 2 months ago
Stenzek 3bb39f4e33
ELFFile: Skip embedded PS-X EXE header segments
Ignore the metadata PT_LOAD segment emitted by PS1 linker scripts and
validate loadable segment ranges before invoking the loader callback.

Fixes kernel crash when loading.
2 months ago
Stenzek c7f282f184
Core: Use multiplexer to idle sleep for GDB server 2 months ago
Stenzek 30fa5b4c4e
Qt: Rename background controller poll to idle update
Been that for a while anyway.
2 months ago
Stenzek fa5e11116f
GDBServer: Use indexing instead of range-based for
Just in case the write fails and the client is deleted.
2 months ago
Stenzek 86360211ba
GDBServer: Report watchpoint stop details
Emit rwatch, watch, or awatch stop fields for the matching client and
preserve that complete stop reply for later '?' queries, while falling
back to a generic trap for unrelated breakpoints.
2 months ago
Stenzek b147ed63dc
CPU: Enumerate actions for callback breakpoints
Pass the actual breakpoint type to callbacks, let their return value
control whether the breakpoint is retained, and then follow the normal
breakpoint pause path. This makes callback-backed execute and memory
breakpoints observable without bypassing the instruction-completion
behavior used by watchpoints.
2 months ago
Stenzek e3bea19784
GDBServer: Expand watchpoint ranges
Interpret Z2/Z3/Z4 kind values as byte lengths and represent each
watched byte with an owned CPU breakpoint. Validate MIPS
execute-breakpoint kinds, reject zero, overflowing, or excessively
large watch ranges, and avoid invasive changes to the CPU
memory-access dispatcher.
2 months ago
Stenzek 71c88506ec
GDBServer: Track breakpoint ownership
Represent protocol breakpoint types with a scoped enum and track each
client's logical breakpoints separately from a shared reference-counted
CPU breakpoint registry. Disconnects now remove only breakpoints
created by GDB, preserve pre-existing UI breakpoints, and keep
breakpoints alive while another GDB client still references them.
2 months ago
Stenzek ac6d899191
GDBServer: Disable nagle buffering on connect
"It's always TCP_NODELAY. Every damn time. - Marc's Blog"
2 months ago
Stenzek 0a00cbc3ce
GDBServer: Send invalid instead of zero values for extra registers 2 months ago
Stenzek c2418520ef
GDBServer: Notify host when first/last client connects/disconnects
Enables higher frequency polling.
2 months ago
Stenzek fe32554cce
GDBServer: Restore run state after disconnect
Remember whether the system was running before the first debugger
client forced it to pause, and resume only after the final client
disconnects. This prevents a dropped connection or disabled server
from leaving an originally running system paused, while preserving a
pause that predated debugger attachment and avoiding premature resumes
with multiple clients.
2 months ago
Stenzek d176e31aa3
GDBServer: Support signal resume packets
Accept the remote protocol's C and S packet forms, including their
optional resume addresses, so GDB can continue or step after reporting
a signal. Validate the signal and address fields completely; signal
delivery itself is intentionally ignored because the emulated
bare-metal target has no inferior process signal mechanism.
2 months ago
Stenzek cba85882a6
GDBServer: Reject oversized incoming packets
Enforce the advertised PacketSize while scanning the receive buffer.
Close clients that exceed the framed packet limit so an unterminated
or oversized request cannot fill the fixed receive buffer and leave
the connection permanently stalled.
2 months ago
Stenzek 54d074fb6a
GDBServer: Retransmit rejected replies
Keep the most recently framed RSP reply for each client and resend it
when GDB returns a negative acknowledgement. Build acknowledgement and
reply frames separately so only the reply packet is retained for
protocol recovery.
2 months ago
Stenzek 60a4ec3639
GDBServer: Queue complete protocol packets
Expose BufferedStreamSocket's allow-smaller policy through Write while
preserving the existing default for other callers. GDB replies now
require enough queue space for the complete RSP packet and close the
connection instead of silently discarding an unwritten suffix.
2 months ago
Stenzek 8d7046a893
GDBServer: Bound remote packet sizes
Advertise a 16 KiB RSP PacketSize and cap memory reads so their
hex-encoded replies fit within it. This prevents small m packets from
requesting multi-gigabyte allocations and keeps generated replies
within the server's transport capacity.
2 months ago
Stenzek 7c279dc96b
GDBServer: Invalidate code after memory writes
Invalidate affected emulated instruction-cache lines and translated
RAM code pages after a successful M packet. This ensures debugger
patches and GDB's fallback software breakpoints execute the newly
written instructions instead of stale cached code.
2 months ago
Stenzek 4e0940500d
GDBServer: Apply register writes atomically
Decode and validate the complete G packet before mutating CPU state,
preserve the zero and read-only BadVaddr registers, and return the
protocol-defined OK response. Apply SR and CAUSE masks and side
effects, and rebuild the instruction pipeline only when PC changes.
2 months ago
Stenzek aea3746414
GDBServer: Validate complete packet fields
Require command payloads, numeric fields, breakpoint kinds, and
checksums to be consumed in full. This prevents valid command prefixes
and partial numeric conversions from accepting trailing garbage while
retaining the protocol-defined breakpoint packet layout.
2 months ago
Stenzek 3885778a2b
GDBServer: Reply to invalid command arguments
A checksum-valid packet must be acknowledged even when its command
arguments are malformed. Return an RSP error or unsupported reply from
the affected handlers instead of sending a negative transport ACK,
which caused GDB to retransmit the same valid packet indefinitely.
2 months ago
Stenzek 05166d1a79
GDBServer: Track the last stop signal
Record the signal reported by each client's most recent stop reply and
use it when handling the '?' query. Interrupt requests now report
SIGINT while single-step, breakpoint, and other system pauses continue
to report SIGTRAP.
2 months ago
Stenzek c7324e3333
GDBServer: Preserve unchanged resume state
Avoid calling SetPC when an address-qualified continue or single-step
names the CPU's current PC. The next instruction is already prefetched
at that address, and rebuilding the pipeline would incorrectly discard
pending load and branch-delay state.
2 months ago
Stenzek a36b75716a
GDBServer: Support single-step addresses
Honor the optional resume address carried by the remote protocol's
single-step packet. Validate the address and update the CPU through
SetPC before setting the single-step flag so the instruction pipeline
resumes from the requested location.
2 months ago
Stenzek 1a9379bd63
GDBServer: Support continue addresses
Route continue packets through the normal checksum-validated command
dispatcher and parse the optional resume address defined by the remote
protocol. Address-qualified continues now update the CPU through SetPC
before resuming instead of being treated as unsupported commands.
2 months ago
Stenzek f04e08b245
GDBServer: Fix stop reply acknowledgements
Acknowledge step and continue packets when they are received, then send
the eventual stop reply without another leading ACK. This avoids
emitting two acknowledgements for a single resume packet and prevents
external system resumes from producing stray protocol ACKs.
2 months ago
Stenzek d92fe3dacf
Data: Move all PromptFont glyphs to unallocated range
They just keep conflicting with the text/emoji fonts otherwise.

Also drop some unused glyphs.
2 months ago
Stenzek 0697597c5a
Controller: Make mandatory functions pure virtual 2 months ago
Stenzek f7797b57ea
Controller: Add 'Disable Simultaneous Opposing Cardinal Directions' option 2 months ago
Stenzek ee21478ad1
GPU/HW: Don't miss updating read texture for recursive draws
Fixes missing glow in Castlevania SOTN.
2 months ago
Stenzek 6f704d405b
FullscreenUI: Fix shared card name not disabling if unused 2 months ago
Stenzek 4431915b41
FullscreenUI: Expose multitap memory cards 2 months ago
Stenzek 2f9c587622
FullscreenUI: Fix shared memory card selection 2 months ago
Stenzek 48a1a06f59
Qt: Don't try to load HTTP URLs as animated images in game list 2 months ago
Stenzek 41ee402156
D3D12Device: Track readback source usage
Record the current fence on source textures used by asynchronous readback copies.
2 months ago
Stenzek 7b15961208
D3D12Device: Fix incorrect push constant root parameter index
ComputeSingleTextureAndPushConstants should not be offset.
2 months ago
Stenzek 685cf83c87
D3D12Device: Order dependent compute UAV accesses
Insert UAV barriers for image render targets before each compute dispatch.
2 months ago
Stenzek a4a03c476d
D3D12Device: Assert alignment of download texture footprints
Also use destination coordinates for subregion copies.
2 months ago
Stenzek 402f9207f7
D3D12Device: Set render-pass clear formats
Initialize render-pass descriptors and provide the required RTV and
DSV formats for clear accesses.
2 months ago
Stenzek b5f821bf4f
D3D12Device: Transition all uploaded subresources
Use an all-subresource barrier after initial uploads so tracked state matches
every texture slice and mip level.
2 months ago
Stenzek 2273890101
D3D12Device: Create texture arrays with all layers
Use the requested array size and create array-aware UAV and mipmap
views for layered textures.
2 months ago
Stenzek 6e2f06a55a
D3D12Device: Bound persistent descriptor allocation
Mark unused tail bits unavailable so partial descriptor heaps cannot return
out-of-range handles.
2 months ago
Stenzek a8c9324f4a
D3D12Device: Transition cleared compute targets to UAV
Commit pending clears before transitioning image render targets to
unordered-access state.
2 months ago
Stenzek 69c5051a80
D3D12Device: Restore state after mipmap rendering
Rebind the normal pipeline state after the temporary mipmap pass and
explicitly set its triangle topology.
2 months ago