Commit Graph
100 Commits
Author SHA1 Message Date
gdkchanandGitHub 0b52ee6627 Optimize BIC, BSL, BIT, BIF, XTN, ZIP, DUP (Gp), FMADD (Scalar) and FCVT (Scalar) using SSE intrinsics (#405)
* Optimize BIC, BSL, BIT, BIF, XTN, ZIP, DUP (Gp), FMADD (Scalar) and FCVT (Scalar) using SSE intrinsics, some CQ improvements

* Remove useless space

* Address PR feedback

* Revert EmitVectorZero32_128 changes
2018-09-26 23:30:21 -03:00
gdkchanandThomas Guillemard 7de7b559ad Improve kernel events implementation (#430)
* Improve kernel events implementation

* Some cleanup

* Address PR feedback
2018-09-23 20:11:46 +02:00
gdkchanandGitHub 54ed9096bd Add FMAXP and FMINP (Vector) instructions on the CPU (#412)
* Add FMAXP and FMINP (Vector) instructions on the CPU

* Address PR feedback
2018-09-22 17:26:18 -03:00
gdkchanandGitHub 6d65e53664 Remove cold methods from the CPU cache (#224)
* Remove unused tracing functionality from the CPU

* GetNsoExecutable -> GetExecutable

* Unsigned comparison

* Re-add cpu tracing

* Config change

* Remove cold methods from the translation cache on the cpu

* Replace lock with try lock, pass new ATranslatorCache instead of ATranslator

* Rebase fixups
2018-09-19 17:07:56 -03:00
gdkchanandGitHub 99b2692425 Fix performance regression caused by the new scheduler changes (#422)
* Call interrupt less often, remove some leftovers from the old scheduler code

* Remove unneeded attribute
2018-09-19 12:16:20 -03:00
gdkchanandGitHub b8133c1997 Thread scheduler rewrite (#393)
* Started to rewrite the thread scheduler

* Add a single core-like scheduling mode, enabled by default

* Clear exclusive monitor on context switch

* Add SetThreadActivity, misc fixes

* Implement WaitForAddress and SignalToAddress svcs, misc fixes

* Misc fixes (on SetActivity and Arbiter), other tweaks

* Rebased

* Add missing null check

* Rename multicore key on config, fix UpdatePriorityInheritance

* Make scheduling data MLQs private

* nit: Ordering
2018-09-18 20:36:43 -03:00
gdkchanandGitHub 33e2810ef3 Fix d32s8 format on OGLEnumConverter (#420) 2018-09-18 13:27:12 -03:00
gdkchanandGitHub d6fba62f8a Misc fixes on the arena allocator (#364) 2018-09-18 12:28:28 -03:00
gdkchanandGitHub d4187aaa9d Allow "reinterpretation" of framebuffer/zeta formats (#418)
* (Re)Implement format reinterpretation, other changes

* Implement writeback to guest memory, some refactoring

* More refactoring, implement reinterpretation the old way again

* Clean up

* Some fixes on M2MF (old Dma engine), added partial support for P2MF, fix conditional ssy, add Z24S8 zeta format, other fixes

* nit: Formatting

* Address PR feedback
2018-09-18 01:30:35 -03:00
gdkchanandGitHub bec95cacc1 Ensure that buffers are available after a signal when GetReleasedBuffers is called (#369) 2018-09-18 00:12:47 -03:00
gdkchanandGitHub b549daed03 Fix exception throw message for unimpl texture formats (#398) 2018-09-01 18:51:51 -03:00
gdkchanandGitHub 35778afef9 Improve handling on QueryGet on the gpu (#397) 2018-09-01 11:54:56 -03:00
gdkchanandGitHub 9977acad0f Fix BinarySearchLt to return less than rather than less than or equal value (#372) 2018-08-23 01:54:59 -03:00
gdkchanandGitHub 056c2840b1 Fix MapPhysicalMemory when block position is less than map position (#359)
* Fix MapPhysicalMemory when block position is less than map position

* Only try to free pages that are actually mapped

* Only unmap after freeing the memory
2018-08-17 10:39:35 -03:00
gdkchanandGitHub 521751795a Code style fixes and nits on the HLE project (#355)
* Some style fixes and nits on ITimeZoneService

* Remove some unneeded usings

* Remove the Ryujinx.HLE.OsHle.Handles namespace

* Remove hbmenu automatic load on process exit

* Rename Ns to Device, rename Os to System, rename SystemState to State

* Move Exceptions and Utilities out of OsHle

* Rename OsHle to HOS

* Rename OsHle folder to HOS

* IManagerDisplayService and ISystemDisplayService style fixes

* BsdError shouldn't be public

* Add a empty new line before using static

* Remove unused file

* Some style fixes on NPDM

* Exit gracefully when the application is closed

* Code style fixes on IGeneralService

* Add 0x prefix on values printed as hex

* Small improvements on finalization code

* Move ProcessId and ThreadId out of AThreadState

* Rename VFs to FileSystem

* FsAccessHeader shouldn't be public. Also fix file names casing

* More case changes on NPDM

* Remove unused files

* Move using to the correct place on NPDM

* Use properties on KernelAccessControlMmio

* Address PR feedback
2018-08-16 20:47:36 -03:00
gdkchanandGitHub 182d716867 Remove artificial call count limit for EndGl (#357) 2018-08-16 20:45:00 -03:00
gdkchanandGitHub c393cdf8e3 More flexible memory manager (#307)
* Keep track mapped buffers with fixed offsets

* Started rewriting the memory manager

* Initial support for MapPhysicalMemory and UnmapPhysicalMemory, other tweaks

* MapPhysicalMemory/UnmapPhysicalMemory support, other tweaks

* Rebased

* Optimize the map/unmap physical memory svcs

* Integrate shared font support

* Fix address space reserve alignment

* Some fixes related to gpu memory mapping

* Some cleanup

* Only try uploading const buffers that are really used

* Check if memory region is contiguous

* Rebased

* Add missing count increment on IsRegionModified

* Check for reads/writes outside of the address space, optimize translation with a tail call
2018-08-15 15:59:51 -03:00
gdkchanandGitHub 55374ebba0 Zero out bits 63:32 of scalar float operations with SSE intrinsics (#273) 2018-08-14 23:54:12 -03:00
gdkchanandGitHub 9ac5583513 Better support for user accounts (#349)
* Better support for user accounts

* Nits

* Check for invalid ids
2018-08-14 19:02:42 -03:00
gdkchanandGitHub 4f499b6845 Fix FMUL and TEXS shader instructions (#347) 2018-08-13 19:46:36 -03:00
gdkchanandGitHub 09593ae6d8 Add partial support to the TEX.B shader instruction (#342)
* Add partial support to the TEX.B shader instruction, fix for mixed indexed and non-indexed drawing

* Better exception
2018-08-13 18:22:09 -03:00
gdkchanandGitHub 267af1f0f7 Fix load/store exclusive/atomic pairwise instructions (#337) 2018-08-10 01:14:27 -03:00
gdkchanandGitHub 0cec4cbee5 Fix race condition on IdDictionary (#333) 2018-08-07 23:32:24 -03:00
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