Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

integrate the terrors #2

Merged
merged 246 commits into from
Apr 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
246 commits
Select commit Hold shift + click to select a range
78854f4
Deps: update simpleini to 4.22 (#3131)
Mrlinkwii Mar 13, 2024
9950fdb
Memory Card Icon (#3133)
andercard0 Mar 13, 2024
b76af42
Update Russian translation (#3132)
shikulja Mar 13, 2024
3395853
CDROM: Fix overflow in UpdatePositionWhileSeeking()
stenzek Mar 8, 2024
d1a1cab
Bus: Direct KUSEG+KSEG0 isolated cache reads to ICache
stenzek Mar 8, 2024
51b3fab
OpenGLContext: Try libEGL.so.1 as well as libEGL.so
stenzek Mar 10, 2024
b9c9b05
Qt: Remove duplicate menu action
stenzek Mar 13, 2024
9211d9f
Path: Add CreateFileURL()
stenzek Mar 13, 2024
5054d46
Add Theme - Ruby
andercard0 Mar 14, 2024
6aa491f
GPU: Ensure screenshots are saved before shutdown
stenzek Mar 15, 2024
43eb6e2
System: Improve screenshot naming
stenzek Mar 15, 2024
8b2b4ce
Image: Fix reading of JPEG files
stenzek Mar 15, 2024
1ab7850
GPU: Rewrite deinterlacing and add adaptive/blend modes
stenzek Mar 15, 2024
e755e15
GPU: Fix GLSL compile error
stenzek Mar 16, 2024
3702a53
Update duckstation-qt_pt-BR.ts (#3135)
andercard0 Mar 16, 2024
fa68509
CPU: Make interrupts actually edge-triggered
stenzek Mar 16, 2024
2003c94
DMA: Properly handle bus errors and DICR transitions
stenzek Mar 17, 2024
8db0fce
GameDB: More PGXP CPU traits
stenzek Mar 17, 2024
a4a58c6
SPU: Implement volume sweep phase inversion
stenzek Mar 20, 2024
e70f0e1
GPU/HW: Use texelFetch() instead of sampler
stenzek Mar 20, 2024
9703542
AudioStream: Re-add SDL backend
stenzek Mar 20, 2024
3085172
FullscreenUI: Update translation strings
stenzek Mar 20, 2024
604dd5d
Qt: Add copy/clear game settings
stenzek Mar 20, 2024
bcc7ab7
NoGUI: Add SDL platform
stenzek Mar 20, 2024
2be8287
Qt: Fix closing log window via taskbar
stenzek Mar 20, 2024
d96062b
AudioStream: Fix infinite loop
stenzek Mar 20, 2024
4d5c8cb
Qt: Fix main window stuck open after update
stenzek Mar 22, 2024
084a76a
CDImageDevice: Verify MSF of SUBQ before use
stenzek Mar 23, 2024
f2a7810
Atualização Português do Brasil (#3137)
andercard0 Mar 23, 2024
17e3e96
CI: Build libwebp on Windows as part of deps
stenzek Mar 22, 2024
8c09e93
GameDB: Add DisablePGXPPreserveProjFP trait
stenzek Mar 23, 2024
68ff16e
CI: Build zlib/zstd/libjpeg/libpng as part of deps
stenzek Mar 24, 2024
b143d96
Build: Use deps DLLs on Windows
stenzek Mar 24, 2024
cd3c88a
deps: Remove now-unused vendored libs
stenzek Mar 24, 2024
f3c0c14
Image: Support loading/saving WebP
stenzek Mar 24, 2024
43fc9f1
Settings: Support saving WebP screenshots
stenzek Mar 24, 2024
b1c00cf
CI: Don't bother building SDL2 debug
stenzek Mar 24, 2024
057c0c6
CI: Drop setup-python for Mac
stenzek Mar 24, 2024
c0e6750
Updater: Link zlib statically
stenzek Mar 24, 2024
480c785
System: Fix crash toggling debug GPU device
stenzek Mar 24, 2024
9cdff47
OpenGLDevice: Fix depth clears not going through
stenzek Mar 24, 2024
101ebe3
PostProcessing/FX: Fix GLSL compile error with discard
stenzek Mar 24, 2024
3206054
OpenGLDevice: Fix rendering to multiple RTs
stenzek Mar 24, 2024
f184746
VulkanDevice: Fix rendering to multiple targets
stenzek Mar 24, 2024
315524a
VulkanDevice: Fix render pass fallback path with MRT
stenzek Mar 24, 2024
7b8704a
System: Fix incorrect sanitization of memcard filenames
stenzek Mar 25, 2024
83ebad1
System: Leave title empty when booting physical audio CDs
stenzek Mar 25, 2024
3e8dd2c
CDImageDevice: Fix reading of pure audio CDs
stenzek Mar 25, 2024
98d2d86
CI: Use OS zlib for MacOS
stenzek Mar 25, 2024
28fd6c0
Qt: Expose "Ignore Drive Subcode" option
stenzek Mar 25, 2024
de1e5b2
CDROM: Don't send reports when subq isn't valid
stenzek Mar 25, 2024
fe35542
D3D11Device: Add MAP_DISCARD fallback path for uniform streaming
stenzek Mar 28, 2024
c09e9ed
Atualização Português do Brasil (#3139)
andercard0 Mar 28, 2024
e54ad19
GPU/HW: Fix height incorrect doubling in interleaved 480i mode
stenzek Mar 29, 2024
c41563c
Pad: Fix unconditional memory card replug on load state
stenzek Mar 29, 2024
2b7008b
GPU/HW: Fix box downsampling with FMVs
stenzek Mar 29, 2024
d4d3518
CI: Enable DBus for Linux deps build
stenzek Mar 29, 2024
f9f9447
SPU: Ignore End+Mute flag for noise channels
stenzek Mar 29, 2024
e5adb54
GameDB: Motor Toon Grand Prix
stenzek Mar 29, 2024
ab445ec
FileSystem: Handle paths longer than MAX_PATH on Windows
stenzek Mar 29, 2024
979b7bd
FileSystem: Use PathCchCanonicalizeEx() for GetWin32Path()
stenzek Mar 29, 2024
a3013ef
CPU/NewRec: Fix PGXP desync
stenzek Mar 29, 2024
8ebda3c
CPU/NewRec: Fix register corruption in swl/swr
stenzek Mar 31, 2024
3ecc19c
GPU: Fix HW readback counter
stenzek Mar 31, 2024
eb50414
FileSystem: Add Error to CreateDirectory()/RenamePath()
stenzek Mar 31, 2024
693982d
SettingsInterface: Add Error to Save()
stenzek Mar 31, 2024
0b99db6
Qt: Ensure settings are writable before running setup wizard
stenzek Mar 31, 2024
5784906
Atualização Português do Brasil (#3141)
andercard0 Mar 31, 2024
f0f1473
Qt: Fix native message boxes on MacOS
stenzek Mar 31, 2024
86927ea
Qt: Use window modality for message boxes
stenzek Mar 31, 2024
71a07a5
CPU/NewRec: Fix lwl/lwr on ARM
stenzek Mar 31, 2024
cc5f9a1
dep: Update Vulkan-Headers to v1.3.279
stenzek Mar 8, 2024
72ab669
GPUDevice: Add support for feedback loops
stenzek Mar 8, 2024
74f3c8d
GPU/HW: Enable feedback loops for rendering
stenzek Mar 8, 2024
a89c514
Qt: Minor typo corrections
stenzek Apr 1, 2024
3a0bc36
Update the Simple-Chinese Translation to latest. (#3142)
zkdpower Apr 1, 2024
5ec1331
Qt: Update glyph ranges
stenzek Apr 1, 2024
41cc60e
VulkanDevice: Use vkCmdClearAttachments() to avoid render pass restart
stenzek Apr 1, 2024
cb26acb
Qt: Port over Cobalt Sky theme from PCSX2 (#3145)
kamfretoz Apr 3, 2024
fa644a0
Update the Simple-Chinese translation to latest. (#3147)
zkdpower Apr 3, 2024
38249a3
Atualização Português do Brasil (#3144)
andercard0 Apr 3, 2024
19b55f8
GameDB: Rayman Brain Games (#3143)
Blackbird88 Apr 3, 2024
59a7c3d
GameDB: Various updates
stenzek Apr 3, 2024
bd19276
Qt: Fix loading/saving state to file on Windows
stenzek Apr 3, 2024
cb6be52
GameDatabase: Warn if CPU mode is enabled and unnecessary
stenzek Apr 3, 2024
59a13d9
Image: Don't use libjpeg stdio functions
stenzek Apr 3, 2024
e197cce
GameDB: More PSX.EXE games
stenzek Apr 4, 2024
5e1c527
Atualização Português do Brasil (#3148)
andercard0 Apr 4, 2024
5e05328
GameDB: Motor Toon Grand Prix (again)
stenzek Apr 4, 2024
a432308
GPU: Fix GLES compile error
stenzek Apr 1, 2024
c2a08bd
CPU/NewRec: Fix ARM32 (again)
stenzek Apr 1, 2024
1097eab
GPU/HW: Don't create shader blend pipelines if disallowed
stenzek Apr 1, 2024
44322a1
dep/imgui: Update to v1.90.4
stenzek Mar 28, 2024
4270dd0
GameDB: More hashes
stenzek Apr 4, 2024
0a17cf7
Qt: More missing toNativeSeparators() calls
stenzek Apr 4, 2024
5c56d4e
Deps: Update to Qt 6.7.0 and SDL 2.30.2
stenzek Apr 4, 2024
69588bf
Deps: Include freetype/harfbuzz shared libraries
stenzek Apr 4, 2024
ffbb14f
dep/imgui: Use FreeType rasterizer
stenzek Apr 4, 2024
3d84da0
Docs: Update README.md
stenzek Apr 5, 2024
bdafbe0
Qt: Fix crash on shutdown settings save
stenzek Apr 5, 2024
69c9133
Common: Fix double free on opening invalid zip file
stenzek Apr 5, 2024
e245884
Deps: Build shaderc
stenzek Apr 4, 2024
98241cb
GPUDevice: Swap out glslang for shaderc
stenzek Apr 5, 2024
52f1686
Deps: Remove glslang
stenzek Apr 5, 2024
d3b552e
Update Russian translation (#3149)
shikulja Apr 5, 2024
26979f5
Docs: Add Fedora package names to README.md
stenzek Apr 5, 2024
26c76d1
Qt: Fix toolbar position not saving
stenzek Apr 5, 2024
d8bf0c8
Updater: Use IFileOperation
stenzek Apr 5, 2024
d9b1d39
Updater: Add missing CoInitializeEx() call
stenzek Apr 5, 2024
69f79c3
Deps: Speed up shaderc build
stenzek Apr 5, 2024
ca11898
Added submitted cheats and more clean ups c/o (#3151)
PugsyMAME Apr 6, 2024
79e96ff
Polish localization updates (#3152)
mavethee Apr 6, 2024
99b0fb5
GPU/HW: Move pipelines to end of struct
stenzek Apr 5, 2024
f4584f4
dep/imgui: Disable windowing key
stenzek Apr 6, 2024
9dd686a
ByteStream: Add error feedback
stenzek Apr 7, 2024
1ee5f73
MemoryCardImage: Report errors to caller
stenzek Apr 7, 2024
8bdeb8b
MemoryCardImage: Handle 128KB GME files
stenzek Apr 7, 2024
8a1b4d8
DMA: Halt linked list transfers during pad transfer
stenzek Apr 7, 2024
1782151
GameDB: PGXP-CPU for Newman Haas Racing
stenzek Apr 7, 2024
71f5056
System: Consider pending ticks when using global ticks
stenzek Apr 7, 2024
841a6e1
lupdate translation file. (#3153)
mavethee Apr 7, 2024
7dbe021
New cheats and cheat cleanups (#3154)
PugsyMAME Apr 7, 2024
be342ff
CI: Fix incorrect flatpak cache key
stenzek Apr 7, 2024
8e68faa
BPM: Fixes swapped arrow key glyphs (#3156)
kamfretoz Apr 9, 2024
daab121
misc: translation file cleanup (#3155)
mavethee Apr 9, 2024
6b7cf6a
SmallString: Add missing methods
stenzek Apr 7, 2024
631fca3
SettingsInterface: Add SmallString overloads
stenzek Apr 7, 2024
de1a1af
FullscreenUI: Avoid per-frame memory allocations with SmallString
stenzek Apr 7, 2024
d4d7a13
GameDB: Dino Crisis PAL
stenzek Apr 7, 2024
bf4e8fe
FullscreenUI: Redo landing page and add help bar
stenzek Apr 9, 2024
e9ae49b
FullscreenUI: Regenerate strings
stenzek Apr 9, 2024
26c1d4b
Qt: Icon fix
stenzek Apr 9, 2024
5fb8175
Autalização Português do Brasil (#3157)
andercard0 Apr 10, 2024
ad45ace
Qt: fix "Show Controller Input" and "Show Settings" descriptions (#3159)
bslenul Apr 10, 2024
6965bc5
Polish localization updates (#3158)
mavethee Apr 10, 2024
e936e74
VulkanDevice: Fix incorrect null texture bind condition
stenzek Apr 10, 2024
4598bc7
Qt: Split Cheat Manager and Memory Scanner
stenzek Apr 10, 2024
a57ed3c
Qt: Add correct Cheat Manager UI file
stenzek Apr 10, 2024
2b7de1f
GameDB: Compatibility fixes
stenzek Apr 10, 2024
3c4ad9e
GameDB: More compatibility fixes
stenzek Apr 10, 2024
b209e6b
Polish localization updates (#3160)
mavethee Apr 10, 2024
bbd7c9e
BPM: Light Mode color scheme update (#3161)
kamfretoz Apr 10, 2024
f63f5d8
GameDB: Add controller types
stenzek Apr 10, 2024
417bf0c
DMA: Better enforce CPU runtime during linked list
stenzek Apr 10, 2024
440a170
System: Interrupt execution when loading state and reset
stenzek Apr 10, 2024
05d2ad5
Update the Simple-Chinese translation to latest.
zkdpower Apr 10, 2024
8c741d2
Qt: Update glyph range for zh-CN and purge old obsolete strings
stenzek Apr 10, 2024
b58862a
Disable cheats by default
bslenul Apr 10, 2024
ae22340
Qt: fix "Deinterlacing" description
bslenul Apr 10, 2024
44a4f27
ImGuiFullscreen: Add popup background colour
stenzek Apr 11, 2024
1809885
FullscreenUI: Fix crash with language select on Linux
stenzek Apr 11, 2024
f75a560
SmallString: Add vformat overloads
stenzek Apr 11, 2024
1b1e42d
System: Add Error to boot/load/save state
stenzek Apr 11, 2024
164062f
Build: Use C++20 for everything except reshadefx
stenzek Apr 11, 2024
57f6bda
ImGuiFullscreen: Use popup background for all popups
stenzek Apr 11, 2024
e2d87f5
FileSystem: Canonicalize() after RealPath()
stenzek Apr 11, 2024
fec3647
Settings: Use RealPath() for directories
stenzek Apr 11, 2024
7b93eda
Qt: Purge controller bind migration
stenzek Apr 11, 2024
2ad67ad
OpenGLContext: Add SupportsNegativeSwapInterval()
stenzek Apr 11, 2024
8827077
System: Combine VRR and Optimal Frame Pacing
stenzek Apr 11, 2024
509a8a0
GPUDevice: Remove unused file
stenzek Apr 11, 2024
9bee24e
Polish localization updates (#3164)
mavethee Apr 11, 2024
efcfcd8
Build: Migrate Flatpak to Qt 6.7
stenzek Apr 11, 2024
3e9ac99
Qt: Fix 6.7 deprecation warnings
stenzek Apr 11, 2024
7344661
GPUDevice: Split submission and presentation
stenzek Apr 11, 2024
e646096
VulkanDevice: Fix validation errors
stenzek Apr 11, 2024
c017d04
Qt: "Display Vertical Sync" => "Vertical Sync"
stenzek Apr 11, 2024
7d85284
Polish localization updates (#3166)
mavethee Apr 11, 2024
5a2215d
Atualização Português do Brasil (#3165)
andercard0 Apr 11, 2024
bbdc31c
Qt: String fix
stenzek Apr 11, 2024
4591fe8
Atualização Português do Brasil (#3167)
andercard0 Apr 11, 2024
349ff42
Polish localization updates (#3168)
mavethee Apr 11, 2024
42ac79d
Update Russian translation (#3169)
shikulja Apr 12, 2024
e5a024b
MetalDevice: Add support for framebuffer fetch
stenzek Apr 12, 2024
f4fef36
MetalDevice: Use shader to clear current depth target
stenzek Apr 12, 2024
01e06b3
Update the Simple-Chinese translation to latest.
zkdpower Apr 2, 2024
7adbedd
Renamed Mem Scanner Op Text&added Virtual Address (#3172)
PugsyMAME Apr 13, 2024
8ab1623
CI/Flatpak: Remove unused file
stenzek Apr 12, 2024
6258cb9
FullscreenUI: Various minor bug fixes
stenzek Apr 13, 2024
c149d66
System: Add 'Reduce Input Latency' option
stenzek Apr 13, 2024
6d167f1
Polish localization updates (#3173)
mavethee Apr 14, 2024
06a29f6
Atualização Português do Brasil (#3174)
andercard0 Apr 14, 2024
59eeb89
CI: Backport shaderc changes from PCSX2
stenzek Apr 14, 2024
8a3ba53
CI: Build SPIRV-Cross
stenzek Apr 14, 2024
e9107bd
VulkanDevice: Add env var for non-semantic debug info
stenzek Apr 14, 2024
3dedf5f
FullscreenUI: Add missing latency stats option
stenzek Apr 14, 2024
5f915e1
MetalDevice: Use shared SPIRV-Cross
stenzek Apr 14, 2024
fbe54f4
Deps: Purge SPIRV-Cross from tree
stenzek Apr 14, 2024
4bcc5a3
System: Remove log spam
stenzek Apr 14, 2024
9fd2994
Log: Fix crash with >1 instance + file log
stenzek Apr 14, 2024
be1d558
GPU/HW: Fix black screen in Metal after vertex ID wraparound
stenzek Apr 15, 2024
9eb9fc9
Qt: Fix drag/drop on Windows
stenzek Apr 16, 2024
797b82d
Updater: Ensure forward slashes are converted to backslashes
stenzek Apr 16, 2024
5ed362b
Massive Italian translation rework, part 1 (#3179)
Valtekken Apr 16, 2024
79ccd5f
FullscreenUI: Wire up Open in File Browser functionality (#3178)
kamfretoz Apr 16, 2024
5060c0f
Add cheats for all characters in Beyond the Beyond (USA) (#3176)
Deozaan Apr 16, 2024
bc4b7f2
Atualização Português do Brasil (#3175)
andercard0 Apr 16, 2024
6e7a4c3
FullscreenUI: Exit fullscreen for open-in-file-browser
stenzek Apr 16, 2024
4e0c417
FullscreenUI: Add "Open Containing Directory"
stenzek Apr 16, 2024
d2d6e39
NoGUI: Purge unused code
stenzek Apr 16, 2024
4d8ed49
FullscreenUI: Fix gaps between some UI elements
stenzek Apr 16, 2024
07c012a
Negcon rumble (#3177)
sonik-br Apr 16, 2024
1c39244
Spanish (Spain) translation update 2024/01/25 (#3102)
IlDucci Apr 16, 2024
147f48c
Qt: Simplify controller binding layout construction
stenzek Apr 16, 2024
c1bf1e5
Qt: Add binding layout for NegConRumble
stenzek Apr 16, 2024
e40c022
CI: Fix Flathub update script
stenzek Apr 16, 2024
a5a72cd
AudioStream: Fix a couple of errors in ReadFrames() resampler
stenzek Apr 16, 2024
2534e6f
CI: Fix Windows build
stenzek Apr 17, 2024
f9b1944
Atualização Português do Brasil (#3180)
andercard0 Apr 17, 2024
79a7a8c
Update the Simple-Chinese translation to latest. (#3181)
zkdpower Apr 17, 2024
ef05a80
Polish localization updates (#3182)
mavethee Apr 17, 2024
84b24c6
Achievements: Fix HC mode activating on reset of non-cheevo game
stenzek Apr 17, 2024
f666816
ImGuiOverlays: Fix possible crash in save state selector
stenzek Apr 17, 2024
3bb36f9
FullscreenUI: Get rid of extra scrollbar in save state selector
stenzek Apr 17, 2024
d918705
Massive Italian translation rework, part 2 (#3183)
Valtekken Apr 17, 2024
8e9e855
CDImageM3u: Fix forward slash entries on Windows
stenzek Apr 18, 2024
60f12e7
Achievements: Fix fullscreen window height
stenzek Apr 18, 2024
7135a64
Qt: Allow opening cheat manager while shutdown
stenzek Apr 18, 2024
fd21dd9
Qt: Shrink text box size in memory scanner
stenzek Apr 18, 2024
17b9736
Misc: Use a 128b cache line size on Apple Silicon
stenzek Apr 18, 2024
1a0f6f6
Qt: Clarify controller settings labels
stenzek Apr 20, 2024
b478fd9
New Theme Added (#3184)
andercard0 Apr 20, 2024
a2d81bb
Final third of the translation (#3185)
Valtekken Apr 20, 2024
6130173
Qt: Purplerain -> Purple Rain
stenzek Apr 20, 2024
d612ea0
CI: Swap to KDE 6.7 Flatpak actions
stenzek Apr 20, 2024
d712fcc
Scripts: Rename build-dependencies.sh to build-dependencies-linux.sh
stenzek Apr 20, 2024
04f9731
README: Update Linux build instructions
stenzek Apr 20, 2024
a88ee93
GameDB: Motor Toon Grand Prix (again)
stenzek Apr 20, 2024
8867bb1
CMake: Tidy up build system
stenzek Apr 20, 2024
7d80cab
BIOS: Remove questionable hashes
stenzek Apr 21, 2024
2871a26
GameDB: Motor Toon Grand Prix (again)
stenzek Apr 21, 2024
d3c12fe
Qt: Move dump audio on startup out of settings
stenzek Apr 21, 2024
35056c2
Deps: Add kissfft
stenzek Apr 16, 2024
7932d28
Deps: Add freesurround
stenzek Apr 16, 2024
0fbc1a3
AudioStream: Add surround expansion via FreeSurround
stenzek Apr 16, 2024
35f0d7f
CPU: Update debug dispatcher flag on init
stenzek Apr 21, 2024
b26a955
System: Improve reset determinism
stenzek Apr 21, 2024
a5613fc
System: Add OSD message when all enhancements are disabled
stenzek Apr 21, 2024
3fa2bd1
System: Confirm shutdown if memory card is being written
stenzek Apr 21, 2024
3b8afb3
System: Don't try to fast boot non-PS1 discs
stenzek Apr 21, 2024
eb91fe3
Hotkeys: Add OSD toggle hotkey
stenzek Apr 21, 2024
106f2c1
Qt: Add tooltip for stretch/expansion advanced settings
stenzek Apr 21, 2024
47ce708
redo build system, merge from upstream, fix bugs
irixaligned Apr 22, 2024
cec375d
merge latest changes from upstream
irixaligned Apr 23, 2024
373cbb4
fix fsui res not copying to appx
irixaligned Apr 26, 2024
e080c27
readme/attribution upd, fsui works good now
irixaligned Apr 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 4 additions & 11 deletions .github/workflows/rolling-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ jobs:
call update_rc_version.bat
cd ..\..
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
git update-index --assume-unchanged src/duckstation-nogui/duckstation-nogui.rc

- name: Compile x64 release build
shell: cmd
Expand Down Expand Up @@ -166,7 +165,6 @@ jobs:
call update_rc_version.bat
cd ..\..
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
git update-index --assume-unchanged src/duckstation-nogui/duckstation-nogui.rc

- name: Compile arm64 release build
shell: cmd
Expand Down Expand Up @@ -240,11 +238,11 @@ jobs:
uses: actions/[email protected]
with:
path: ~/deps
key: deps ${{ hashFiles('scripts/build-dependencies.sh') }}
key: deps ${{ hashFiles('scripts/build-dependencies-linux.sh') }}

- name: Build Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: scripts/build-dependencies.sh "$HOME/deps"
run: scripts/build-dependencies-linux.sh "$HOME/deps"

- name: Tag as preview build
if: github.ref == 'refs/heads/master'
Expand Down Expand Up @@ -283,7 +281,7 @@ jobs:
linux-flatpak-build:
runs-on: ubuntu-22.04
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.6
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.7
options: --privileged
timeout-minutes: 120
steps:
Expand Down Expand Up @@ -322,7 +320,7 @@ jobs:
branch: master
cache: true
restore-cache: true
cache-key: flatpak-x64-${{ hashFiles('.scripts/flatpak/**/*.json') }}
cache-key: flatpak-x64-${{ hashFiles('scripts/flatpak/**/*.json') }}

# fails due to screenshots..
#- name: Validate build
Expand All @@ -344,11 +342,6 @@ jobs:
with:
fetch-depth: 0

# Python 3.12 removed distutils, used by MoltenVK -> glslang.
- uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Install packages
shell: bash
run: |
Expand Down
13 changes: 9 additions & 4 deletions ATTRIBUTION.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
This fork is only meant to stage minimal code and configuration needed for building UWP binaries. Any general feature requests should go upstream and then be pulled into this project.
This fork is intended to provide a (mostly) identical DuckStation experience on Xbox.

Any general feature requests should go upstream and then be pulled into this project.

Credits:
- stenzek/duckstation for inspiration of original UWP app and reuse of UWP downloaders.
- SirMangler/pcsx2 for UWPUtils.h
- stenzek/duckstation for the initial UWP development
- SirMangler/pcsx2 for UWPUtils.h and being a general implementation reference
- worleydl for the initial development of this

~~WinRT App.cpp is heavily linked to nogui\_host with platform abstractions stripped out. It is my intent to create a WinRT platform to use with noguihost however I've ran into issues with debugging DX in that approach and haven't found a resolution yet. Apologies in advance for DRY violations until this issue is resolved.~~

WinRT App.cpp is heavily linked to nogui\_host with platform abstractions stripped out. It is my intent to create a WinRT platform to use with noguihost however I've ran into issues with debugging DX in that approach and haven't found a resolution yet. Apologies in advance for DRY violations until this issue is resolved.
The project no longer relies on NoGUI in any fashion -- WinRT is it's own Host, using FSUI as the husk for most functions (as XAML doesn't work with this configuration, as far as I've tested.

196 changes: 32 additions & 164 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@ project(duckstation C CXX)
cmake_policy(SET CMP0069 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)

if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR "DuckStation does not support in-tree builds. Please make a build directory that is not the source"
"directory and generate your CMake project there using either `cmake -B build_directory` or by "
"running cmake from the build directory.")
endif()

if(NOT CMAKE_BUILD_TYPE MATCHES "Debug|Devel|MinSizeRel|RelWithDebInfo|Release")
message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to Release.")
set(CMAKE_BUILD_TYPE "Release")
endif()

message(STATUS "CMake Version: ${CMAKE_VERSION}")
message(STATUS "CMake System Name: ${CMAKE_SYSTEM_NAME}")
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
Expand All @@ -13,58 +24,19 @@ message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules/")
include(DuckStationUtils)

# Platform detection.
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(LINUX TRUE)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
set(FREEBSD TRUE)
endif()

# Renderer options.
option(ENABLE_OPENGL "Build with OpenGL renderer" ON)
option(ENABLE_VULKAN "Build with Vulkan renderer" ON)

# Global options.
if(NOT ANDROID)
option(BUILD_NOGUI_FRONTEND "Build the NoGUI frontend" OFF)
option(BUILD_QT_FRONTEND "Build the Qt frontend" ON)
option(BUILD_REGTEST "Build regression test runner" OFF)
option(BUILD_TESTS "Build unit tests" OFF)

set(ENABLE_CUBEB ON)
set(ENABLE_DISCORD_PRESENCE ON)
set(ENABLE_SDL2 ON)

if(LINUX OR FREEBSD)
option(ENABLE_X11 "Support X11 window system" ON)
option(ENABLE_WAYLAND "Support Wayland window system" ON)
endif()
if(APPLE)
option(SKIP_POSTPROCESS_BUNDLE "Disable bundle post-processing, including Qt additions" OFF)
endif()
endif()

# Everything except Windows/Mac use EGL.
if(ENABLE_OPENGL AND (LINUX OR FREEBSD OR ANDROID))
set(ENABLE_EGL TRUE)
endif()

if(ENABLE_X11)
find_package(X11 REQUIRED)
if (NOT X11_Xrandr_FOUND)
message(FATAL_ERROR "XRandR extension is required")
endif()
endif()
if(ENABLE_WAYLAND)
message(STATUS "Wayland support enabled")
endif()
# Detect system attributes.
detect_operating_system()
detect_compiler()
detect_architecture()
detect_page_size()

# Build options. Depends on system attributes.
include(DuckStationBuildOptions)

# Set _DEBUG macro for Debug builds.
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")


# Release build optimizations for MSVC.
if(MSVC)
add_definitions("/D_CRT_SECURE_NO_WARNINGS")
Expand All @@ -88,101 +60,16 @@ if(MSVC)
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /OPT:REF /OPT:ICF")
endif()


# Default symbol visibility to hidden, that way we don't go through the PLT for intra-library calls.
if(ANDROID)
cmake_policy(SET CMP0063 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-semantic-interposition")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-semantic-interposition")
endif()


# Warning disables.
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
include(CheckCXXFlag)
check_cxx_flag(-Wall COMPILER_SUPPORTS_WALL)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-switch")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch")
if(NOT ANDROID)
check_cxx_flag(-Wno-class-memaccess COMPILER_SUPPORTS_MEMACCESS)
check_cxx_flag(-Wno-invalid-offsetof COMPILER_SUPPORTS_OFFSETOF)
endif()
if(COMPILER_CLANG OR COMPILER_CLANG_CL OR COMPILER_GCC)
include(CheckCXXFlag)
check_cxx_flag(-Wall COMPILER_SUPPORTS_WALL)
check_cxx_flag(-Wno-class-memaccess COMPILER_SUPPORTS_MEMACCESS)
check_cxx_flag(-Wno-invalid-offsetof COMPILER_SUPPORTS_OFFSETOF)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-switch")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch")
endif()


# Detect processor type.
if(APPLE AND NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "")
# Universal binaries.
if("x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES)
set(CPU_ARCH_X64 TRUE)
message(STATUS "Building x86_64 MacOS binaries.")
endif()
if("arm64" IN_LIST CMAKE_OSX_ARCHITECTURES)
set(CPU_ARCH_ARM64 TRUE)
message(STATUS "Building ARM64 MacOS binaries.")
endif()
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "amd64" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(CPU_ARCH_X64 TRUE)
message(STATUS "Building x86_64 binaries.")
else()
# Cross-compiling 32-bit build. 32-bit hosts are not supported.
set(CPU_ARCH_X86 TRUE)
message(FATAL_ERROR "Building x86_32 binaries is not supported.")
endif()
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
set(CPU_ARCH_X86 TRUE)
message(FATAL_ERROR "Building x86_32 binaries is not supported.")
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # Might have an A64 kernel, e.g. Raspbian.
set(CPU_ARCH_ARM64 TRUE)
message(STATUS "Building ARM64 binaries.")
else()
set(CPU_ARCH_ARM32 TRUE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a")
message(STATUS "Building ARM32 binaries on ARM64.")
endif()
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7-a" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
set(CPU_ARCH_ARM32 TRUE)
message(STATUS "Building ARM32 binaries.")
if(ANDROID)
# Force ARM mode, since apparently ANDROID_ARM_MODE isn't working..
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm")
else()
# Enable NEON.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a")
endif()
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "riscv64")
set(CPU_ARCH_RISCV64 TRUE)
message(STATUS "Building RISC-V 64 binaries.")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -finline-atomics")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finline-atomics")

# Still need this, apparently.
link_libraries("-latomic")

if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
# Frame pointers generate an annoying amount of code on leaf functions.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer")
endif()
else()
message(FATAL_ERROR "Unknown system processor: ${CMAKE_SYSTEM_PROCESSOR}")
endif()

# Detect page size if needed.
detect_page_size()


# We don't need exceptions, disable them to save a bit of code size.
if(MSVC)
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
Expand All @@ -193,49 +80,30 @@ else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
endif()


# Write binaries to a seperate directory.
if(WIN32)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin/${CPU_ARCH}")
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
endif()

# Needed for Linux - put shared libraries in the binary directory.
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")


# Enable threads everywhere.
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")

# Enable large file support on Linux 32-bit platforms.
# Android is deliberately ommitted here as it didn't support 64-bit ops on files until Android 7/N.
if((LINUX OR FREEBSD) AND (CPU_ARCH_X86 OR CPU_ARCH_ARM32))
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
add_definitions("-D_FILE_OFFSET_BITS=64")
endif()

# Optional unit tests.
if(BUILD_TESTS)
enable_testing()
endif()

# Prevent fmt from being built with exceptions, or being thrown at call sites.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFMT_EXCEPTIONS=0")

# Use C++17 for building dependencies (some aren't C++20-aware, e.g. reshadefx).
set(CMAKE_CXX_STANDARD 17)
# Use C++20.
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Recursively include the source tree.
include(DuckStationDependencies)
add_subdirectory(dep)

# Use C++20 for building the main libraries.
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_subdirectory(src)

if(ANDROID)
add_subdirectory(android/app/src/cpp)
endif()
# Output build summary.
include(DuckStationBuildSummary)
15 changes: 15 additions & 0 deletions CMakeModules/DuckStationBuildOptions.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Renderer options.
option(ENABLE_OPENGL "Build with OpenGL renderer" ON)
option(ENABLE_VULKAN "Build with Vulkan renderer" ON)
option(BUILD_NOGUI_FRONTEND "Build the NoGUI frontend" OFF)
option(BUILD_QT_FRONTEND "Build the Qt frontend" ON)
option(BUILD_REGTEST "Build regression test runner" OFF)
option(BUILD_TESTS "Build unit tests" OFF)

if(LINUX OR BSD)
option(ENABLE_X11 "Support X11 window system" ON)
option(ENABLE_WAYLAND "Support Wayland window system" ON)
endif()
if(APPLE)
option(SKIP_POSTPROCESS_BUNDLE "Disable bundle post-processing, including Qt additions" OFF)
endif()
45 changes: 45 additions & 0 deletions CMakeModules/DuckStationBuildSummary.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
if(ENABLE_OPENGL)
message(STATUS "Building with OpenGL support.")
endif()
if(ENABLE_VULKAN)
message(STATUS "Building with Vulkan support.")
endif()
if(ENABLE_X11)
message(STATUS "Building with X11 support.")
endif()
if(ENABLE_WAYLAND)
message(STATUS "Building with Wayland support.")
endif()

if(BUILD_QT_FRONTEND)
message(STATUS "Building Qt frontend.")
endif()
if(BUILD_NOGUI_FRONTEND)
message(STATUS "Building NoGUI frontend.")
endif()
if(BUILD_REGTEST)
message(STATUS "Building RegTest frontend.")
endif()
if(BUILD_TESTS)
message(STATUS "Building unit tests.")
endif()

if(NOT IS_SUPPORTED_COMPILER)
message(WARNING "
*************** UNSUPPORTED CONFIGURATION ***************
You are not compiling DuckStation with a supported compiler.
It may not even build successfully.
DuckStation only supports the Clang and MSVC compilers.
No support will be provided, continue at your own risk.
*********************************************************")
endif()

if(WIN32)
message(WARNING "
*************** UNSUPPORTED CONFIGURATION ***************
You are compiling DuckStation with CMake on Windows.
It may not even build successfully.
DuckStation only supports MSBuild on Windows.
No support will be provided, continue at your own risk.
*********************************************************")
endif()
Loading
Loading