Commit Graph
502 Commits
Author SHA1 Message Date
Vitor KandGitHub eb8d2941c9 savestates: save the build name to be displayed when there's a version mismatch (#6493)
* savestates: add a build_name field to the header

* savestates: display build name on save/load menu

* savestates: add zero member to header just in case of UB from an older save state

* savestates: add legacy hash lookup

* savestate_data: update hash database
2023-08-10 20:55:22 -07:00
Steveice10andGitHub b739bd2632 qt: Fix double dialog and crash when OpenGL is selected on unsupported platform. (#6867) 2023-08-07 18:21:42 -07:00
Vitor KandGitHub aaeba6759e citra_qt: do not pass memory to widget (#6849) 2023-08-04 16:35:52 -07:00
GPUCodeandGitHub 88ea66053e Miscallenious fixes to gl backend and qt frontend (#6834)
* renderer_gl: Make rasterizer normal class member

* It doesn't need to be heap allocated anymore

* gl_rasterizer: Remove default_texture

* It's unused

* gl_rasterizer: General cleanup

* gl_rasterizer: Lower case lambdas

* Match style with review comments from vulkan backend

* rasterizer_cache: Prevent memory leak

* Since the switch from shared_ptr these surfaces were no longer being destroyed properly. Use our garbage collector for that purpose to destroy it safely for both backends

* rasterizer_cache: Make temp copy of old surface

* The custom surface would override the memory region of the old region resulting in garbage data, this ensures the custom surface is constructed correctly

* citra_qt: Manually create dialog tabs

* Allows for custom constructors which is very useful. While at it, global state is now eliminated from configuration

* citra_qt: Eliminate global system usage

* core: Remove global system usage in memory and HIO

* citra_qt: Use qOverload

* tests: Run clang format

* gl_texture_runtime: Fix surface scaling
2023-08-02 01:40:39 +03:00
GPUCodeandGitHub f8b8b6e53c core: De-globalize movie (#6659) 2023-08-01 02:57:38 +02:00
Vitor KandGitHub 19107cec4b citra-qt: update the separate window titles to use full_name and show Primary/Secondary identifier (#6712)
* citra-qt: update the separate window titles to use full_name and Primary/Secondary window identifier

* build_fullname: remove trailing space
2023-07-25 05:51:46 -07:00
5e8ae4fa8a qt: Fix per-game config loading for 3DSX/ELF. (#6691)
Co-authored-by: Michael Theall <pigman46@gmail.com>
2023-07-12 18:54:11 -07:00
Narr the RegandGitHub d702915624 Remove some global usages of system (#6688) 2023-07-11 21:43:28 -07:00
GPUCodeandGitHub 4ccd9f24fb Merge pull request #6638 from GPUCode/new-log
common: Backport yuzu log improvements
2023-07-06 23:44:54 +03:00
4383f6d80a Port yuzu-emu/yuzu#5229: "yuzu/main: Add basic command line arguments" (#5696)
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
2023-07-06 20:44:35 +02:00
Steveice10andGitHub 13a8969824 build: Clear out remaining compile warnings. (#6662) 2023-07-04 21:00:24 -07:00
GPUCode d7b4260389 common: Address feedback 2023-07-03 17:13:00 +03:00
GPUCode 9527bfffed common: Remove dependency from core 2023-07-03 02:18:37 +03:00
GPUCode ba98bf058a logging: Address some issues 2023-07-03 02:18:35 +03:00
Narr the RegandGitHub 3d0a3c2c45 service: nfc: Implement amiibo encryption and appdata (#6340) 2023-06-30 22:15:58 +02:00
Levi BehuninandGPUCode 197c1adcba Refactor Logging Impl
Loop on stop_token and remove final_entry in Entry.
Move Backend thread out of Impl Constructor to its own function.
Add Start function for backend thread.
Use stop token in PopWait and check if entry filename is nullptr before logging.
2023-06-30 12:15:52 +03:00
ameerjandGPUCode 98e9f4c32e logging: Fix log filter during initialization
The log filter was being ignored on initialization due to the logging instance being initialized before the config instance, so the log filter was set to its default value.

This fixes that oversight, along with using descriptive exceptions instead of abort() calls.
2023-06-30 12:15:51 +03:00
yzct12345andGPUCode 3641b9891d logging: Simplify and make thread-safe
This simplifies the logging system.

This also fixes some lost messages on startup.

The simplification is simple. I removed unused functions and moved most things in the .h to the .cpp. I replaced the unnecessary linked list with its contents laid out as three member variables. Anything that went through the linked list now directly accesses the backends. Generic functions are replaced with those for each specific use case and there aren't many. This change increases coupling but we gain back more KISS and encapsulation.

With those changes it was easy to make it thread-safe. I just removed the mutex and turned a boolean atomic. I was planning to use this thread-safety in my next PR about stacktraces. It was actually async-signal-safety at first but I ended up using a different approach. Anyway getting rid of the linked list is important for that because have the list of backends constantly changing complicates things.
2023-06-30 12:15:51 +03:00
LioncashandGPUCode b4c38372d1 common/log: Move Log namespace into the Common namespace
Forgot to move this over when I moved the rest of the source files with
lacking namespaces over.
2023-06-30 12:15:51 +03:00
esliwkaandGitHub 0d516f6da5 frontend: Added Hybrid Screen screen layout option (#4542) (#6600)
Signed-off-by: elim <e_sliwka@tuta.io>
2023-06-29 01:42:57 +03:00
GPUCodeandGitHub 9b82de6b24 Refactor software renderer (#6621) 2023-06-24 00:59:18 +02:00
luc-gitandGitHub 08970e7ba0 update graphics api button indicator (#6625)
* update graphics api button indicator

This tiny pull request
* update the graphics button indicator when launching or closing a game (graphics button doesn't update with per game configuration)

* Disable graphics button indicator click while in game

* fix crash

* It fixed crash when opening configure dialog in game if the graphics api for the game is different of the global graphics api
2023-06-20 15:27:36 +03:00
GPUCodeandGitHub d735f5c458 renderer_vulkan: Add vulkan initialization code (#6620)
* common: Move dynamic library to common

* This is so that video_core can use it

* logging: Add vulkan log target

* common: Allow defered library loading

* Also add some comments to the functions

* renderer_vulkan: Add vulkan initialization code

* renderer_vulkan: Address feedback
2023-06-20 15:24:24 +03:00
Steveice10andGitHub bfb6a5b5de common: Add C++ version of Apple authorization logic. (#6616) 2023-06-19 15:50:26 -07:00
Steveice10andGitHub 38435e9b3e Dynamically load FFmpeg and libfdk-aac if available. (#6570) 2023-06-17 02:06:18 +03:00
Steveice10andGitHub 238a574645 qt: Add support for building for iOS. (#6594) 2023-06-07 20:40:53 -07:00
54c499ed5b Prepare for Vulkan backend (#6595)
* externals: Add libraries required for vulkan

* build: Add support for downloading bundled MoltenVK.

* ci: Install tools needed for Vulkan.

* citra_qt: Add API status indicator

---------

Co-authored-by: GPUCode <geoster3d@gmail.com>
2023-06-05 07:29:05 -07:00
GPUCodeandGitHub 5b7cc76ba3 Add warning popup when loading save states for the first time (#6565)
* citra_qt: Remove global state usage in GMainWindow

* citra_qt: Add warning when loadings saves for the first time

* citra_qt: Focus window when launching game from cmdline

* citra_qt: Cleanup nullptr checks

* citra_qt: Move setting to UISettings

* renderer_opengl: Remove header
2023-06-05 10:06:00 +03:00
RokkubroandGitHub 72b82ef6ed Enable web services on Android in Github build (#6555)
* Enable web services in android

* Fix web services build on android

* clang-format

* Remove unnecessary line

* Set telemetry to be disabled by default on all platforms
2023-05-23 21:36:14 +05:30
Steveice10andGitHub 2273df4d70 qt: Migrate to Qt6. (#6418) 2023-05-05 03:10:34 -07:00
Vitor KandGitHub 34de77d429 Various miscelaneous changes (#6496) 2023-05-03 17:24:10 +02:00
SachinVinandGitHub 41f13456c0 Chore: Enable warnings as errors on MSVC (#6456)
* tests: add Sanity test for SplitFilename83

fix test

fix test

* disable `C4715:not all control paths return a value` for nihstro includes

nihstro: no warn

* Chore: Enable warnings as errors on msvc + fix warnings

fixes

some more warnings

clang-format

* more fixes

* Externals: Add target_compile_options `/W0` nihstro-headers and ...

Revert "disable `C4715:not all control paths return a value` for nihstro includes"
This reverts commit 606d79b55d3044b744fb835025b8eb0f4ea5b757.

* src\citra\config.cpp: ReadSetting: simplify type casting

* settings.cpp: Get*Name: remove superflous logs
2023-05-01 22:38:58 +03:00
Steveice10andGitHub 055a58f01e audio_core: Implement OpenAL backend (#6450) 2023-05-01 21:17:45 +02:00
coop152andGitHub 9dc71e3347 Fix broken label in touch mapping dialog (#6489) 2023-04-30 17:28:49 +02:00
luc-gitandGitHub 7327c334ca Add cheats in per game configuration (#6379) 2023-04-30 16:36:02 +02:00
GPUCodeandGitHub 06f3c90cfb Custom textures rewrite (#6452)
* common: Add thread pool from yuzu

* Is really useful for asynchronous operations like shader compilation and custom textures, will be used in following PRs

* core: Improve ImageInterface

* Provide a default implementation so frontends don't have to duplicate code registering the lodepng version

* Add a dds version too which we will use in the next commit

* rasterizer_cache: Rewrite custom textures

* There's just too much to talk about here, look at the PR description for more details

* rasterizer_cache: Implement basic pack configuration file

* custom_tex_manager: Flip dumped textures

* custom_tex_manager: Optimize custom texture hashing

* If no convertions are needed then we can hash the decoded data directly removing the needed for duplicate decode

* custom_tex_manager: Implement asynchronous texture loading

* The file loading and decoding is offloaded into worker threads, while the upload itself still occurs in the main thread to avoid having to manage shared contexts

* Address review comments

* custom_tex_manager: Introduce custom material support

* video_core: Move custom textures to separate directory

* Also split the files to make the code cleaner

* gl_texture_runtime: Generate mipmaps for material

* custom_tex_manager: Prevent memory overflow when preloading

* externals: Add dds-ktx as submodule

* string_util: Return vector from SplitString

* No code benefits from passing it as an argument

* custom_textures: Use json config file

* gl_rasterizer: Only bind material for unit 0

* Address review comments
2023-04-27 07:38:28 +03:00
GPUCodeandGitHub ffc95eb59b Frontend PR fixes (#6378)
* citra_qt: Check if renderer is null

* core: Fix dynarmic use-after-free error

* bootmanager: Add current context check in DoneCurrent

* Loading a save state would destroy the frame dumper class, which contains a shared context. That context would call DoneCurrent without checking if it was actually bound or not, resulting in crashes when calling opengl functions

* externals: Correct glad readme

* common: Log renderer debug setting

* citra: Make lambda lower case

* Consistency with review comments on the PR

* video_core: Kill more global state

* GetResolutionScaleFactor would be called somewhere in the renderer constructor chain but it relies on the yet unitialized g_renderer, resulting in crashes when the resolution scale is set to auto. Rather than adding a workaround, let's kill this global state to fix this for good
2023-03-30 14:24:49 +03:00
Steveice10andGitHub 5346ca27b5 Rework system title handling with up-to-date title list and region detection support. (#6356) 2023-03-29 13:55:29 +02:00
b5d6f645bd Prepare frontend for multiple graphics APIs (#6347)
* externals: Update dynarmic

* settings: Introduce GraphicsAPI enum

* For now it's OpenGL only but will be expanded upon later

* citra_qt: Introduce backend agnostic context management

* Mostly a direct port from yuzu

* core: Simplify context acquire

* settings: Add option to create debug contexts

* renderer_opengl: Abstract initialization to Driver

* This commit also updates glad and adds some useful extensions which we will use in part 2

* Rasterizer construction is moved to the specific renderer instead of RendererBase.
  Software rendering has been disable to achieve this but will be brought back in the next commit.

* video_core: Remove Init/Shutdown methods from renderer

* The constructor and destructor can do the same job

* In addition move opengl function loading to Qt since SDL already does this. Also remove ErrorVideoCore which is never reached

* citra_qt: Decouple software renderer from opengl part 1

* citra: Decouple software renderer from opengl part 2

* android: Decouple software renderer from opengl part 3

* swrasterizer: Decouple software renderer from opengl part 4

* This commit simply enforces the renderer naming conventions in the software renderer

* video_core: Move RendererBase to VideoCore

* video_core: De-globalize screenshot state

* video_core: Pass system to the renderers

* video_core: Commonize shader uniform data

* video_core: Abstract backend agnostic rasterizer operations

* bootmanager: Remove references to OpenGL for macOS

OpenGL macOS headers definitions clash heavily with each other

* citra_qt: Proper title for api settings

* video_core: Reduce boost usage

* bootmanager: Fix hide mouse option

Remove event handlers from RenderWidget for events that are
already handled by the parent GRenderWindow.
Also enable mouse tracking on the RenderWidget.

* android: Remove software from graphics api list

* code: Address review comments

* citra: Port per-game settings read

* Having to update the default value for all backends is a pain so lets centralize it

* android: Rename to OpenGLES

---------

Co-authored-by: MerryMage <MerryMage@users.noreply.github.com>
Co-authored-by: Vitor Kiguchi <vitor-kiguchi@hotmail.com>
2023-03-27 14:29:17 +03:00
TobiasandGitHub 54385a54eb citra_qt: Prevent OS sleep on Linux when a game is running (#6249) 2023-03-23 19:37:10 +01:00
Steveice10andGitHub c96f54f022 Implement app management support (suspend, resume, close, etc) (#6322) 2023-03-10 00:44:26 +01:00
Steveice10andGitHub c6f9fd3b65 qt: Remove status bar 3D controls due to issues. (#6317)
The 3D toggle does not behave correctly as it does not have some
special logic from the enhancements configuration UI that determines
the post-processing shader defaults to use. Because of that, plus
an uptick in people seemingly accidentally enabling 3D options and
not being sure why Citra is rendering differently, just remove the
new UI components for now until better ideas for 3D control can
be worked out.
2023-02-28 14:10:14 +02:00
849d795f0e Port yuzu-emu/yuzu#8367: "Logging: Report Post Windows 10 2004 versions, like Windows 11" (#6295)
Co-authored-by: Kyle K <190571+Docteh@users.noreply.github.com>
2023-02-11 23:22:58 +01:00
MorphandGitHub 5eb72e9489 main: Enable High DPI fixes for Qt >= 5.14 (#6262)
Fixes https://github.com/citra-emu/citra/issues/4175
Fixes https://github.com/citra-emu/citra/issues/4977
2023-02-10 01:19:43 +01:00
6bef34852c Add option to configure to download system files from Nintendo Update Service (#6269)
Co-authored-by: B3n30 <benediktthomas@gmail.com>
2023-02-09 21:58:08 +02:00
Steveice10andGitHub 691cb43871 Add shortcuts and status bar widgets to toggle and set 3D factor (#6277) 2023-02-09 21:57:06 +02:00
TobiasandGitHub f66d03dd48 citra_qt: Improvements to hotkeys and ui state management (#6224) 2023-02-04 19:06:20 +01:00
MorphandGitHub bb8cb3ff82 main: Globally disable the "?" button on dialogs (#6263)
Sets the AA_DisableWindowContextHelpButton attribute to disable this useless button globally. This is disabled by default on Qt6.
2023-01-28 21:38:15 +05:30
Steveice10andGitHub 84e54a52a6 core: Detect and return error if GBA virtual console is loaded. (#6257) 2023-01-23 15:21:57 +05:30
upadsamay387andGitHub bd1cabce86 Instead of there being an "Abort/Continue" prompt when a savestate fails to save or load, it just brings up a warning box. (#6236)
* This fixes #6041 by changing OnCoreError. Instead of there being an "Abort/Continue" prompt when a savestate fails to save or load, it just brings up a warning box.

I also changed "Abort/Continue" to "Quit Game/Continue" for better clarity

* Fixed formatting
2023-01-15 21:45:16 +05:30