Commit Graph
100 Commits
Author SHA1 Message Date
gdkchan 3cf1b6cf77 Fix silly copy/paste error on float variant of the FMINNM instruction 2018-08-05 18:56:30 -03:00
gdkchanandGitHub 221270db90 More accurate impl of FMINNM/FMAXNM, add vector variants (#296)
* More accurate impl of FMINNM/FMAXNM, add vector variants

* Optimize for the 0 case when op1 != op2

* Address PR feedback
2018-08-05 02:54:21 -03:00
gdkchanandGitHub fa70629fab Fix for integer vertex attributes and iset bf flag (#323) 2018-08-03 13:54:34 -03:00
gdkchanandGitHub fdda67d476 Some fix to IRequest on NIFM, support sending objects to services (#294) 2018-07-29 01:36:29 -03:00
gdkchanandGitHub 60f2198a1e Support deswizzle of sparse tiled textures and some frame buffer fixes (#275)
* Attempt to support deswizzle of sparse tiled textures

* Use correct frame buffer and viewport sizes, started to clean up the copy engine

* Correct texture width alignment

* Use Scale/Translate registers to calculate viewport rect

* Allow texture copy between frame buffers
2018-07-19 02:30:21 -03:00
gdkchan 98223b0e7d Fix wrong assignment and allow null FilePaths on Executable 2018-07-17 17:28:41 -03:00
gdkchanandGitHub 5d698a7d8d Fix LDXP/LDAXP when Rt == Rn (#274) 2018-07-16 15:57:15 -03:00
gdkchan 50b706e2ba Fix RevMagic on audren 2018-07-15 00:42:59 -03:00
gdkchan a48ed788bf Remove outdated comment 2018-07-15 00:37:30 -03:00
gdkchan 8652dbb57c Small nit on GetAudioRendererWorkBufferSize 2018-07-15 00:34:12 -03:00
gdkchanandGitHub 21e590c3ab Add support for ioctl2, SetTimeout and KickoffPbWithAttr (#261)
* Add support for ioctl2, SetTimeout and KickoffPbWithAttr

* Call UnloadProcess on NvHostChannelIoctl aswell
2018-07-15 00:04:46 -03:00
gdkchanandGitHub 98c6ceede5 Audio Renderer improvements (#210)
* Partial voice implementation on audio renderer

* Implemented audren resampler (based on original impl)

* Fix BiquadFilter struct

* Pause audio playback on last stream buffer

* Split audren/audout files into separate folders, some minor cleanup

* Use AudioRendererParameter on GetWorkBufferSize aswell

* Bump audren version to REV4, name a few things, increase sample buffer size

* Remove useless new lines
2018-07-14 23:57:41 -03:00
gdkchanandGitHub fc12fca962 Allow using ulong max value as yield (#263) 2018-07-14 13:53:44 -03:00
gdkchanandGitHub 514218ab98 Add SMLSL, SQRSHRN and SRSHR (Vector) cpu instructions, nits (#225)
* Add SMLSL, SQRSHRN and SRSHR (Vector) cpu instructions

* Address PR feedback

* Address PR feedback

* Remove another useless temp var

* nit: Alignment

* Replace Context.CurrOp.GetBitsCount() with Op.GetBitsCount()

* Fix encodings and move flag bit test out of the loop
2018-07-14 13:13:02 -03:00
gdkchanandGitHub 2f37583ab3 Some small shader related fixes (#258)
* Some small shader related fixes

* Address PR feedback
2018-07-14 13:08:39 -03:00
gdkchanandGitHub 1968386808 Add locking methods to the ogl resource cache (#238)
* Add locking methods to the ogl resource cache

* Remove some unused arguments

* Add the ZF32 texture format
2018-07-09 23:01:59 -03:00
gdkchanandGitHub 791fe70810 Allow sample rate of 0 on OpenAudioOut, fix 5.1 sound output (#240) 2018-07-09 22:49:07 -03:00
gdkchanandGitHub 0a36bfbf92 Fix ZIP/UZP/TRN instructions when Rd == Rn || Rd == Rm (#239) 2018-07-09 22:48:28 -03:00
gdkchanandGitHub 095db47e13 Query multiple pages at once with GetWriteWatch (#222)
* Query multiple pages at once with GetWriteWatch

* Allow multiple buffer types to share the same page, aways use the physical address as cache key

* Remove a variable that is no longer needed
2018-07-08 16:55:15 -03:00
gdkchanandGitHub dc04b5465f Improvements to IAudioOutManager (#232)
* Improvements to IAudioOutManager

* Make implementation private
2018-07-08 12:42:10 -03:00
gdkchanandGitHub c99b2884e4 Remove broken adds/cmn with condition check optimization (#218) 2018-07-03 21:54:05 -03:00
gdkchan c206239d28 Fix formatting on ISettingsServer 2018-07-03 21:45:41 -03:00
gdkchanandGitHub 741773910d Add SMAXP, SMINP, UMAX, UMAXP, UMIN and UMINP cpu instructions (#200) 2018-07-03 03:31:48 -03:00
gdkchanandGitHub 4c7c21634e Add Sse2 fallback to Vector{Extract|Insert}Single methods on the CPU (#193) 2018-06-28 20:52:32 -03:00
gdkchanandGitHub bc26aa558a Add support for the FMLA (by element/scalar) instruction (#187)
* Add support for the FMLA (by element/scalar) instruction

* Fix encoding
2018-06-28 20:51:38 -03:00
gdkchanandGitHub 3e81421b2f Add support for vertex base on indexed draws, fix index buffer first (untested) (#197) 2018-06-28 20:48:18 -03:00
gdkchan 22f138628b Somewhat better ClearBuffers implementation 2018-06-28 00:11:49 -03:00
gdkchanandGitHub e6eeb6f09f Add support for Vertex Program A and other small shader improvements (#192)
* Add WIP support for Vertex Program A, add the FADD_I32 shader instruction, small fix on FFMA_I encoding, nits

* Add separate subroutines for program A/B, and copy attributes to a temp

* Move finalization code to main

* Add new line after flip uniform on the shader

* Handle possible case where VPB uses an output attribute written by VPA but not available on the vbo

* Address PR feedback
2018-06-27 23:55:08 -03:00
gdkchan 900a84ae0a Fix vertex buffer size on the gpu when the draw vertex count is less than the buffer size, added a few more registers (currently not implemented) 2018-06-27 01:32:28 -03:00
gdkchan b8be89ab2d Relax GetThreadContext3 by allowing it to get the context of a running thread 2018-06-26 01:26:21 -03:00
gdkchan 2f29894d9f Set PC value on SvcCall aswell 2018-06-26 01:14:18 -03:00
gdkchan 65105c2a3b Implement SvcGetThreadContext3 2018-06-26 01:10:15 -03:00
gdkchan 37a6e84fd4 Add REV16/32 (vector) instructions and fix REV64 2018-06-25 18:40:55 -03:00
gdkchan 8f4cd35ade Fix GetLastOpenedUser stub returning an invalid account id value 2018-06-25 17:12:59 -03:00
gdkchan 7c7ee8f8ca Aways write voice state as finished playing while proper audren support is not in place 2018-06-25 02:04:19 -03:00
gdkchanandGitHub e7559f128f Small OpenGL Renderer refactoring (#177)
* Call OpenGL functions directly, remove the pfifo thread, some refactoring

* Fix PerformanceStatistics calculating the wrong host fps, remove wait event on PFIFO as this wasn't exactly was causing the freezes (may replace with an exception later)

* Organized the Gpu folder a bit more, renamed a few things, address PR feedback

* Make PerformanceStatistics thread safe

* Remove unused constant

* Use unlimited update rate for better pref
2018-06-23 21:39:25 -03:00
gdkchan 69697957e6 Workaround for recent audren regression 2018-06-23 03:17:07 -03:00
gdkchanandGitHub c26ddd6259 Fix 3 graphics related issues (#180)
* Fix 3 graphics related bugs

* OGLShader shouldn't be public (yet)
2018-06-23 02:00:44 -03:00
gdkchanandGitHub 3e6afeb513 Fix some thread sync issues (#172)
* Fix some thread sync issues

* Remove some debug stuff

* Ensure that writes to the mutex address clears the exclusive monitor
2018-06-21 23:05:42 -03:00
gdkchan 46f18af6be Do not read or write macros to main memory, use a separate memory instead (as this apparently what the real thing does) 2018-06-18 01:32:11 -03:00
gdkchan b747b23607 Add the FADDP (scalar) instruction 2018-06-18 00:41:28 -03:00
gdkchanandGitHub 36827c2355 Partial GPU DMA support (#158) 2018-06-13 10:55:01 -03:00
gdkchan 9176180abb Minor shader fixes 2018-06-12 09:26:49 -03:00
gdkchan 76f3b1b3a4 Rename Ryujinx.Core to Ryujinx.HLE and add a separate project for a future LLE implementation 2018-06-10 21:46:42 -03:00
gdkchan a0ee977ce5 Use sample counter on HID controller layouts 2018-06-10 19:32:39 -03:00
gdkchan 49fd76db0f Fix a small size related issue on MapBufferEx and add the BC7U texture format 2018-06-10 01:00:43 -03:00
gdkchan adeb8793c2 Fix a thread sync bug as is the usual... 2018-06-09 22:41:07 -03:00
gdkchan aa75957ce2 Somewhat better implementation of thread yield 2018-06-09 18:19:14 -03:00
gdkchan 7f5a8effbb Move WriteBytes to AMemory, implement it with a Marshal copy like ReadBytes, fix regression on address range checking 2018-06-09 13:05:41 -03:00
gdkchan 91420a402c Use source texture size when doing reads for texure copy 2018-06-09 00:46:06 -03:00
gdkchan 7822348439 Small cleanup in AMemory and removed some unused usings 2018-06-08 23:54:50 -03:00
gdkchan 9136897d4a Do not inline the scalar vector load methods as a workaround to a .net JIT bug 2018-06-08 23:49:53 -03:00
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