Commit Graph

9137 Commits (4ffb4872517e07ff712028343d6be636e6eaa3fc)

Author SHA1 Message Date
ReinUsesLisp 59b34b1d76 shader_ir: Fixup file inclusions and clang-format 2019-01-15 17:54:52 +07:00
Mat M 57a900cc45 shader_ir: Move comment node string
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-01-15 17:54:52 +07:00
ReinUsesLisp d4fae3a699 shader_ir: Address feedback to avoid UB in bit casting 2019-01-15 17:54:52 +07:00
ReinUsesLisp 946c86f0bb shader_decode: Fixup clang-format 2019-01-15 17:54:52 +07:00
ReinUsesLisp c9cf899d18 shader_decode: Implement LEA 2019-01-15 17:54:52 +07:00
ReinUsesLisp 4fd06efeb9 shader_decode: Implement IADD3 2019-01-15 17:54:52 +07:00
ReinUsesLisp a40fd07516 shader_decode: Implement LOP3 2019-01-15 17:54:52 +07:00
ReinUsesLisp b184ca9089 shader_decode: Implement ST_L 2019-01-15 17:54:52 +07:00
ReinUsesLisp 8d42feb09b shader_decode: Implement LD_L 2019-01-15 17:54:52 +07:00
ReinUsesLisp 21f9e9da09 shader_decode: Implement HSETP2 2019-01-15 17:54:52 +07:00
ReinUsesLisp 68c99d2597 shader_decode: Implement HADD2 and HMUL2 2019-01-15 17:54:52 +07:00
ReinUsesLisp cf4a08d950 shader_decode: Implement HADD2_IMM and HMUL2_IMM 2019-01-15 17:54:52 +07:00
ReinUsesLisp 376a837511 shader_decode: Implement MOV_SYS 2019-01-15 17:54:52 +07:00
ReinUsesLisp 518a2bd206 shader_decode: Implement IMNMX 2019-01-15 17:54:52 +07:00
ReinUsesLisp 07944a2345 shader_decode: Implement F2F_C 2019-01-15 17:54:52 +07:00
ReinUsesLisp e8235c0215 shader_decode: Implement I2I 2019-01-15 17:54:52 +07:00
ReinUsesLisp 6ca31f544a shader_decode: Implement BRA internal flag 2019-01-15 17:54:52 +07:00
ReinUsesLisp 210620ff31 shader_decode: Implement ISCADD 2019-01-15 17:54:52 +07:00
ReinUsesLisp b0e7920838 shader_decode: Implement XMAD 2019-01-15 17:54:51 +07:00
ReinUsesLisp becfdb8638 shader_decode: Implement PBK and BRK 2019-01-15 17:54:51 +07:00
ReinUsesLisp 8f37531f8e shader_decode: Implement LOP 2019-01-15 17:54:51 +07:00
ReinUsesLisp 8486e7f8c8 shader_decode: Implement SEL 2019-01-15 17:54:51 +07:00
ReinUsesLisp ccb71bece9 shader_decode: Implement IADD 2019-01-15 17:54:51 +07:00
ReinUsesLisp faadae5814 shader_decode: Implement ISETP 2019-01-15 17:54:51 +07:00
ReinUsesLisp 80183de884 shader_decode: Implement BFI 2019-01-15 17:54:51 +07:00
ReinUsesLisp 078ba28e13 shader_decode: Implement ISET 2019-01-15 17:54:51 +07:00
ReinUsesLisp acdbbb8885 shader_decode: Implement LD_C 2019-01-15 17:54:51 +07:00
ReinUsesLisp d79c462af0 shader_decode: Implement SHL 2019-01-15 17:54:51 +07:00
ReinUsesLisp a2819c204f shader_decode: Implement SHR 2019-01-15 17:54:51 +07:00
ReinUsesLisp 39f1c6246a shader_decode: Implement LOP32I 2019-01-15 17:54:51 +07:00
ReinUsesLisp 501284a81a shader_decode: Implement BFE 2019-01-15 17:54:51 +07:00
ReinUsesLisp e444a6553f shader_decode: Implement FSET 2019-01-15 17:54:51 +07:00
ReinUsesLisp 3052eae25e shader_decode: Implement F2I 2019-01-15 17:54:51 +07:00
ReinUsesLisp 8abe5ba2c8 shader_decode: Implement I2F 2019-01-15 17:54:51 +07:00
ReinUsesLisp c849b5b320 shader_decode: Implement F2F 2019-01-15 17:54:50 +07:00
ReinUsesLisp 9118deb990 shader_decode: Stub DEPBAR 2019-01-15 17:54:50 +07:00
ReinUsesLisp 97f33f00cf shader_decode: Implement SSY and SYNC 2019-01-15 17:54:50 +07:00
ReinUsesLisp abdbafbc20 shader_decode: Implement PSETP 2019-01-15 17:54:50 +07:00
ReinUsesLisp 802c23b8a8 shader_decode: Implement TMML 2019-01-15 17:54:50 +07:00
ReinUsesLisp 2b90637f4b shader_decode: Implement TEX and TXQ 2019-01-15 17:54:50 +07:00
ReinUsesLisp 878672f371 shader_decode: Implement TEXS (F32) 2019-01-15 17:54:50 +07:00
ReinUsesLisp c703f0aee4 shader_decode: Implement FSETP 2019-01-15 17:54:50 +07:00
ReinUsesLisp 8215ae942c shader_decode: Partially implement BRA 2019-01-15 17:54:50 +07:00
ReinUsesLisp 4f95dc950e shader_decode: Implement IPA 2019-01-15 17:54:50 +07:00
ReinUsesLisp cacb934f21 shader_decode: Implement EXIT 2019-01-15 17:54:50 +07:00
ReinUsesLisp 0c049e0a21 shader_decode: Implement ST_A 2019-01-15 17:54:50 +07:00
ReinUsesLisp e3f1233ce1 shader_decode: Implement LD_A 2019-01-15 17:54:50 +07:00
ReinUsesLisp ea358bd4bf shader_decode: Implement FADD32I 2019-01-15 17:54:50 +07:00
ReinUsesLisp c9b2a1b051 shader_decode: Implement FMUL32_IMM 2019-01-15 17:54:50 +07:00
ReinUsesLisp 2edee801ce shader_decode: Implement MOV32_IMM 2019-01-15 17:54:50 +07:00
ReinUsesLisp 06cb910c6d shader_decode: Stub RRO_C, RRO_R and RRO_IMM 2019-01-15 17:54:50 +07:00
ReinUsesLisp 5e6a0a08c1 shader_decode: Implement FMNMX_C, FMNMX_R and FMNMX_IMM 2019-01-15 17:54:50 +07:00
ReinUsesLisp 964ddeeb90 shader_decode: Implement MUFU 2019-01-15 17:54:50 +07:00
ReinUsesLisp 4ccaa1402d shader_decode: Implement FADD_C, FADD_R and FADD_IMM 2019-01-15 17:54:50 +07:00
ReinUsesLisp 7c192ec43f shader_decode: Implement FMUL_C, FMUL_R and FMUL_IMM 2019-01-15 17:54:50 +07:00
ReinUsesLisp 4c70d5b8eb shader_decode: Implement MOV_C and MOV_R 2019-01-15 17:54:50 +07:00
ReinUsesLisp a4f052f6b3 video_core: Replace gl_shader_decompiler 2019-01-15 17:54:50 +07:00
ReinUsesLisp 0c6fb456e0 glsl_decompiler: Implementation 2019-01-15 17:54:50 +07:00
ReinUsesLisp fbc67a0563 shader_ir: Add condition code helper 2019-01-15 17:54:50 +07:00
ReinUsesLisp a58abbcfc4 shader_ir: Add predicate combiner helper 2019-01-15 17:54:49 +07:00
ReinUsesLisp bf07272695 shader_ir: Add comparison helpers 2019-01-15 17:54:49 +07:00
ReinUsesLisp 60f044df56 shader_ir: Add half float helpers 2019-01-15 17:54:49 +07:00
ReinUsesLisp e3c55e31d7 shader_ir: Add integer helpers 2019-01-15 17:54:49 +07:00
ReinUsesLisp 833d0806f9 shader_ir: Add float helpers 2019-01-15 17:54:49 +07:00
ReinUsesLisp 6b9eea3fe5 shader_ir: Add setters 2019-01-15 17:54:49 +07:00
ReinUsesLisp 12a95ff453 shader_ir: Add local memory getters 2019-01-15 17:54:49 +07:00
ReinUsesLisp 2f87fd060d shader_ir: Add internal flag getters 2019-01-15 17:54:49 +07:00
ReinUsesLisp 15f431f0cb shader_ir: Add attribute getters 2019-01-15 17:54:49 +07:00
ReinUsesLisp 864e8f55cf shader_ir: Add constant buffer getters 2019-01-15 17:54:49 +07:00
ReinUsesLisp 5e639bfcf6 shader_ir: Add register getter 2019-01-15 17:54:49 +07:00
ReinUsesLisp 4aaa2192b9 shader_ir: Add immediate node constructors 2019-01-15 17:54:49 +07:00
ReinUsesLisp 15a0e1481d shader_ir: Initial implementation 2019-01-15 17:54:49 +07:00
ReinUsesLisp 294df41b86 shader_bytecode: Fixup encoding 2019-01-15 17:54:49 +07:00
ReinUsesLisp a0c8c16d07 shader_header: Make local memory size getter constant 2019-01-15 17:54:49 +07:00
Otávio Pace 215ca770df audio_core: remove unnecessary spaces on comments 2019-01-14 00:22:05 +07:00
bunnei bc879ae880
Merge pull request #1848 from FreddyFunk/QJsonArray
game_list: Remove a reference of a reference
2019-01-12 02:01:13 +07:00
bunnei c9ef8b0af1
Merge pull request #1959 from DarkLordZach/custom-rtc
settings: Add support for setting the RTC manually
2019-01-10 17:05:21 +07:00
bunnei 83e8ad2331
Merge pull request #1939 from DarkLordZach/web-applet
applets: Implement HLE web browser applet (LibAppletOff)
2019-01-10 17:04:38 +07:00
ReinUsesLisp 877a978a22 gl_rasterizer: Workaround Intel VAO DSA bug
There is a bug on Intel's blob driver where it fails to properly build a
vertex array object if it's not bound even after creating it with
glCreateVertexArrays. This workaround binds it after creating it to
bypass the issue.
2019-01-09 02:40:19 +07:00
ReinUsesLisp 3121408a90 gl_global_cache: Add dummy global cache manager 2019-01-08 17:47:45 +07:00
Zach Hilman ac7d8983eb settings: Fix comment structure 2019-01-07 19:40:28 +07:00
Zach Hilman 05dbb47af5 settings: Use std::chrono::seconds instead of s64 for RTC 2019-01-07 19:19:40 +07:00
Zach Hilman dbb1eb9c29 time: Use custom RTC settings if applicable for game 2019-01-07 19:19:40 +07:00
Zach Hilman 21f1b2889d core: Set custom RTC differential on game boot 2019-01-07 19:19:40 +07:00
Zach Hilman 26c9f12271 qt: Provide UI to edit custom RTC settings 2019-01-07 19:19:40 +07:00
Zach Hilman c6016856d8 settings: Add custom RTC settings
Stored as signed seconds since epoch.
2019-01-07 19:18:45 +07:00
ReinUsesLisp 19cf995225 gl_rasterizer: Skip framebuffer configuration if rendertargets have not been changed 2019-01-07 16:23:23 +07:00
bunnei 23ebd4920e
Merge pull request #1999 from ReinUsesLisp/dirty-shader
gl_shader_cache: Use dirty flags for shaders
2019-01-07 14:22:30 +07:00
ReinUsesLisp b683e41fca gl_rasterizer_cache: Use dirty flags for the depth buffer 2019-01-07 16:22:28 +07:00
ReinUsesLisp 179ee963db gl_rasterizer_cache: Use dirty flags for color buffers 2019-01-07 16:20:39 +07:00
ReinUsesLisp 0ab17ab406 gl_shader_cache: Use dirty flags for shaders 2019-01-07 16:13:12 +07:00
bunnei 17a68e5ebe
Merge pull request #1989 from lioncash/set
service/vi: Unstub IApplicationDisplayService's SetLayerScalingMode
2019-01-07 12:59:33 +07:00
bunnei e04d75f44c
Merge pull request #1992 from DarkLordZach/move-profile-manager-ui
qt: Move profile manager to own UI tab
2019-01-07 11:41:37 +07:00
bunnei 37ac1bb576
Merge pull request #1990 from ReinUsesLisp/copy-surface-stream-copy
gl_rasterizer_cache: Use GL_STREAM_COPY for PBOs
2019-01-07 11:34:05 +07:00
ReinUsesLisp 5933b3ea96 gl_stream_buffer: Use DSA for buffer management 2019-01-06 16:49:24 +07:00
ReinUsesLisp 35c095898b gl_rasterizer: Use DSA for vertex array objects 2019-01-06 16:49:24 +07:00
ReinUsesLisp ea4928393f gl_state: Drop uniform buffer state tracking 2019-01-06 00:28:01 +07:00
ReinUsesLisp fc8a8789da gl_rasterizer_cache: Use GL_STREAM_COPY for PBOs
Since the data is doing the path CPU -> GPU -> GPU copy is the most
approximate hint. Using GL_STREAM_DRAW generated a performance warning
on Nvidia's stack. Changing this hint removed the warning.
2019-01-05 02:27:55 +07:00
bunnei 59c665b28e
Merge pull request #1988 from lioncash/res
service/vi: Correct reported dimensions from IApplicationDisplayService's GetDisplayResolution()
2019-01-05 00:26:29 +07:00
Lioncash 9e8737b535 service/vi: Correct scaling mode conversions
These values are not equivalent, based off RE. The internal value is put
into a lookup table with the following values:

[3, 0, 1, 2, 4]

So the values absolutely do not map 1:1 like the comment was indicating.
2019-01-04 21:45:18 +07:00
Lioncash 56e51da1d9 service/vi: Factor out scaling mode conversions from the IPC function itself
Avoids entangling the IPC buffer appending with the actual operation of
converting the scaling values over. This also inserts the proper error
handling for invalid scaling values.
2019-01-04 21:45:18 +07:00
Lioncash 40aa1ea9f9 service/vi: Unstub IApplicationDisplayService' SetLayerScalingMode()
This appears to only check if the scaling mode can actually be
handled, rather than actually setting the scaling mode for the layer.

This implements the same error handling performed on the passed in
values.
2019-01-04 21:45:14 +07:00
bunnei a01832b2e0
Merge pull request #1981 from ogniK5377/open-app-area-create
Return no application area when games try to open an application area
2019-01-04 21:42:23 +07:00
bunnei 1c7696e0d9
Merge pull request #1980 from ogniK5377/applet-msg-update
Proper no message handling for AM::PopMessage
2019-01-04 21:42:12 +07:00
Lioncash bf036b46fc service/vi: Correct reported dimensions from IApplicationDisplayService's GetDisplayResolution()
Within the actual service, it makes no distinguishing between docked and
undocked modes. This will always return the constants values reporting
1280x720 as the dimensions.
2019-01-04 19:13:32 +07:00
Zach Hilman 54d7b664da qt: Move profile manager to own UI tab 2019-01-04 17:32:13 +07:00
David Marcec 4f41fd84ff Removed pulse event type
Pulse is considered a hack and nothing should be using it. We should completely remove it
2019-01-04 20:47:20 +07:00
bunnei de4f931d13
Merge pull request #1975 from lioncash/vi
service/vi: Minor updates and corrections to the DisplayInfo struct
2019-01-03 22:45:27 +07:00
David Marcec 48a526dba1 Return no application area when games try to open an application area
This will prompt CreateApplicationArea
2019-01-04 13:22:25 +07:00
David Marcec f2536cafe5 Proper no message handling for AM::PopMessage
When we have no messages, we should be returning an error code.
2019-01-04 13:11:17 +07:00
David Marcec 5af0340066 Fixed botw deadlock(and possibly 30 fps games rendering too fast? needs testing to confirm)
Upon investigating the issue with #1878, I found that games are the ones who handle the vsync event resetting and not us.
2019-01-03 20:32:47 +07:00
bunnei 2c0f831468
Merge pull request #1976 from lioncash/display
service/vi: Implement OpenDefaultDisplay in terms of OpenDisplay
2019-01-02 21:51:20 +07:00
bunnei 56a97647a3
Merge pull request #1978 from lioncash/enabled
service/vi: Implement SetDisplayEnabled()
2019-01-02 21:34:12 +07:00
bunnei a6aa710b84
Merge pull request #1942 from DarkLordZach/profile-select-game-boot
qt: Add setting to prompt for user on game boot
2019-01-02 21:05:27 +07:00
bunnei 11f990975c
Merge pull request #1941 from DarkLordZach/profile-select-save-data
qt: Use ProfileSelectionDialog when selecting user for save data
2019-01-02 21:05:02 +07:00
Lioncash ceeff8ebfd service/vi: Implement SetDisplayEnabled()
This IPC command is simply a stub inside the actual service itself, and
just returns a successful error code regardless of input. This is likely
only retained in the service interface to not break older code that relied
upon it succeeding in some way.
2019-01-02 20:48:04 +07:00
bunnei 7538fa4a67
Merge pull request #1977 from lioncash/vi-log
service/vi: Log more information where applicable
2019-01-02 20:36:40 +07:00
Lioncash 5bfd810ab5 service/vi: Log more information where applicable
In many cases, we didn't bother to log out any of the popped data
members. This logs them out to the console within the logging call to
provide more contextual information.
2019-01-02 19:42:10 +07:00
Lioncash dea1db0414 service/vi: Implement OpenDefaultDisplay in terms of OpenDisplay
Internally within the vi services, this is essentially all that
OpenDefaultDisplay does, so it's trivial to just do the same, and
forward the default display string into the function.
2019-01-02 18:16:36 +07:00
bunnei c91d2bac45
Merge pull request #1961 from ReinUsesLisp/tex-view-2d
gl_rasterizer_cache: Texture view if shader samples array but OGL is not
2019-01-02 17:51:32 +07:00
Lioncash 351f010cfc service/vi: Correct initial width and height values
Based off RE, it appears that almost all display types seem to use
1920x1080 except for a few (null display, edid display).
2019-01-02 17:36:03 +07:00
Lioncash fe3bf4f075 service/vi: Document unknown DisplayInfo struct members
It appears that the two members indicate whether a display has a bounded
number of layers (and if set, the second member indicates the total
number of layers).
2019-01-02 17:35:58 +07:00
bunnei 6a0e258dde
Merge pull request #1944 from FearlessTobi/port-4187
Port citra-emu/citra#4187: "Qt/Configure: Use sidebar to divide tabs into smaller groups"
2019-01-02 17:24:38 +07:00
bunnei dd0b17a5f0
Merge pull request #1969 from lioncash/cast
yuzu: Fix truncation warnings within UI code
2019-01-02 17:20:52 +07:00
Lioncash cd8924520c yuzu/configure_general: Silence truncation warnings in loadConfiguration()
The QPixmap API expects an unsigned int.
2018-12-31 19:14:48 +07:00
Lioncash f5f35caf20 yuzu/config: Silence truncation warnings 2018-12-31 19:11:29 +07:00
Lioncash 1f0c8bfeda core/kernel: Remove unnecessary inclusions
Gets rid of a few unnecessary header dependencies in some source files.
2018-12-31 19:04:16 +07:00
bunnei f96bb2520b
Merge pull request #1966 from lioncash/backtrace
arm_interface: Minor cleanup
2018-12-31 11:11:00 +07:00
Lioncash b4242633ad kernel/svc: Correct misleading error message within CreateThread()
This is a bounds check to ensure that the thread priority is within the
valid range of 0-64. If it exceeds 64, that doesn't necessarily mean
that an actual priority of 64 was expected (it actually means whoever
called the function screwed up their math).

Instead clarify the message to indicate the allowed range of thread
priorities.
2018-12-30 21:29:38 +07:00
Lioncash 3a8d38be7e kernel/svc: Sanitize core number and thread priorities in CreateThread()
Now that we handle the kernel capability descriptors we can correct
CreateThread to properly check against the core and priority masks
like the actual kernel does.
2018-12-30 21:23:56 +07:00
Lioncash 8769604144 kernel/process: Rename GetAllowedProcessorMask() and GetAllowedThreadPriorityMask()
Makes them consistent with their kernel capability counterparts.
2018-12-30 21:09:46 +07:00
Lioncash 205e6d3b97 kernel/svc: Simplify thread core ID sanitizing in CreateThread
Rather than use a switch here, this can be collapsed into a simple range
check, which is a little easier on the eyes.
2018-12-30 20:59:54 +07:00
Lioncash 039e58a984 arm_interface: Make include path relative for arm_interface.h
Makes it consistent with the rest of the includes.
2018-12-30 20:46:29 +07:00
Lioncash a17dd30057 arm_interface: Make LogBacktrace() a const member function
This function doesn't modify instance state, so it can be made const.
2018-12-30 20:44:48 +07:00
Lioncash 776ce5d74c arm_interface: Mark variables as const where applicable in LogBacktrace()
Two of these variables have fixed values, so we can make that
immediately obvious from the get-go.
2018-12-30 20:43:17 +07:00
Lioncash 387bffda5e arm_interface: Remove unnecessary semicolon
Namespaces don't require the use of a semicolon. Silences a -Wextra-semi
warning.
2018-12-30 20:41:33 +07:00
Sebastian Valle e5dfbe22ee
Merge pull request #1956 from lioncash/process-thread
kernel/process: Start the main thread using the specified ideal core
2018-12-30 20:32:41 +07:00
bunnei 331c252509
Merge pull request #1847 from ogniK5377/backtrace-break
Print backtrace on svcBreak
2018-12-29 22:58:13 +07:00
bunnei f80229b676
Merge pull request #1964 from lioncash/time
service/time: Minor cleanup
2018-12-29 22:57:38 +07:00
ReinUsesLisp 97fb6179b9 gl_rasterizer_cache: Texture view if shader samples array but OGL is not
When a shader samples a texture array but that texture in OpenGL is
created without layers, use a texture view to increase the texture
hierarchy. For example, instead of binding a GL_TEXTURE_2D bind a
GL_TEXTURE_2D_ARRAY view.
2018-12-29 23:49:12 +07:00
Lioncash fa97f50bff service/time: Minor cleanup to GetClockSnapshot()
Moves some variables closer to their actual usage sites.
2018-12-29 21:42:13 +07:00
Lioncash af51f123fa service/time: Fill in some structures and remove padding where not necessary 2018-12-29 18:26:32 +07:00
David Marcec 22d4e10664 Moved log backtrace to arm_interface.cpp. Added printing of error code to fatal 2018-12-29 12:55:19 +07:00
Zach Hilman 0c5ede492f travis: Use correct package for linux Qt5WebEngine 2018-12-28 19:29:49 +07:00
Zach Hilman cb930c4b5a web_browser: Add bounds checking to applet interface 2018-12-28 18:20:29 +07:00
bunnei 2020ba06e1 gpu: Remove PixelFormat G8R8U and G8R8S, as they do not seem to exist.
- Fixes UI rendering issues in The Legend of Zelda: Breath of the Wild.
2018-12-28 15:36:45 +07:00
bunnei af9336df57
Merge pull request #1958 from lioncash/audio
audio_core: Convert LOG_CRITICAL + UNREACHABLE over to UNIMPLEMENTED/UNIMPLEMENTED_MSG
2018-12-28 15:32:41 +07:00
Zach Hilman 45da3be40e main: Add main window integrations for QtWebBrowserApplet 2018-12-28 15:32:39 +07:00
Zach Hilman e00e1fc755 qt: Implement Qt frontend to web browser
Using a custom reimplementation of QWebEngineView and an injector script.
2018-12-28 15:32:39 +07:00
Zach Hilman 32bfa92c71 core: Add getter and setter for WebBrowserApplet frontend 2018-12-28 15:32:39 +07:00
Zach Hilman 85a3368e6d frontend: Add frontend responder for web browser 2018-12-28 15:32:39 +07:00
Zach Hilman 69f622be36 applets: Implement LibAppletOff (Web) applet 2018-12-28 15:32:39 +07:00
Zach Hilman 4c20a39828 loader: Add accessor for Manual RomFS 2018-12-28 15:32:39 +07:00
Zach Hilman 621b25b6be hid: Make Hid service accessible and add GetPressState 2018-12-28 15:32:03 +07:00
Zach Hilman abbcc8e61e romfs: Add SingleDiscard extraction type
Needed for manual RomFS extraction, as Full generates an extra directory and Truncated generates variable results.
2018-12-28 15:30:36 +07:00
Zach Hilman 94db6e5f3f am: Add size parameter to am:IStorage logging 2018-12-28 15:30:36 +07:00
Lioncash a73c7c73eb audio_core: Convert LOG_CRITICAL + UNREACHABLE over to UNIMPLEMENTED/UNIMPLEMENTED_MSG
These two macros being used in tandem were used prior to the
introduction of UNIMPLEMENTED and UNIMPLEMENTED_MSG. This provides
equivalent behavior, just with less typing/reading involved.
2018-12-28 14:13:58 +07:00
Lioncash a81ff6f54c kernel/process: Start the main thread using the specified ideal core
This matches kernel behavior in that processes are started using their
specified ideal core, rather than always starting on core 0.
2018-12-27 21:50:16 +07:00
Lioncash f80bc712ea kernel: Rename 'default' CPU core to 'ideal' core
This makes the naming more closely match its meaning. It's just a
preferred core, not a required default core. This also makes the usages
of this term consistent across the thread and process implementations.
2018-12-27 21:48:49 +07:00
Lioncash 771431f625 kernel/thread: Move process thread initialization into process.cpp
This function isn't a general purpose function that should be exposed to
everything, given it's specific to initializing the main thread for a
Process instance.

Given that, it's a tad bit more sensible to place this within
process.cpp, which keeps it visible only to the code that actually needs
it.
2018-12-27 20:32:30 +07:00
bunnei 19bfbb28ce
Merge pull request #1954 from lioncash/npdm
file_sys/program_metadata: Print out more descriptive address space descriptions
2018-12-27 19:58:36 +07:00
Lioncash 9aa68212d9 file_sys/program_metadata: Print out more descriptive address space descriptions
Provides extra information that makes it easier to tell if an executable
being run is using a 36-bit address space or a 39-bit address space.
While we don't support AArch32 executables yet, this also puts in
distinguishing information for the 32-bit address space types as well.
2018-12-27 19:16:45 +07:00
spycrab c6da772b24 Qt/Configure: Use sidebar to divide tabs into smaller groups 2018-12-28 01:14:57 +07:00
Lioncash fbeaa330a3 kernel/process: Remove most allocation functions from Process' interface
In all cases that these functions are needed, the VMManager can just be
retrieved and used instead of providing the same functions in Process'
interface.

This also makes it a little nicer dependency-wise, since it gets rid of
cases where the VMManager interface was being used, and then switched
over to using the interface for a Process instance. Instead, it makes
all accesses uniform and uses the VMManager instance for all necessary
tasks.

All the basic memory mapping functions did was forward to the Process'
VMManager instance anyways.
2018-12-27 19:08:47 +07:00
Rodolfo Bogado fbe900ba6d Add missing uintBitsToFloat to SetRegisterToHalfFloat 2018-12-27 14:39:10 +07:00
bunnei 795335af0f
Merge pull request #1928 from lioncash/caps
kernel: Handle kernel capability descriptors
2018-12-27 11:15:34 +07:00
bunnei fa9acc26d9
Merge pull request #1892 from Tinob/master
Improve Zero flag implementation
2018-12-27 11:06:59 +07:00
bunnei 8e23e40a72
Merge pull request #1929 from bunnei/fix-hid
hid: Fix SetNpadJoyHoldType and improve logging.
2018-12-27 11:04:56 +07:00
bunnei 2991c747c9
Merge pull request #1945 from bunnei/fix-hid-horiz
npad: Remove code to invert input in horizontal mode.
2018-12-27 11:04:40 +07:00
bunnei 7477c12fe2
Merge pull request #1949 from lioncash/unmap
kernel/vm_manager: Reset region attributes when unmapping a VMA
2018-12-27 11:04:26 +07:00
Zach Hilman c643f364b4 am: Implement GetSaveDataSize and ExtendSaveData
These functions come in a pair and are needed by Smash Ultimate, Minecraft, and Skyrim, amongst others.
2018-12-27 00:18:00 +07:00
Zach Hilman 2e6b67a079 filesystem: Populate save data sizes from control data 2018-12-27 00:18:00 +07:00
Zach Hilman 4082c4eda6 savedata_factory: Partially implement IVFC save sizes using files
This stores a file in the save directory called '.yuzu_save_size' which stores the two save sizes (normal area and journaled area) sequentially as u64s.
2018-12-27 00:18:00 +07:00
Zach Hilman 0756f29a2c loader: Add accessor for game control data 2018-12-27 00:16:55 +07:00
Zach Hilman 417e1ef09c control_metadata: Update NACP fields with latest Switchbrew data 2018-12-27 00:16:55 +07:00
Zach Hilman 5c4259ec1a control_metadata: Use value member instead of unique_ptr to store struct
Serves no actual purpose in this instance besides making NACP's copy assignment deleted, which is not intended behavior.
2018-12-27 00:16:55 +07:00
Zach Hilman 4a6ba58073 vfs: Add reinterpret_casts to WriteArray and Object
Allows these functions to compile when T is not u8.
2018-12-27 00:16:55 +07:00
bunnei 73c9ffc422
Merge pull request #1946 from lioncash/decl
renderer_opengl: Correct forward declaration of FramebufferLayout
2018-12-26 20:39:54 +07:00
bunnei 17fa0ffff9
Merge pull request #1948 from lioncash/translatable
configure_per_general: Mark UI strings as translatable in the constructor
2018-12-26 20:39:30 +07:00
Lioncash 1392597ede kernel/vm_manager: Reset region attributes when unmapping a VMA
Like the other members related to memory regions, the attributes need to
be reset back to their defaults as well.
2018-12-26 20:15:29 +07:00
Lioncash 0c18d47348 configure_per_general: Mark UI strings as translatable in the constructor
These are user-facing strings, so they should be translatable.
2018-12-26 17:45:15 +07:00
Lioncash faa9110541 configure_input_simple: Make input profile array constexpr
Calling tr() from a file-scope array isn't advisable, since it can be
executed before the Qt libraries are even fully initialized, which can
lead to crashes.

Instead, the translatable strings should be annotated, and the tr()
function should be called at the string's usage site.
2018-12-26 17:36:36 +07:00
Lioncash 67fa21e143 renderer_opengl: Correct forward declaration of FramebufferLayout
This is actually a struct, not a class, which can lead to compilation
warnings.
2018-12-26 17:32:32 +07:00
Rodolfo Bogado 33056dd833 Apply CC test to the final value to be stored in the register 2018-12-26 18:16:31 +07:00
David 8047873a66 Fixed shader linking error due to TLDS (#1934)
* Fixed shader linking error due to TLDS

coord should be coords

* Fix remaining coords
2018-12-26 15:55:39 +07:00
bunnei ae582b6669
Merge pull request #1849 from encounter/svcSetThreadActivity
svc: Implement SetThreadActivity (thread suspension)
2018-12-26 15:54:14 +07:00
bunnei 7e622c5575 npad: Remove code to invert input in horizontal mode.
- This was incorrect, the game appears to handle this for us.
- Fixes horizontal mode with Puyo Puyo Tetris and Super Mario Odyssey.
2018-12-26 15:47:11 +07:00
ReinUsesLisp aaa0e6c346 shader_bytecode: Fixup TEXS.F16 encoding 2018-12-26 01:35:44 +07:00
Zach Hilman 9c2d83cb9c qt: Use ProfileSelectionDialog when selecting user for save data
This allows us to present a much nicer UI to the user over a simple combo box and is made easy with the modular nature of the profile-selection applet frontend.
2018-12-25 10:52:50 +07:00
Zach Hilman 4d61ac08aa qt: Add setting to prompt for user on game boot
Using the QtProfileSelectorDialog, this implementation is trivial. This mimics the real switch behavior of asking which user on every game boot, but it is default disabled as that might get inconvenient.
2018-12-25 10:42:14 +07:00
bunnei 9a22a94a51
Merge pull request #1886 from FearlessTobi/port-4164
Port citra-emu/citra#4164: "citra_qt, video_core: Screenshot functionality"
2018-12-23 14:36:51 +07:00
bunnei 52726342bd
Merge pull request #1930 from lioncash/common
common/quaternion: Ensure that w is always initialized
2018-12-23 14:35:29 +07:00
bunnei f95f6c7d86
Merge pull request #1781 from DarkLordZach/applet-profile-select
am: Implement HLE profile selector applet
2018-12-23 14:35:13 +07:00
bunnei d08bdc861f
Merge pull request #1780 from DarkLordZach/controller-profiles
configure_input: Add Controller Setup Profiles and simplify input UI
2018-12-23 14:34:29 +07:00
Rodolfo Bogado bbf8d6bf01 Includde saturation in the evaluation of the control code 2018-12-22 19:19:18 +07:00
Rodolfo Bogado 946777601b Handle RZ cases evaluating the expression instead of the register value. 2018-12-22 19:19:18 +07:00
Rodolfo Bogado 7e72b5e453 complete emulation of ZeroFlag 2018-12-22 19:19:18 +07:00
Lioncash acddf16e57 common/quaternion: Ensure that w is always initialized
Previously xyz was always being zero initialized due to its constructor,
but w wasn't. Ensures that we always have a deterministic initial state.
2018-12-21 15:25:31 +07:00
bunnei e75e8b9580
Merge pull request #1921 from ogniK5377/no-unit
Fixed uninitialized memory due to missing returns in canary
2018-12-21 14:12:54 +07:00
bunnei 42427b9c7a
Merge pull request #1920 from heapo/texture_format_selection
Texture format fixes for RGBA16UI for copies and R16U when used as depth
2018-12-21 13:46:17 +07:00
bunnei 59ac3346eb
Merge pull request #1925 from lioncash/pid
kernel/{process, thread}: Amend behavior related to IDs
2018-12-21 13:45:27 +07:00
bunnei 41cbd088c2
Merge pull request #1914 from lioncash/id
service/am: Unstub GetAppletResourceUserId
2018-12-21 13:43:51 +07:00
bunnei 1120e0b4d2 hid: Fix SetNpadJoyHoldType and improve logging. 2018-12-21 13:37:39 +07:00
Lioncash 002ae08bbd kernel/process: Hook up the process capability parser to the process itself
While we're at it, we can also toss out the leftover capability parsing
from Citra.
2018-12-21 07:05:34 +07:00
Lioncash d09fb82113 kernel/process_capability: Handle debug capability flags 2018-12-21 07:05:34 +07:00
Lioncash 10824c5d63 kernel/process_capability: Handle handle table capability flags
This just specifies the handle table size. There's also a section of
reserved bits that are checked against.
2018-12-21 07:05:34 +07:00
Lioncash e0e84aede0 kernel/process_capability: Handle kernel version capability flags 2018-12-21 07:05:34 +07:00
Lioncash 010bc677f3 kernel/process_capability: Handle program capability flags 2018-12-21 07:05:34 +07:00
Lioncash 0f216d20e3 kernel/process_capability: Handle interrupt capability flags
Similar to the service capability flags, however, we currently don't
emulate the GIC, so this currently handles all interrupts as being valid
for the time being.
2018-12-21 07:05:34 +07:00
Lioncash 3dc59b74ec kernel/process_capability: Handle syscall capability flags 2018-12-21 07:05:34 +07:00
Lioncash 27caf71204 kernel/process_capability: Handle the priority mask and core mask flags
Handles the priority mask and core mask flags to allow building up the
masks to determine the usable thread priorities and cores for a kernel
process instance.
2018-12-21 07:05:34 +07:00
Lioncash 6ff5135521 kernel/process: Introduce process capability parsing skeleton
We've had the old kernel capability parser from Citra, however, this is
unused code and doesn't actually map to how the kernel on the Switch
does it. This introduces the basic functional skeleton for parsing
process capabilities.
2018-12-21 07:05:31 +07:00
Lioncash fc8da2d5e3 common: Add basic bit manipulation utility function to Common 2018-12-21 07:04:18 +07:00
bunnei 4923df10cc
Merge pull request #1923 from ogniK5377/nfp-device-list
Device handle should not be a random id, instead it's the current npad id
2018-12-19 13:14:43 +07:00
bunnei 3050f3a7ba
Merge pull request #1909 from heapo/shadow_sampling_fixes
Fix arrayed texture LOD selection and depth comparison ordering
2018-12-19 13:10:37 +07:00
bunnei 80d36634e1
Merge pull request #1915 from lioncash/sm
service/sm: Improve debug log for RegisterService
2018-12-19 13:10:11 +07:00
Lioncash b74eb88c68 kernel/svc: Handle thread handles within GetProcessId
If a thread handle is passed to svcGetProcessId, the kernel attempts to
access the process ID via the thread's instance's owning process.

Technically, this function should also be handling the kernel debug
objects as well, however we currently don't handle those kernel objects
yet, so I've left a note via a comment about it to remind myself when
implementing it in the future.
2018-12-19 12:16:15 +07:00
bunnei e73dd39413
Merge pull request #1907 from lioncash/attribute
kernel/svc: Implement svcSetMemoryAttribute
2018-12-19 11:50:50 +07:00
Lioncash caab838bdb svc: Implement svcSetMemoryAttribute
With all the basic backing functionality implemented, we can now unstub
svcSetMemoryAttribute.
2018-12-19 10:59:40 +07:00
Lioncash 622242e345 vm_manager: Add member function for setting memory attributes across an address range
This puts the backing functionality for svcSetMemoryAttribute in place,
which will be utilized in a following change.
2018-12-19 10:59:40 +07:00
Lioncash 603cc72168 vm_manager: Add member function for checking a memory range adheres to certain attributes, permissions and states 2018-12-19 10:59:36 +07:00
Lioncash 62d4377053 kernel/kernel: Use correct initial PID for userland Process instances
Starts the process ID counter off at 81, which is what the kernel itself
checks against internally when creating processes. It's actually
supposed to panic if the PID is less than 81 for a userland process.
2018-12-18 22:54:01 +07:00
Lioncash 0906302ca9 kernel/svc: Correct output parameter for svcGetThreadId
The service call uses a 64-bit value, just like svcGetProcessId. This
amends the function signature accordingly.
2018-12-18 22:38:26 +07:00
Lioncash 8435451093 kernel/thread: Make thread_id a 64-bit value
The kernel uses a 64-bit value for the thread ID, so we shouldn't be
using a 32-bit value.
2018-12-18 22:37:03 +07:00
Lioncash 43e1189688 kernel/svc: Correct output parameter for svcGetProcessId
svcGetProcessId's out parameter is a pointer to a 64-bit value, not a
32-bit one.
2018-12-18 22:30:56 +07:00
Lioncash 9b3a38e3d3 kernel/process: Make process_id a 64-bit value
In the actual kernel, this is a 64-bit value, so we shouldn't be using a
32-bit type to handle it.
2018-12-18 22:28:55 +07:00
David Marcec 807e7640aa Device handle should not be a random id, instead it's the current npad id
Found during hardware testing
2018-12-19 14:16:30 +07:00
David Marcec 08d5663cb8 Moved backtrace to ArmInterface 2018-12-19 14:10:51 +07:00
David Marcec 20859802f0 hopefully fix clang format issue 2018-12-19 13:22:09 +07:00
David Marcec fdd649e2ef Fixed uninitialized memory due to missing returns in canary
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used.
2018-12-19 12:52:32 +07:00
Lioncash 2a533f0067 service/sm: Improve debug log for RegisterService
Now it also indicates the name and max session count. This also gives a
name to the unknown bool. This indicates if the created port is supposed
to be using light handles or regular handles internally. This is passed
to the respective svcCreatePort parameter internally.
2018-12-18 18:22:22 +07:00
zhupengfei a2be49305d yuzu, video_core: Screenshot functionality
Allows capturing screenshot at the current internal resolution (native for software renderer), but a setting is available to capture it in other resolutions. The screenshot is saved to a single PNG in the current layout.
2018-12-18 22:54:41 +07:00
heapo 37280cf555 Texture format fixes: Flag RGBA16UI as GL_RGBA_INTEGER format, and interpret R16U as Z16 when depth_compare is enabled. 2018-12-18 11:34:51 +07:00
bunnei 39262921f2
Merge pull request #1913 from MerryMage/default-fpcr
kernel/thread: Set default fpcr
2018-12-18 14:13:57 +07:00
bunnei 5bae002aaa
Merge pull request #1918 from MerryMage/cntfrq
arm_dynarmic: Set CNTFRQ value
2018-12-18 14:13:35 +07:00
MerryMage eef6ce79a9 kernel/thread: Set default fpcr 2018-12-18 17:37:03 +07:00
MerryMage fd2c42bfcd arm_dynarmic: Set CNTFRQ value 2018-12-18 17:28:12 +07:00
bunnei 325dcf2881
Merge pull request #1917 from ReinUsesLisp/fixup-half
shader_bytecode: Fixup half float's operator B encoding
2018-12-18 10:45:58 +07:00
bunnei 116e6247ce
Merge pull request #1889 from DarkLordZach/swkbd-state-changed
applets: Correct usage of SignalStateChanged event
2018-12-18 09:59:27 +07:00
ReinUsesLisp ef061481c5 shader_bytecode: Fixup half float's operator B encoding 2018-12-18 04:28:50 +07:00
bunnei 95255899e7
Merge pull request #1903 from heapo/fmul_postfactor
Implement postfactor multiplication/division for fmul instructions
2018-12-17 22:00:43 +07:00
Lioncash dd272298aa service/am: Unstub GetAppletResourceUserId
This is supposed to return the current process' ID. (0 indicates an
invalid ID for both process IDs and ARU IDs).
2018-12-17 21:01:14 +07:00
heapo 72599cc667 Implement postfactor multiplication/division for fmul instructions 2018-12-17 07:56:25 +07:00
heapo a6daed74f5 Fix arrayed shadow sampler array slice/depth comparison ordering, as well as invalid GLSL LOD selection. 2018-12-17 07:53:48 +07:00
Lioncash 4dc8a7da3f vm_manager: Rename meminfo_state to state
This is shorter and more concise. This also removes the now-innaccurate
comment, as it's not returned wholesale to svcQueryMemory anymore.
2018-12-15 19:43:36 +07:00
Lioncash 34b24a47e9 vm_manager: Add backing functionality for memory attributes
Adds the barebones enumeration constants and functions in place to
handle memory attributes, while also essentially leaving the attribute
itself non-functional.
2018-12-15 19:43:32 +07:00
bunnei 84823a3036
Merge pull request #1905 from bunnei/ignore-empty-gpu-lists
nvhost_gpu: Skip empty GPU command lists.
2018-12-15 00:35:33 +07:00
bunnei 040d84d816 nvhost_gpu: Skip empty GPU command lists. 2018-12-15 00:33:22 +07:00
bunnei d1603a0abb
Merge pull request #1901 from jschmer/ServiceLeak
Fix Service object leak on emulation stop
2018-12-15 00:30:10 +07:00
bunnei 2f2fc47af2
Merge pull request #1732 from DarkLordZach/yield-types
svc: Implement yield types 0 and -1
2018-12-15 00:28:12 +07:00