Commit Graph
100 Commits
Author SHA1 Message Date
gdkchanandGitHub 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
gdkchan df33dcc489 Force inline some of the vector read/write methods 2018-06-04 16:11:11 -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
gdkchan f03a43fa38 Fix copy-paste mistake, also related to astc... 2018-06-02 13:39:52 -03:00
gdkchan 4731c7545d Fix mistake on astc conversion, make some static methods that shouldn't be public private, remove old commmented out code 2018-06-02 11:44:52 -03:00
gdkchan 7a6ce48184 Re add some texture formats that I somehow removed by accident on OGLEnumConverter 2018-06-02 00:53:50 -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
gdkchan 30829fce52 Fix wrong type on CMTST instruction 2018-05-23 12:57:28 -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
gdkchan 7ac5f40532 Add scalar variants of FCVTZS/FCVTZU, fix a issue on Ryushader 2018-05-18 14:44:49 -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 fee4b0eb8a Update min sdk version on readme (for real this time) 2018-05-11 20:18:59 -03:00
gdkchan 5ed1471d96 Update min sdk version on readme 2018-05-11 20:17:43 -03:00
gdkchanandGitHub 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
gdkchan ac91607ac3 Fix regression caused by wrong endian on GetAudioRendererWorkBufferSize version check 2018-05-07 16:03:30 -03:00
gdkchanandGitHub 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
gdkchan 5f0dd965bf Ignore ZR target texture color registers on shader 2018-04-30 14:32:54 -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
gdkchanandGitHub e4f59c8a52 Update README.md 2018-04-24 21:06:49 -03:00
gdkchan 2a985de88c [HLE/Audio] Use correct audio device names 2018-04-24 17:14:26 -03:00
gdkchanandGitHub a8ba340dde Improved logging (#103) 2018-04-24 15:57:39 -03: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
gdkchanandGitHub 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
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
gdkchan 6e69cd9284 Fix bad merge, and a few other fixes 2018-04-19 00:19:22 -03:00
gdkchan ac80e7d3f9 [HLE/Kernel] Yield when cond var is signaled 2018-04-19 00:00:29 -03:00
gdkchan b9af34f3dd [HLE/Kernel] Somewhat improved sync primitives 2018-04-18 23:52:36 -03:00
gdkchan 494e6dfa1e [GPU] Set frame buffer texture size to window size 2018-04-14 01:31:27 -03:00
gdkchan 7dd14a4f3a [GPU] Send correct window size to the vertex shader 2018-04-14 01:14:42 -03:00
gdkchan 42ebfdff7f [GPU] Fix frame buffer being upside down in some cases 2018-04-14 00:39:24 -03:00
gdkchan 47100ec8c1 [GPU] Avoid drawing the frame buffer with alpha blend enabled, use correct blend enable register, clear the buffer before drawing 2018-04-13 22:42:55 -03:00
gdkchan 435f9ffad8 [HLE] Fix hid issues on some games 2018-04-13 17:39:45 -03:00
gdkchan 032c442505 [GPU] Remove 1f in RCP instruction emitter on glsl decompiler 2018-04-13 16:01:29 -03:00
gdkchan 8ab76a7bd4 [GPU] Do not use the f suffix on float contants on the shader glsl code 2018-04-13 15:53:16 -03:00
gdkchan 237eaeb920 Bump glsl version to support layout qualifier 2018-04-13 15:36:12 -03:00
gdkchanandGitHub c8c86a3854 Fix for current framebuffer issues (#78)
[GPU] Fix some of the current framebuffer issues
2018-04-13 15:12:58 -03:00
gdkchan 9227b0ea59 [CPU] Speed up translation a little bit 2018-04-11 14:44:03 -03:00
gdkchan 46548bbc41 [HLE/Service] Fix ToCalendarTimeWithMyRule (for real this time) 2018-04-10 21:18:20 -03:00
gdkchan 29a4fb6a57 [HLE/Service] Fix ToCalendarTimeWithMyRule 2018-04-10 21:16:27 -03:00
gdkchan cb29b4303c [CPU] Fix CNT instruction 2018-04-10 20:58:32 -03:00
gdkchan 7b2f471d4f [GPU] Add support for the BC4/5 texture formats 2018-04-10 18:54:50 -03:00
gdkchan f57fd95fd9 Fix regression -- enable raw frame buffer rendering 2018-04-10 16:56:03 -03:00
gdkchan feb2680a6c [GPU] Add more shader instructions, add support for rgb565 textures 2018-04-10 16:50:32 -03:00
gdkchan ecf02f525f Remove line numbers from log 2018-04-08 17:38:27 -03:00
gdkchan 36dfd20c87 Use correct pitch value when decoding linear swizzle textures 2018-04-08 17:09:41 -03:00
gdkchan b9aa3966c0 Merge shader branch, adding support for GLSL decompilation, a macro
interpreter, and a rewrite of the GPU code.
2018-04-08 16:41:38 -03:00
gdkchan 980691f36b [CPU] Fix CBZ/CBNZ with 32 bits operands 2018-04-06 17:22:26 -03:00
gdkchan 702daf2ff4 [CPU] Fail early when the index/size of the vector is invalid 2018-04-06 15:39:39 -03:00
gdkchan b27944c0b5 Bump the maximum number of threads 2018-04-06 10:53:18 -03:00
gdkchan df3cbadceb Fix FRSQRTS and FCM* (scalar) instructions 2018-04-06 10:20:17 -03:00
gdkchan a7ecf6dd2d Show service short name for unimplemented commands 2018-04-06 02:38:59 -03:00
gdkchan 081ede2a9a Support the .romfs extension aswell 2018-04-06 02:02:13 -03:00
gdkchan 36d9130592 Add FMLS (vector) instruction 2018-04-06 01:41:54 -03:00
gdkchan 2fd718c163 Fix typo 2018-04-06 01:07:51 -03:00
gdkchan dcf0f0be38 Fix possible regression on bsd 2018-04-06 01:06:34 -03:00
gdkchan 69e32e5bbc Rename services with the official interface names 2018-04-06 01:01:52 -03:00
gdkchan f15b1c76a1 Add FRSQRTS and FCM* instructions 2018-04-05 23:28:12 -03:00
gdkchan 4c19c908e5 Color* should be an array in NvGpuIoctlZbcSetTable 2018-04-05 10:23:52 -03:00
gdkchan 45c078d782 Add Faddp (vector) instruction 2018-04-04 22:13:10 -03:00
gdkchan 9754836c1b Fix GetAvailableLanguageCodes, stub ListAddOnContent and NvGpuAsIoctlRemap (0x4114) 2018-04-04 21:01:36 -03:00
gdkchan 2d33756878 Stub ActivateKeyboard on Hid 2018-04-04 19:44:02 -03:00
gdkchan c8b6274456 Stub ActivateMouse on Hid 2018-04-04 19:39:47 -03:00
gdkchan a3d6baab91 Remove useless spacing 2018-04-04 19:29:34 -03:00
gdkchan e16ca561cb HashSet is not thread safe, hopefully this fixes the CPU issue where it throws a exception on Add 2018-04-04 18:17:37 -03:00
gdkchan a20d6b34ab Add PRFM (unscaled) instruction 2018-04-04 18:10:20 -03:00
gdkchan 7fe12ad169 Add FNEG (vector) instruction 2018-04-04 16:36:07 -03:00
gdkchan e0c3d9c8df Fix SvcGetThreadId 2018-04-04 16:07:44 -03:00
gdkchan 0ac4681fa0 Fix 32-bits extended register instructions with 64-bits extensions 2018-03-30 23:32:06 -03:00
gdkchan 53e2d34905 Enable all ld/st (single structure) instructions 2018-03-30 18:06:02 -03:00
gdkchan 916540ff41 Fix EXT/Widening instruction carrying garbage values on some cases, fix ABD (it shouldn't accumulate, this is another variation of the instruction) 2018-03-30 17:37:31 -03:00
gdkchan 76ac31add6 Add BIT instruction 2018-03-30 16:46:00 -03:00
gdkchan 19b8344568 Add UABD instruction 2018-03-30 16:30:23 -03:00
gdkchan ba43af5765 Add UABDL instruction 2018-03-30 16:16:16 -03:00
gdkchan f42f39fd90 Add UADDL instruction 2018-03-30 15:55:28 -03:00
gdkchan 9b6fa1f89e Add UHADD instruction 2018-03-30 12:37:07 -03:00
gdkchan b2549d83bf Add FNMADD instruction 2018-03-24 00:28:23 -03:00
gdkchan d4a3e8267b Allow enabling/disabling memory checks on config file 2018-03-20 18:42:13 -03:00
gdkchan e922c3627a Rename IpcServices -> Services 2018-03-20 17:00:00 -03:00
gdkchan 1bd99e5597 Support different framebuffer offsets (fixes #59) 2018-03-20 12:18:25 -03:00