Commit graph

143 commits

Author SHA1 Message Date
gdkchan 231fae1a4c
Texture/Vertex/Index data cache (#132)
* Initial implementation of the texture cache

* Cache vertex and index data aswell, some cleanup

* Improve handling of the cache by storing cached ranges on a list for each page

* Delete old data from the caches automatically, ensure that the cache is cleaned when the mapping/size changes, and some general cleanup
2018-06-08 21:15:56 -03:00
riperiperi 6fe51f9705 ReadBytes function in AMemory, with cleaner range check. (#136) 2018-06-08 21:15:02 -03:00
greggameplayer 39ebb83453 Add & Correct ErrorModules (#137)
* Add & Correct ErrorModules

* Remove LibNX specific ErrorModules

* Remove Homebrew Specific ErrorModules
2018-06-08 19:57:42 -03:00
gdkchan 741ec27b1d Fix ILibraryAppletCreator CreateStorage, implement Write on IStorageAccessor 2018-06-04 02:09:41 -03:00
gdkchan e7efee7909 Use GetBufferType0x21 on TransactParcelAuto aswell 2018-06-02 20:40:26 -03:00
Starlet 250e2084f4 SMO stubs and implementations (#129)
* WIP SMO stubs and implementations

* fixes?

* Add StorageHelper

* Whoops

* Compliant with review.

* Remove unnecessary usings
2018-06-02 19:46:09 -03:00
gdkchan 53a6922f87 Some small gpu improvements and shader improvements, add support for ASTC 4x4 textures (slow!) 2018-06-02 00:50:56 -03:00
gdkchan f43dd08064 Added support for more shader instructions and texture formats, fix swapped channels in RGB565 and RGBA5551? texture formats, allow zero values on blending registers, initial work to build CFG on the shader decoder, update the BRA instruction to work with it (WIP) 2018-05-29 20:37:10 -03:00
gdkchan 9670c096e4 Initial work to support AArch32 with a interpreter, plus nvmm stubs (not used for now) 2018-05-26 17:50:47 -03:00
Starlet cb1cf489f9 [IApplicationFunctions/INvDrvServices] Stub GetPseudoDeviceId, FinishInitialize and add more pctl service names. (#127)
* [INvDrvServices] Stub FinishInitialize

* [IApplicationFunctions] Stub GetPseudoDeviceId

* I need to proofread my shit...

* Also add more pctl service names
2018-05-25 18:33:09 -03:00
gdkchan e78737089c Remove some calls generated on the CPU for inexistent intrinsic methods 2018-05-23 00:27:48 -03:00
gdkchan 79e0070363 Improve shader sending method to GAL, use a memory interface instead of reading a fixed array size and sending every time 2018-05-22 22:43:31 -03:00
Starlet 84996ccd36 [SvcSystem/SvcMemory] Implement SvcGetInfo 16, SvcMapPhysicalMemory & SvcUnmapPhysicalMemory (#126)
* [SvcSystem] Implement SvcGetInfo 16

SvcGetInfo 16 always should be 1(?)

* Implement SvcMapPhysicalMemory &  SvcUnmapPhysicalMemory

* Adjusted to review.
2018-05-22 17:40:46 -03:00
Thomas Guillemard fa4b34bd19 Add a C++ demangler (#119)
* Add a C++ demangler for PrintStackTrace

This is a simple C++ demangler (only supporting name demangling) that will
probably be enough for any stacktrace cases.

* Create Ryujinx.Core.OsHle.Diagnostics.Demangler and move DemangleName

* Rename Demangler -> Demangle + Fix coding style

* Starting a real parsing for demangler (still simple and no compression support yet)

* Partially implement decompression

* Improve compression support (still need to fix errored compression indexing)

* Some cleanup

* Fix Demangle.Parse call in PrintStackTrace

* Trim parameters result to get more clear prototypes

* Rename Demangle -> Demangler and fix access level

* Fix substitution possible issues also improve code readability

* Redo compression indexing to be more accurate

* Add support of not nested function name
2018-05-22 17:40:02 -03:00
gdkchan b19c474082 Added more shader instructions, including BFE, BRA (partial), FMNMX, ISCADD, SHL, LD_C, some shader related fixes, added support for texture component selection 2018-05-17 15:25:42 -03:00
gdkchan 9b9ead94cd Only use higher priority on yield, change reschedule to be per-thread instead of using SchedulerThread to store the reschedule flag 2018-05-15 23:49:57 -03:00
gdkchan 73a3233d57 Fix some races in SvcThreadSync and change the way how yield works 2018-05-15 22:37:54 -03:00
gdkchan fdfa9424c8 Fix typo and update priority/avoid duplicates on UpdateMutexOwner 2018-05-14 03:09:08 -03:00
gdkchan ee0b14ba08 Some improvements to SetThreadCoreMask, simplified implementation of wait lists 2018-05-14 03:01:10 -03:00
gdkchan 9e50ed53e6 Implement GetTpcMasks on nvservices 2018-05-13 22:10:45 -03:00
gdkchan b2b1d7dcd7 Better implementation of SetThreadCoreMask that allows changing the Core Mask (untested, no clue if it actually works) 2018-05-13 22:00:29 -03:00
gdkchan 4546d1b9be Initial work to support changing thread core on the scheduler, also some cond var priority fixes 2018-05-13 00:22:42 -03:00
gdkchan 3603497a13 Allow using self thread id on some svcs (fixes #117) 2018-05-11 23:05:06 -03:00
gdkchan 0381a09227 Fix WidthInGobs on the GPU 2018-05-11 20:20:44 -03:00
gdkchan f9f111bc85
Add intrinsics support (#121)
* Initial intrinsics support

* Update tests to work with the new Vector128 type and intrinsics

* Drop SSE4.1 requirement

* Fix copy-paste mistake
2018-05-11 20:10:27 -03:00
Starlet 8e306b3ac1 Fix NV stubs (#124)
* Fix NV stubs

* Compliant with feedback

* Oops, Compliant with feedback #2
2018-05-11 00:19:51 -03:00
Thomas Guillemard 0979426e63 Implement ISystemDisplayService::GetDisplayMode & Add IManagerDisplayService::SetLayerVisibility stub (#118)
* Add ISystemDisplayService::GetDisplayMode & IManagerDisplayService::SetLayerVisibility

Also add some missing PrintStub calls

* Fix import ordering & Fix incorrect value for the third word in GetDisplayMode
2018-05-10 23:40:52 -03:00
gdkchan ac91607ac3 Fix regression caused by wrong endian on GetAudioRendererWorkBufferSize version check 2018-05-07 16:03:30 -03:00
gdkchan 34037701c7
NvServices refactoring (#120)
* Initial implementation of NvMap/NvHostCtrl

* More work on NvHostCtrl

* Refactoring of nvservices, move GPU Vmm, make Vmm per-process, refactor most gpu devices, move Gpu to Core, fix CbBind

* Implement GetGpuTime, support CancelSynchronization, fix issue on InsertWaitingMutex, proper double buffering support (again, not working properly for commercial games, only hb)

* Try to fix perf regression reading/writing textures, moved syncpts and events to a UserCtx class, delete global state when the process exits, other minor tweaks

* Remove now unused code, add comment about probably wrong result codes
2018-05-07 15:53:23 -03:00
Ac_K 4419e8d6b4
Update IAudioRendererManager.cs 2018-05-04 16:52:07 +02:00
Ac_K d0afc8e380 A REAL fix for some games. (#116)
* Update IAudioRendererManager.cs

* Update IAudioRendererManager.cs

* Update IAudioRendererManager.cs
2018-05-01 21:02:28 -03:00
gdkchan 071754aaeb Fix GetDesiredLanguage and expose a way to set the desired language, default to english 2018-04-29 20:18:46 -03:00
gdkchan f73a182b20 Properly support multiple vertex buffers, stub 2 ioctls, fix a shader issue, change the way how the vertex buffer size is calculated for the buffers with limit = 0 2018-04-29 17:58:38 -03:00
gdkchan 17f4ccf2d5 Remove unnecessary casts from NxSettings 2018-04-26 13:57:25 -03:00
gdkchan 1af78416d1 Add null terminator to audio device names when writing to the output buffer 2018-04-26 11:34:40 -03:00
gdkchan 81e74ebd86 Remove thread from the threads list when it finishes, remove debug code 2018-04-26 00:07:12 -03:00
gdkchan a38a72b062 Some small sync primitive fixes, logging fixes, started to implement the 2D engine on the GPU, fixed DrawArrays, implemented a few more shader instructions, made a start on nvdrv refactor, etc... 2018-04-25 23:12:26 -03:00
Ac_K 211f7f69db Update ISystemSettingsServer.cs (#107)
* Update ISystemSettingsServer.cs

Implement `GetSettingsItemValue`.

* Add NxSettings.cs

Generated automatically from a Switch 3.0 config file (Tid: 0100000000000818).

* Update ISystemSettingsServer.cs

* Update ISystemSettingsServer.cs

* Update ISystemSettingsServer.cs
2018-04-25 21:52:22 -03:00
gdkchan 2a985de88c [HLE/Audio] Use correct audio device names 2018-04-24 17:14:26 -03:00
gdkchan a8ba340dde
Improved logging (#103) 2018-04-24 15:57:39 -03:00
Ac_K 4e24866b47
Update IAudioController.cs 2018-04-23 05:02:30 +02:00
gdkchan db0aa54233 Print guest stack trace on a few points that can throw exceptions 2018-04-22 02:48:17 -03:00
gdkchan bd9b1e2c6b Stub a few services, add support for generating call stacks on the CPU 2018-04-22 01:22:46 -03:00
Ac_K 4906acdde9 Some implementations (#99)
* Some implementations

- ICommonStateGetter
* GetBootMode
- ISelfController
* SetHandlesRequestToDisplay
- IServiceGetterInterface
- ISystemUpdateInterface
- IVulnerabilityManagerInterface
- IPrepoService
- ISettingsServer
* GetLanguageCode
- ISystemSettingsServer
* GetFirmwareVersion2
- IHOSBinderDriver
* TransactParcelAuto

* Fix Implementations

* Fix Implementations 2
2018-04-21 20:04:43 -03:00
Ac_K 434e40b8a0 Update am service (#98)
* am services implementations

Implement:
- IAllSystemAppletProxiesService
- IApplicationCreator
- IGlobalStateController
- IHomeMenuFunctions
  * RequestToGetForeground stub.
  * GetPopFromGeneralChannelEvent stub event.
- ISystemAppletProxy
  * GetCommonStateGetter
  * GetSelfController
  * GetWindowController
  * GetAudioController
  * GetDisplayController
  * GetLibraryAppletCreator
  * GetHomeMenuFunctions
  * GetGlobalStateController
  * GetApplicationCreator
  * GetDebugFunctions

* Update ServiceFactory.cs

* Update IHomeMenuFunctions.cs

* Update IHomeMenuFunctions.cs

* Update ServiceFactory.cs
2018-04-21 16:30:06 -03:00
gdkchan 90279d96ea
Implement the synchronization primitives like the Horizon kernel does (#97)
* Started to work in improving the sync primitives

* Some fixes

* Check that the mutex address matches before waking a waiting thread

* Add MutexOwner field to keep track of the thread owning the mutex, update wait list when priority changes, other tweaks

* Add new priority information to the log

* SvcSetThreadPriority should update just the WantedPriority
2018-04-21 16:07:16 -03:00
emmauss 267ea14cb5 fix typo in log (#93) 2018-04-20 12:40:33 -03:00
gdkchan 03002f6537 Add SvcSetThreadActivity, tweak SignalProcessWideKey, add fmul32i shader instructions and other small fixes 2018-04-19 16:18:30 -03:00
gdkchan 33ae6e544b [HLE/Kernel] Fix SetThreadPriority, allow nano seconds values > int.MaxValue, fix on WaitProcessWideKeyAtomic (althrough looks like it still doesn't work properly 2018-04-19 04:06:23 -03:00
gdkchan 62b2124c03 [HLE/Kernel] Dispose the thread wait even on exit 2018-04-19 01:01:46 -03:00