24088 Commits

Author SHA1 Message Date
flodavid
323ea0cdfd
WIP: fix macOS style when OS dark mode is active 2024-04-18 11:46:07 +08:00
flodavid
b28acaf7c9
Fix qdarkstyle and midnight blue sliders being cropped
- Allow Threshold sliders in control configuration to be up to 40px tall, instead of 15
2024-04-18 11:46:07 +08:00
flodavid
c00c425b48
Add dark mode configuration setting in UI tab
- Allows to choose "Auto", "Always On" or "Always Off"
  - Dark mode options are only shown if the style does not support theme
- If Auto is chosen, value is retrieved from OS
  - On Windows, the application needs a restart to apply the settings
- Use the default dark palette for Windows, like on Linux
2024-04-18 11:46:07 +08:00
flodavid
104e6c3ff7
Rework themes to easily use light/dark palette, using only different icons
- Renamed themes:
  - "colorful" to "default" and "colorful_dark" to "default_dark"
  - "default" to "monochrome" and "default_dark" to "monochrome_dark"
  - "colorful_midnight_blue" to "qdarkstyle_midnight_blue"
  - "qdarkstyle_midnight_blue" to "qdarkstyle_midnight_blue_monochrome"
  - qdarkstyle is renamed from "Dark" to "Mine Shaft" in the UI
- default and monochrome themes all use the same qss stylesheet
- Remove the ability to select "default_dark" directly
    - Default has better support for light and dark
    - Controller and Keyboard applets icons and style adapt to dark mode
- Add "qdarkstyle_monochrome" theme
- Remove duplicated icon files
2024-04-18 11:46:06 +08:00
flodavid
f01d7305c0
Automatic dark theme switching for Windows and Linux
- Windows dark theme uses "fusion" style, which is better suited, but has minor differences
- Improve OS theme detection
  - Linux:
    - Listen for OS color schemes changes on D-Bus
    - Read OS scheme for D-Bus. Fallback with gsettings, reading org.gnome.desktop.interface.
      First "color-scheme" key, then "gtk-theme". Finally, fallback to checking window palette
  - Windows (dark mode detection was not implemented before):
    - Force dark palette when OS uses dark mode by setting QT_QPA_PLATFORM to "windows:darkmode=2"
    - This enables to detect dark mode by checking the window palette
- Improve theming capabilites:
  - Linux uses custom palette when dark mode is detected.
    By using palette(xxx) in .qss files, there is no need to create a dark stylesheet
  - Allow themes to have stylesheet variants, dark.qss and light.qss
  - If current mode is dark, use dark icons for controller and keyboard applets
  - Add "dark" property to RendererStatusBarButton and GPUStatusBarButton, set to true when dark mode is used.
    Allows to have distinct colors for GPU API and accuracy buttons depending on dark mode or not
  - Enable all themes to have dark icon alternatives, not just "default" and "colorful"
    - If dark mode, icons are loaded from the directory "THEME-NAME_dark/icons"
  - If current mode is dark, use dark icons for controller and keyboard applets
  - Only qdarkstyle, qdarkstyle_midnight_blue, colorful_dark and
    colorful_midnight_blue used elements specific to dark themes
2024-04-18 11:46:06 +08:00
flodavid
97814d3e59
Load custom Qt themes from yuzu data directory
- Directory is qt_themes, each theme must be in one folder
    - It should contain a file "style.qss"
    - It may contain an "icons" sub-directory, to override included icons
      (with files like mytheme/icons/colorful/48x48/star.png for example)
    - Directories ending by "_dark" are reserved for dark variant icons.
      They are not listed as themes in the UI.
- If theme directory contains "dark" or "midnight", theme will be considered dark
2024-04-18 11:46:06 +08:00
Samuliak
8ff1ce68c3
metal: flip y texture coordinate 2024-04-10 19:55:56 +02:00
Samuliak
e3ab4c6349
metal: minimalize texture hardcoding 2024-04-10 17:41:45 +02:00
Samuliak
98c4ff461f
metal: don't bind resources that are already bound 2024-04-10 17:20:24 +02:00
Samuliak
4771cd1602
fix(metal): fix incorrect size in buffer to image copy 2024-04-10 17:03:55 +02:00
Samuliak
2f9fd5d69c
metal: set texture usage flags 2024-04-09 19:59:27 +02:00
Samuliak
f5830983be
metal: bind sampler to shader 2024-04-09 18:52:25 +02:00
lol
70c52a1914 fix qlaunch on firmware 18 2024-04-09 18:05:24 +02:00
Samuliak
1a284e4bb7
metal: translate pixel formats 2024-04-09 17:30:55 +02:00
Samuliak
efda44779f
fix(metal): fix buffer to texture copy 2024-04-09 16:31:04 +02:00
Samuliak
786cd8a708
metal: implement buffer to texture copy 2024-04-09 15:49:12 +02:00
Samuliak
0a2227d1f8
metal: bind and sample from texture 2024-04-09 15:23:44 +02:00
Samuliak
a00d9a9027
metal: translate shaders to spirv 2024-04-08 18:52:31 +02:00
Samuliak
67dab8b8d8
metal: do not release null mtl textures 2024-04-08 18:30:04 +02:00
Samuliak
40eca20e12
metal: implement buffer to buffer copy 2024-04-08 17:03:25 +02:00
Samuliak
3fa495840a
metal: configure pipeline before drawing 2024-04-08 16:47:08 +02:00
Samuliak
22ec7e72f0
metal: do not begin render pass if already active 2024-04-08 16:36:29 +02:00
Samuliak
2c38fa1a35
metal: add render pass interruption notice 2024-04-08 16:27:28 +02:00
Exverge
641ef1b887
Map methods in firmware 18.0.0 2024-04-07 18:23:38 -04:00
Exverge
4ea55a855a
fix: clang format 2024-04-07 14:03:32 -04:00
Samuliak
90b8671ddb
metal: bind pipeline and draw for the first time 2024-04-07 18:46:01 +02:00
Samuliak
4d700ac01c
metal: create pipeline cache at startup 2024-04-07 17:58:30 +02:00
Samuliak
58ac31e2be
metal: support buffer to buffer copy 2024-04-07 16:03:20 +02:00
Samuliak
081ad83490
metal: add basic compute pipeline 2024-04-07 15:51:11 +02:00
Samuliak
a5e7672de5
metal: blit rendering result to drawable 2024-04-07 13:08:14 +02:00
Samuliak
c8a717651c
metal: create basic graphics pipeline 2024-04-07 11:58:35 +02:00
Samuliak
bc25c8831d
metal: test buffer creation 2024-04-07 09:25:03 +02:00
Samuliak
b3e8d8d11f
metal: create buffer cache on startup 2024-04-07 09:06:15 +02:00
AMA2581
d33d50780e
adding swiftUI notice 2024-04-07 08:12:08 +03:30
Exverge
0feb0aa7a1
metal: todo a fix for NULL images 2024-04-06 23:15:48 -04:00
Exverge
32c49173ad
fix: clang format 2024-04-06 22:00:34 -04:00
Exverge
c3584e6c39
metal: make metal-cpp a proper external 2024-04-06 21:55:33 -04:00
Exverge
3f76e5b8d7
metal: logging 2024-04-06 20:51:23 -04:00
Samuliak
75386a5de7
metal: add missing copyright and license information 2024-04-06 20:42:17 +02:00
Samuliak
897e0dfdc0 metal: use metal cpp 2024-04-06 20:33:10 +02:00
Samuliak
cc0cde9c3f Add metal-cpp to externals 2024-04-06 20:33:10 +02:00
Samuliak
3c82b81899
metal: change license identifiers to GPL-2.0-or-later 2024-04-06 17:50:45 +02:00
Samuliak
e947a06441
fix: include metal renderer in ALL_LOG_CLASSES 2024-04-06 17:46:31 +02:00
Samuliak
ef8b77c9a3
metal: do not release not existing buffers 2024-04-06 17:35:12 +02:00
Samuliak
e87893ec42 metal: add basic buffer cache 2024-04-06 17:28:56 +02:00
Samuliak
19503fd643 metal: print debug messages 2024-04-06 17:28:56 +02:00
Exverge
e4d2bcaaeb
Add Metal as a Logging class
Signed-off-by: Exverge <exverge@exverge.xyz>
2024-04-06 11:17:49 -04:00
Samuliak
789bc69281 metal: add info about command recorder memory leaks 2024-04-06 12:42:19 +02:00
Samuliak
863842948b metal: use texture cache to create textures render passes 2024-04-06 12:39:24 +02:00
Samuliak
88154b6c6d metal: add file copyright text to new files 2024-04-06 10:21:35 +02:00