Commit Graph
100 Commits
Author SHA1 Message Date
gdkchanandGitHub f93089a64f Implement geometry shader passthrough (#1961)
* Implement geometry shader passthrough

* Cache version change
2021-01-29 14:38:51 +11:00
gdkchanandGitHub 4b7c7dab9e Support multiple destination operands on shader IR and shuffle predicates (#1964)
* Support multiple destination operands on shader IR and shuffle predicates

* Cache version change
2021-01-28 10:59:47 +11:00
gdkchanandGitHub dcce407071 Lower precision of estimate instruction results to match Arm behavior (#1943)
* Lower precision of estimate instruction results to match Arm behavior

* PTC version update

* Nits
2021-01-28 10:23:00 +11:00
gdkchanandGitHub 98d0240ce6 Support shader F32 to Bool reinterpretation (#1969) 2021-01-27 09:19:30 +01:00
gdkchanandGitHub a8e9dd2f83 Fix regression on shader atomic SSBO operations (#1967)
* Fix regression on shader atomic SSBO operations

* Update comment
2021-01-27 11:26:23 +11:00
gdkchanandGitHub caf049ed15 Avoid some redundant GL calls (#1958) 2021-01-27 08:44:07 +11:00
gdkchanandGitHub d6bd0470fb Fix conditional rendering without queries (#1965) 2021-01-27 08:42:12 +11:00
gdkchanandGitHub 9551bfdeeb Fix compute shader code dumping (#1960) 2021-01-26 18:27:18 +01:00
gdkchanandGitHub e453ba69f4 Add support for shader atomic min/max (S32) (#1948) 2021-01-26 17:38:33 +11:00
gdkchanandGitHub f94acdb4ef Allow out of bounds storage buffer access by aligning their sizes (#1870)
* Allow out of bounds storage buffer access by aligning their sizes

* Use correct size

* Fix typo and comment on the reason for the change
2021-01-25 09:22:19 +11:00
gdkchanandGitHub f565b0e5a6 Match texture if the physical range is the same (#1934)
* Match texture if the physical range is the same

* XML docs and comments
2021-01-23 13:38:00 +01:00
gdkchanandGitHub 6a95a3b01a Fix alignment on CreateTransferMemoryStorage (#1937) 2021-01-19 21:48:27 -03:00
gdkchanandGitHub b8353f5639 Enable parallel ASTC decoding by default (#1930) 2021-01-19 14:19:52 +11:00
gdkchanandGitHub 03aab63e03 Fix out of range exception when a invalid base lod is used (#1931) 2021-01-19 14:04:38 +11:00
gdkchanandGitHub 734747ae58 Reduce temporary copy/fill buffer size (#1926) 2021-01-19 13:31:15 +11:00
gdkchanandGitHub c4f56c5704 Support for resources on non-contiguous GPU memory regions (#1905)
* Support for resources on non-contiguous GPU memory regions

* Implement MultiRange physical addresses, only used with a single range for now

* Actually use non-contiguous ranges

* GetPhysicalRegions fixes

* Documentation and remove Address property from TextureInfo

* Finish implementing GetWritableRegion

* Fix typo
2021-01-17 19:44:34 +01:00
gdkchanandGitHub 3bad321d2b Fix mipmap base level being ignored for sampled textures and images (#1911)
* Fix mipmap base level being ignored for sampled textures and images

* Fix layer size and max level for textures

* Missing XML doc + reorder comments
2021-01-15 19:14:00 +01:00
gdkchanandGitHub 5be6ec6364 Fix shader LOP3 predicate write condition (#1910)
* Fix LOP3 predicate write condition

* Bump shader cache version
2021-01-14 01:07:50 +01:00
gdkchanandGitHub 36c6e67df2 Implement shader CC mode for ISCADD, X mode for ISETP and fix STL/STS/STG with RZ (#1901)
* Implement shader CC mode for ISCADD, X mode for ISETP and fix STS/STG with RZ

* Fix STG too and bump shader cache version

* Fix wrong name

* Fix Carry being inverted on comparison
2021-01-13 08:52:13 +11:00
gdkchanandGitHub df820a72de Implement clear buffer (fast path) (#1902)
* Implement clear buffer (fast path)

* Remove blank line
2021-01-13 08:50:54 +11:00
gdkchanandGitHub 6ed19c1488 Fix compute reserved constant buffer updates (#1892) 2021-01-10 21:02:58 +01:00
gdkchanandGitHub 8e0a421264 Fix remap when handle is 0 (#1882)
* Nvservices cleanup and attempt to fix remap

* Unmap if remap handle is 0

* Remove mapped pool add from Remap
2021-01-10 10:11:31 +11:00
gdkchanandGitHub b9200dd734 Support conditional on BRK and SYNC shader instructions (#1878)
* Support conditional on BRK and SYNC shader instructions

* Add TODO comment and bump cache version
2021-01-08 22:55:55 -03:00
gdkchanandGitHub 532b8cad13 Update KAddressArbiter implementation to 11.x kernel (#1851)
* Update KAddressArbiter implementation to 11.x kernel

* InsertSortedByPriority is no longer needed
2021-01-01 14:59:26 -03:00
gdkchanandGitHub f5d64b4d68 Terminate application before services (#1812)
* Terminate application before services

* Use flags instead of title ID
2020-12-17 01:44:06 +01:00
61634dd415 Clear JIT cache on exit (#1518)
* Initial cache memory allocator implementation

* Get rid of CallFlag

* Perform cache cleanup on exit

* Basic cache invalidation

* Thats not how conditionals works in C# it seems

* Set PTC version to PR number

* Address PR feedback

* Update InstEmitFlowHelper.cs

* Flag clear on address is no longer needed

* Do not include exit block in function size calculation

* Dispose jump table

* For future use

* InternalVersion = 1519 (force retest).

Co-authored-by: LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>
2020-12-16 17:07:42 -03:00
gdkchanandGitHub 47ba81c661 Fix pre-allocator shift instruction copy on a specific case (#1752)
* Fix pre-allocator shift instruction copy on a specific case

* Fix to make shift use int rather than long for constants
2020-12-14 17:56:07 -03:00
gdkchanandGitHub c8bb3cc50e Fix register read after write on STREX implementation (#1801)
* Fix register read after write on STREX implementation

* PTC version update
2020-12-13 12:19:38 -03:00
gdkchanandGitHub 19d18662ea Correct type of executable sizes (#1802) 2020-12-13 08:30:27 +01:00
gdkchanandGitHub ef157bbe26 Remove inexistent buffer from GetNintendoAccountUserResourceCacheForApplication (#1809) 2020-12-12 22:10:12 +11:00
gdkchanandGitHub 74aa7b20be Rewrite size for fixed size buffers (#1808) 2020-12-12 14:06:20 +11:00
gdkchanandGitHub 48278905d1 Rewrite scheduler context switch code (#1786)
* Rewrite scheduler context switch code

* Fix race in UnmapIpcRestorePermission

* Fix thread exit issue that could leave the scheduler in a invalid state

* Change context switch method to not wait on guest thread, remove spin wait, use SignalAndWait to pass control

* Remove multi-core setting (it is always on now)

* Re-enable assert

* Remove multicore from default config and schema

* Fix race in KTimeManager
2020-12-09 19:20:05 -03:00
gdkchanandGitHub 1b053d2222 Close audio WorkBuffer transfer memory handle (#1770) 2020-12-02 21:58:20 +01:00
gdkchanandGitHub f7617cae12 Create a single guest process per IPC message processor (#1769) 2020-12-02 13:14:44 +01:00
cf6cd71488 IPC refactor part 2: Use ReplyAndReceive on HLE services and remove special handling from kernel (#1458)
* IPC refactor part 2: Use ReplyAndReceive on HLE services and remove special handling from kernel

* Fix for applet transfer memory + some nits

* Keep handles if possible to avoid server handle table exhaustion

* Fix IPC ZeroFill bug

* am: Correctly implement CreateManagedDisplayLayer and implement CreateManagedDisplaySeparableLayer

CreateManagedDisplaySeparableLayer is requires since 10.x+ when appletResourceUserId != 0

* Make it exit properly

* Make ServiceNotImplementedException show the full message again

* Allow yielding execution to avoid starving other threads

* Only wait if active

* Merge IVirtualMemoryManager and IAddressSpaceManager

* Fix Ro loading data from the wrong process

Co-authored-by: Thog <me@thog.eu>
2020-12-02 00:23:43 +01:00
gdkchanandGitHub 7f536b5a15 Do not perform layout conversion on buffer texture flushes (#1729) 2020-11-18 22:17:40 +01:00
gdkchanandGitHub eafee34fee Improvements with new .NET 5 functions or bugfixes (#1714)
* Improvements with new .NET 5 functions or bugfixes

* This no longer needs to be unsafe
2020-11-18 19:28:40 +01:00
gdkchanandGitHub 9435d62206 Simplify depth test state updates (#1695) 2020-11-17 23:20:17 +01:00
gdkchanandGitHub 5189a807c4 Fix buffer to texture copy with remap enabled (#1721) 2020-11-17 19:06:02 -03:00
gdkchanandGitHub 787e20937f Propagate zeta format properly (#1716) 2020-11-16 09:37:16 +01:00
gdkchanandGitHub 3c60d4b0ea Do not report unmapped pages as dirty (#1672)
* Do not report unmapped pages as dirty

* Make tests pass again

* PR feedback
2020-11-10 22:07:52 -03:00
gdkchanandGitHub c3d62bd078 Implement ATOM shader instruction (#1687)
* Implement ATOM shader instruction

* Fix reduction type decoding
2020-11-10 01:06:46 +01:00
gdkchanandGitHub 934a78005e Simplify logic for bindless texture handling (#1667)
* Simplify logic for bindless texture handling

* Nits
2020-11-09 19:35:04 -03:00
gdkchanandGitHub 8d168574eb Use explicit buffer and texture bindings on shaders (#1666)
* Use explicit buffer and texture bindings on shaders

* More XML docs and other nits
2020-11-08 12:10:00 +01:00
gdkchanandGitHub ce9105a130 Support single precision contants for double precision operations (#1673) 2020-11-06 18:54:13 +01:00
gdkchanandGitHub 24dbfc0fe6 Correct BPP of buffer to texture copies (#1670) 2020-11-06 18:37:05 +01:00
gdkchanandGitHub a89b81a812 Separate zeta from color formats (#1647) 2020-11-05 23:50:34 +01:00
gdkchanandGitHub 11a7c99764 Support 3D BC4 and BC5 compressed textures (#1655)
* Support 3D BC4 and BC5 compressed textures

* PR feedback

* Fix some typos
2020-11-01 15:32:53 -03:00
gdkchanandGitHub 6222f173f0 Fix compressed to non-compressed texture copy size (#1649) 2020-11-01 15:26:24 -03:00
gdkchanandGitHub 876fa656f6 Remove unused texture and sampler pool invalidation code (#1648) 2020-11-01 15:17:29 -03:00
gdkchanandGitHub 423da5cc91 Scale texture resolution before sending to backend (#1646)
* Work

* Propagate scale factor to copy temp. Not really needed, just here for consistency

* PR feedback
2020-10-29 22:57:34 +01:00
gdkchanandGitHub 0031edae27 Avoid sampler conflicts on bindless samplers with the same name (#1642) 2020-10-28 21:20:43 +01:00
gdkchanandGitHub c9841dab38 Fix vertex buffer handle null check (#1638) 2020-10-26 01:40:50 +01:00
gdkchanandGitHub 812e32f775 Fix transform feedback errors caused by host pause/resume and multiple uses (#1634)
* Fix transform feedback errors caused by host pause/resume

* Fix TFB being used as something else issue with copies

* This is supposed to be StreamCopy
2020-10-25 17:23:42 -03:00
gdkchanandGitHub cf0f0fc4e7 Improve the speed of redundant ASTC texture data updates (#1636) 2020-10-25 17:09:45 -03:00
gdkchanandGitHub 49f970d5bd Implement CAL and RET shader instructions (#1618)
* Add support for CAL and RET shader instructions

* Remove unused stuff

* Fix a bug that could cause the wrong values to be passed to a function

* Avoid repopulating function id dictionary every time

* PR feedback

* Fix vertex shader A/B merge
2020-10-25 17:00:44 -03:00
gdkchanandGitHub 973a615d40 Fix shader image load/store array index register (#1637)
* Fix shader image load/store array index register

* Y should come before the array index
2020-10-25 14:51:26 -03:00
gdkchanandGitHub 2f16491712 Get rid of Reflection.Emit dependency on CPU and Shader projects (#1626)
* Get rid of Reflection.Emit dependency on CPU and Shader projects

* Remove useless private sets

* Missed those due to the alignment
2020-10-21 09:13:44 -03:00
gdkchanandGitHub efa77a2415 Add missing null check on image binding (#1632) 2020-10-21 14:06:13 +02:00
gdkchanandGitHub 2dcc6333f8 Fix image binding format (#1625)
* Fix image binding format

* XML doc
2020-10-20 19:03:20 -03:00
gdkchanandGitHub 5264d55b39 Fix gl_in being used with built-in variables that are not per-vertex (#1624) 2020-10-17 10:16:40 +02:00
gdkchanandGitHub f02791b20c Fix LOP3 (cbuf) shader instruction encoding (#1616) 2020-10-13 19:33:04 -03:00
gdkchanandGitHub 329ba5b39b Fix incorrect GPU GL blend func values (#1612) 2020-10-13 14:45:41 +11:00
gdkchanandGitHub d36c4bfba5 Fix output component register on pixel shaders (#1613)
* Fix output component register on pixel shaders

* Clean up usings

* Do not advance if no component is enabled for the target, this keeps the previous behavior
2020-10-13 14:44:55 +11:00
gdkchanandGitHub 6a51b628f9 Fix error when dual source blend is used (#1610)
* Fix error when dual source blend is used

* Ensure framebuffer
2020-10-12 21:50:41 -03:00
gdkchanandGitHub e4777717cd Implement LEA.HI shader instruction (#1609) 2020-10-12 21:46:04 -03:00
gdkchanandGitHub b066cfc1a3 Add support for shader constant buffer slot indexing (#1608)
* Add support for shader constant buffer slot indexing

* Fix typo
2020-10-12 21:40:50 -03:00
gdkchanandGitHub 14fd9aa640 Fix H264 output frame size when decoding videos of different sizes (#1606) 2020-10-11 11:09:38 +02:00
gdkchanandGitHub 0954e76a26 Improve BRX target detection heuristics (#1591) 2020-10-03 15:43:33 +10:00
gdkchanandGitHub 86412ed30a Supper 2D array ASTC compressed texture formats decoding (#1593) 2020-10-02 11:22:23 +10:00
gdkchanandGitHub f2b12c9749 Remove old, unused CPU optimization (#1586) 2020-09-30 16:16:34 -03:00
gdkchanandGitHub 1560f236da Convert 1D texture targets to 2D (#1584)
* Convert 1D texture targets to 2D

* Fix typo

* Simplify some code

* Should mask that too

* Consistency
2020-09-29 22:28:50 +02:00
gdkchanandGitHub bd28ce90e6 Implement small indexed draws and other fixes to make guest Vulkan work (#1558) 2020-09-24 09:48:34 +10:00
gdkchanandGitHub 6c9565693f IPC refactor part 1: Use explicit separate threads to process requests (#1447)
* Changes to allow explicit management of service threads

* Remove now unused code

* Remove ThreadCounter, its no longer needed

* Allow and use separate server per service, also fix exit issues

* New policy change: PTC version now uses PR number
2020-09-22 14:50:40 +10:00
gdkchanandGitHub 90ab28d1c6 Align register index between output targets on pixel shaders (#1559) 2020-09-21 13:45:04 +10:00
gdkchanandGitHub 1eea35554c Better viewport flipping and depth mode detection method (#1556)
* Use a better viewport flipping approach

* New approach to detect depth mode

* nit: Sort method on the OpenGL backend

* Adjust spacing on comment

* Unswap near and far parameters based on ScaleZ
2020-09-19 19:46:49 -03:00
gdkchanandGitHub 6cc187da59 SIMD&FP load/store with scale > 4 should be undefined (#1522)
* SIMD&FP load/store with scale > 4 should be undefined

* Catch more invalid encodings for FP&SIMD LDR/STR (reg variant)

* Set PTC version to PR number
2020-09-01 17:02:23 -03:00
gdkchanandGitHub 3d294a9a6c Fix PSL and MRG flags on XMAD cbuf-reg shader instruction (#1520) 2020-09-01 15:07:20 -03:00
gdkchanandGitHub bdfbcf4017 Fix regression on texture compatibility match checks (#1521) 2020-09-01 16:58:40 +10:00
gdkchanandGitHub 09341dc11d Fix off by one error in pages count calculation on GPU pool (#1511) 2020-08-29 16:42:34 -03:00
gdkchanandGitHub 01ff648bdf Fix asserts on VP9 decoder in debug mode and build warnings (#1480) 2020-08-20 00:07:04 -03:00
gdkchanandGitHub 157ad3f54f Silence several build warnings (#1428)
* Silence several build warnings

* Remove fixed buffers from NVDEC struct

* Remove unused field and usings

* Fix wrong name

* Silence more warning on H264 PictureInfo
2020-08-06 23:40:41 +02:00
gdkchanandGitHub 60db4c3530 Implement a Macro JIT (#1445)
* Implement a Macro JIT

* Nit: space
2020-08-03 03:36:57 +02:00
gdkchanandGitHub 9878fc2d3c Implement inline memory load/store exclusive and ordered (#1413)
* Implement inline memory load/store exclusive

* Fix missing REX prefix on 8-bits CMPXCHG

* Increment PTC version due to bugfix

* Remove redundant memory checks

* Address PR feedback

* Increment PPTC version
2020-07-30 11:29:28 -03:00
gdkchanandGitHub 57bb0abda3 Print guest stack trace on invalid memory access (#1407)
* Print guest stack trace on invalid memory access

* Improve XML docs
2020-07-30 23:16:41 +10:00
gdkchanandGitHub 636542d817 Refactor shader translator ShaderConfig and reduce the number of out args (#1438) 2020-07-30 15:53:23 +10:00
gdkchanandGitHub 991784868f Fix shader regression on Intel iGPUs by reverting layout changes (#1425) 2020-07-29 08:01:11 +10:00
gdkchanandGitHub 43c13057da Implement alpha test using legacy functions (#1426) 2020-07-28 18:30:08 -03:00
gdkchanandGitHub 938c06c652 Implement VIC BGRA output surface format (#1430) 2020-07-28 18:25:58 -03:00
gdkchanandGitHub 51fbc1fde4 Use polygon offset clamp if supported (#1429) 2020-07-26 18:11:28 -03:00
gdkchanandGitHub 8dbcae1ff8 Implement BGRA texture support (#1418)
* Implement BGRA texture support

* Missing AppendLine

* Remove empty lines

* Address PR feedback
2020-07-26 00:03:40 -03:00
gdkchanandGitHub 2678bf0010 PPTC version increment (#1427) 2020-07-25 20:01:57 +02:00
gdkchanandGitHub 111534a74e Remove GPU MemoryAccessor (#1423)
* Remove GPU MemoryAccessor

* Update outdated XML doc

* Update more outdated stuff
2020-07-25 16:39:45 +10:00
gdkchanandGitHub 80d4199fb3 Refactor NativeContext (#1410)
* Refactor NativeContext

* Fix bugs

* Use correct counts

* Check index using register count constants
2020-07-24 16:13:14 -03:00
gdkchanandGitHub 5a7df48975 New GPFifo and fast guest constant buffer updates (#1400)
* Add new structures from official docs, start migrating GPFifo

* Finish migration to new GPFifo processor

* Implement fast constant buffer data upload

* Migrate to new GPFifo class

* XML docs
2020-07-23 23:53:25 -03:00
gdkchanandGitHub 1c84b683c2 Fix IDeliveryCacheProgressService GetEvent (#1409) 2020-07-21 10:54:50 +10:00
gdkchanandGitHub e7f2a5ecb7 Fix session service disposal and improve transfer memory implementation (#1397)
* Fix session service disposal and improve transfer memory implementation

* Remove useless assignment
2020-07-19 15:24:18 -03:00
gdkchanandGitHub 9d65de74fc Do not print guest stack trace for svcBreak debug calls (#1398) 2020-07-18 12:54:41 +10:00
gdkchanandGitHub 20774dab14 Improve kernel WaitSynchronization syscall implementation (#1362) 2020-07-17 14:22:13 +10:00
gdkchanandGitHub 9f6b24edfd Improve kernel IPC related syscalls (#1379)
* Implement session count decrement when the handle is closed

* Remove unused field

* Implement SendSyncRequestWithUserBuffer, SendAsyncRequestWithUserBuffer and ReplyAndReceiveWithUserBuffer syscalls

* Nits

* Fix swapped copy dst/src

* Add missing pointer buffer descriptor write on reply

* Fix IPC unaligned buffer copy and restoring client attributes on reply

* Oops

* Fix SetIpcMappingPermission

* Fix unaligned copy bugs

* Free memory used for temporary IPC buffers
2020-07-17 14:19:07 +10:00