Commit Graph
100 Commits
Author SHA1 Message Date
gdkchan fe5bb439f1 Do temp constant copy for CompareAndSwap, other improvements to PreAllocator (#1126)
* Do temp constant copy for CompareAndSwap, other improvements to PreAllocator

* Nit
2020-04-25 23:00:54 +10:00
gdkchan ff86494d68 Remove leftover of debugging code for shader texture format (#1141) 2020-04-22 16:02:07 +02:00
gdkchan 6bfe4715f0 Initial conditional rendering support (#1012)
* Initial conditional rendering support

* Properly reset state

* Support conditional modes and skeleton a counter cache for future host conditional rendering

* Address PR feedback
2020-04-22 16:00:11 +10:00
gdkchan 03711dd7b5 Implement SULD shader instruction (#1117)
* Implement SULD shader instruction

* Some nits
2020-04-22 09:35:28 +10:00
gdkchan 91fa1debd4 Report more realistic GPU timestamps when FastGpuTime is enabled (#1139) 2020-04-20 22:41:07 +10:00
gdkchan 92cc37e365 Fix negation of HADD2 constant buffer source (#1116) 2020-04-15 09:01:26 +10:00
gdkchan e93ca84b14 Better IPA shader instruction implementation (#1082)
* Fix varying interpolation on fragment shader

* Some nits

* Alignment
2020-04-03 11:20:47 +11:00
gdkchan 5b5239ab5b Remove output interpolation qualifier (#1070) 2020-04-02 12:24:55 +11:00
gdkchan d599fba711 Implement FCMP shader instruction (#1067) 2020-03-30 12:04:00 +02:00
gdkchan 9948a7be53 Support constant attributes (with a value of zero) (#1066)
* Support constant attributes (with a value of zero)

* Remove extra line
2020-03-30 13:11:24 +11:00
gdkchan b18ef8e3a0 Workaround for AMD and Intel view format bug (#1050)
* Workaround for Intel view format bug

* Dispose of the intermmediate texture aswell

* Apply workaround on AMD aswell
2020-03-29 23:48:39 +11:00
gdkchan ab4867505e Implement GPU scissors (#1058)
* Implement GPU scissors

* Remove unused using

* Add missing changes for Clear
2020-03-29 14:02:58 +11:00
gdkchan 1586450a38 Implement VMNMX shader instruction (#1032)
* Implement VMNMX shader instruction

* No need for the gap on the enum

* Fix typo
2020-03-25 15:49:10 +01:00
gdkchan 6edc929894 Implement ICMP shader instruction (#1010) 2020-03-23 17:32:30 +01:00
gdkchan 9a208c4fb5 Keep sRGB enabled for texture blits (#1009) 2020-03-23 09:34:26 +11:00
gdkchan 49d7b1c7d8 Implement textureQueryLevels (#1007) 2020-03-23 08:31:31 +11:00
gdkchan 8e64984158 Support partial invalidation on texture access (#1000)
* Support partial invalidation on texture access

* Fix typo

* PR feedback

* Fix modified size clamping
2020-03-20 14:17:11 +11:00
gdkchan 8bb64ac69c Improve shader sampler type selection (#989) 2020-03-15 11:24:45 +11:00
gdkchan ff2bac9c90 Implement MME shadow RAM (#987) 2020-03-13 12:30:26 +11:00
gdkchan c26f3774bd Implement VMULL, VMLSL, VRSHR, VQRSHRN, VQRSHRUN AArch32 instructions + other fixes (#977)
* Implement VMULL, VMLSL, VQRSHRN, VQRSHRUN AArch32 instructions plus other fixes

* Re-align opcode table

* Re-enable undefined, use subclasses to fix checks

* Add test and fix VRSHR instruction

* PR feedback
2020-03-11 11:49:27 +11:00
gdkchan 89ccec197e Implement VMOVL and VORR.I32 AArch32 SIMD instructions (#960)
* Implement VMOVL and VORR.I32 AArch32 SIMD instructions

* Rename <dt> to <size> on test description

* Rename Widen to Long and improve VMOVL implementation a bit
2020-03-10 16:17:30 +11:00
gdkchan 61d79facd1 Optimize x64 loads and stores using complex addressing modes (#972)
* Optimize x64 loads and stores using complex addressing modes

* This was meant to be used for testing
2020-03-10 09:29:34 +11:00
gdkchan ab3b6ea6d4 A64 SIMD LDP and STP with size = 0b11 is undefined (#971) 2020-03-07 13:39:52 +11:00
gdkchan d9ed827696 Don't decode blocks starting outside mapped memory & undefined instead of throw on invalid sysreg coprocessor (#964)
* Don't decode blocks in invalid memory locations.

* Emit undefined instruction on invalid coprocessor

...rather than throwing.

* Call undefined instruction directly.
2020-03-04 16:25:27 -03:00
gdkchan dc97457bf0 Initial support for double precision shader instructions. (#963)
* Implement DADD, DFMA and DMUL shader instructions

* Rename FP to FP32

* Correct double immediate

* Classic mistake
2020-03-03 15:02:08 +01:00
gdkchanandjduncanator 7d1a294eae Implement SMULWB, SMULWT, SMLAWB, SMLAWT (AArch32) (#953)
* Implement SMULWB, SMULWT, SMLAWB, SMLAWT, and add tests for some multiply instructions

* Improve test descriptions

* Rename SMULH to SMUL__

Co-authored-by: jduncanator <1518948+jduncanator@users.noreply.github.com>
2020-03-01 18:47:05 +11:00
gdkchan fb0939f9b6 Add SSAT, SSAT16, USAT and USAT16 ARM32 instructions (#954)
* Implement SMULWB, SMULWT, SMLAWB, SMLAWT, and add tests for some multiply instructions

* Improve test descriptions

* Rename SMULH to SMUL__

* Add SSAT, SSAT16, USAT and USAT16 ARM32 instructions

* Fix new tests

* Replace AND 0xFFFF with 16-bits zero extension (more efficient)
2020-03-01 07:51:55 +11:00
gdkchan b8ee5b15ab Implement FACGE and FACGT (Scalar and Vector) AArch64 SIMD instructions (#956) 2020-03-01 07:51:17 +11:00
gdkchan 6204f0e47a Set Undefined instruction emitter for Undefined property on InstDescriptor (#957) 2020-02-29 12:12:15 +01:00
gdkchan e5f78fb1d4 Replace LinkedList by IntrusiveList to avoid allocations on JIT (#931)
* Replace LinkedList by IntrusiveList to avoid allocations on JIT

* Fix wrong replacements
2020-02-17 22:30:54 +01:00
gdkchan 9e4f668f6c Update bindless to indexed conversion code pattern match (#938)
* Update bindless to indexed conversion code pattern match

* Correct index shift
2020-02-14 11:29:58 +01:00
gdkchan 5a9dba0756 Sign-extend shader memory instruction offsets (#934) 2020-02-14 01:48:07 +01:00
gdkchan 7e4d986a73 Support compute uniform buffers emulated with global memory (#924) 2020-02-11 01:10:05 +01:00
gdkchan 796e5d14b4 Use correct shader local memory size instead of a hardcoded size (#914)
* Use correct shader local size instead of a hardcoded size

* Remove unused uniform block

* Update XML doc

* Local memory size has 23 bits on maxwell

* Generate compute QMD struct from nv open doc header

* Remove dummy arrays when shared or local memory is not used, other improvements
2020-02-02 14:25:52 +11:00
gdkchan f373f870f7 Support configurable point size (#916) 2020-02-02 10:19:46 +11:00
gdkchan a1a5341baf Support flat interpolation qualifier on shaders (#915) 2020-02-02 10:18:58 +11:00
gdkchan 0202f150d4 Enable stencil texturing (fixes #866) (#910) 2020-01-31 14:42:03 +11:00
gdkchan 793f38b9aa Discard higher 32-bits of IPC message magic and command number (#911) 2020-01-30 21:43:47 +01:00
gdkchan 532ccf929a Ignore exit flag on branch delay slot (#899) 2020-01-22 02:11:43 +01:00
gdkchan 81cca88bcd Fix shader output color buffer index when non-sequential render targets are used (#895) 2020-01-19 00:09:46 +01:00
gdkchan 595e7716d8 Support audio effect output status (#890)
* Support audio effect output status

* Remove extra line
2020-01-17 10:07:27 +01:00
gdkchan a5e20a8fd1 Add sampler border color support on the GPU (#893) 2020-01-17 09:55:38 +01:00
gdkchan b8e3909d80 Add a GetSpan method to the memory manager and use it on GPU (#877) 2020-01-13 10:27:50 +11:00
gdkchan 8b90924c1e Support instanced draw of quads" (#881) 2020-01-13 09:14:50 +11:00
gdkchan 2bb39ff03e Replace glFinish with barrier for WaitForIdle (#878) 2020-01-13 09:12:40 +11:00
gdkchan 80707f9311 Add runtime identifiers to new projects 2020-01-09 02:13:00 +01:00
gdkchan 29a825b43b Address PR feedback
Removes a useless null check

Aligns some values to improve readability
2020-01-09 02:13:00 +01:00
gdkchan 912e43e979 Remove some unused args on the shader translator 2020-01-09 02:13:00 +01:00
gdkchan 6407729a1d Fix FADD32I check for Ra negation 2020-01-09 02:13:00 +01:00
gdkchan e3c919f086 Remove FFMPEG dependency from README 2020-01-09 02:13:00 +01:00
gdkchan 18814d44b2 Address PR feedback
Add TODO comment for GL_EXT_polygon_offset_clamp
2020-01-09 02:13:00 +01:00
gdkchan 383452f5cf Fix some shader disposal issues 2020-01-09 02:13:00 +01:00
gdkchan a11f6f5235 Fix some spelling mistakes
Thanks to LDj3SNuD for spotting these
2020-01-09 02:13:00 +01:00
gdkchan 23d8516763 Fix ShaderTools 2020-01-09 02:13:00 +01:00
gdkchan 92703af555 Address PR feedback 2020-01-09 02:13:00 +01:00
gdkchan 40ef18d759 Target .NET Core 3.0 for NVDEC project 2020-01-09 02:13:00 +01:00
gdkchan 0dbfe3c23e Re-add NVDEC project (not integrated) 2020-01-09 02:13:00 +01:00
gdkchan 6e092c0558 More code cleanup 2020-01-09 02:13:00 +01:00
gdkchan 9bfb373bdf Remove more unused code 2020-01-09 02:13:00 +01:00
gdkchan 59fdaa744b GPU resource disposal 2020-01-09 02:13:00 +01:00
gdkchan f7bcc884e4 Add XML documentation to Ryujinx.Graphics.Gpu 2020-01-09 02:13:00 +01:00
gdkchan 4a4e2f7c72 Add XML documentation to Ryujinx.Graphics.Gpu.Engine 2020-01-09 02:13:00 +01:00
gdkchan d1c0a64e6a Add XML documentation to Ryujinx.Graphics.Gpu.State 2020-01-09 02:13:00 +01:00
gdkchan 430faeb8ef Add XML documentation to Ryujinx.Graphics.Gpu.Shader 2020-01-09 02:13:00 +01:00
gdkchan e58b540c4e Add XML documentation to Ryujinx.Graphics.Gpu.Memory 2020-01-09 02:13:00 +01:00
gdkchan 80ff2eab29 Change GPU errors to debug and reduce log messages 2020-01-09 02:13:00 +01:00
gdkchan bacb278dc1 Fix typos pointed out by LDj3SNuD 2020-01-09 02:13:00 +01:00
gdkchan c5b9088914 Remove some error logging to avoid log spam 2020-01-09 02:13:00 +01:00
gdkchan ffaad0eaac Fix missing S8 format on texture compatibility check 2020-01-09 02:13:00 +01:00
gdkchan 32764f9560 Add XML documentation to Ryujinx.Graphics.Gpu.Image 2020-01-09 02:13:00 +01:00
gdkchan 53bbc1311f Fix AstcDecoder Success property never being set to true 2020-01-09 02:13:00 +01:00
gdkchan 654e617fe7 Some code cleanup 2020-01-09 02:13:00 +01:00
gdkchan af8498d679 Add basic error logging to the GPU 2020-01-09 02:13:00 +01:00
gdkchan 947e14d3be Reimplement limited bindless textures support 2020-01-09 02:13:00 +01:00
gdkchan 647d0962df Initialize GPU physical memory accessor from KProcess, to allow homebrew that never maps anything on the GPU to work 2020-01-09 02:13:00 +01:00
gdkchan 6cf9a04d98 Stop memory modification check when a invalid address is found 2020-01-09 02:13:00 +01:00
gdkchan a718b60d06 Fix exception on shader translator when adding goto temp variable 2020-01-09 02:13:00 +01:00
gdkchan 82957fa96b Support CC on FSET shader instruction, fix CC on ISET.BF shader instruction 2020-01-09 02:13:00 +01:00
gdkchan 9d7a142a48 Support texture rectangle targets (non-normalized coords) 2020-01-09 02:13:00 +01:00
gdkchan 2eccc7023a Partial support for shader memory barriers 2020-01-09 02:13:00 +01:00
gdkchan 1a550e810c Copy 16 bytes at a time for layout conversion, if possible 2020-01-09 02:13:00 +01:00
gdkchan cfe5fec0cf Remove some usings that are not needed 2020-01-09 02:13:00 +01:00
gdkchan 171c3d54c6 Correct non-constant offset rewrite for texelFetch 2020-01-09 02:13:00 +01:00
gdkchan f2c85c5d58 Support non-constant texture offsets on non-NVIDIA gpus 2020-01-09 02:13:00 +01:00
gdkchan 3323a3a042 Use correct shared memory size (in words, not bytes) 2020-01-09 02:13:00 +01:00
gdkchan ad3bc2531b Ensure a valid shared memory size is used 2020-01-09 02:13:00 +01:00
gdkchan 66d91cbc6c Use dispatch params shared memory size when available 2020-01-09 02:13:00 +01:00
gdkchan 0d9672f3ae Use maximum shared memory size supported by hardware 2020-01-09 02:13:00 +01:00
gdkchan 375ee0ba96 Fix draw indexed flag not being cleared for instanced draws, also avoid state updates in the middle of a indexed draw 2020-01-09 02:13:00 +01:00
gdkchan 23b8a86d35 Support 3D ASTC textures (using 2D blocks) 2020-01-09 02:13:00 +01:00
gdkchan 6b13c5b439 Support bindless texture gather shader instruction 2020-01-09 02:13:00 +01:00
gdkchan 7ce5584f9e Support depth clip mode and disable shader fast math optimization on NVIDIA as a workaround for compiler bugs (?) 2020-01-09 02:13:00 +01:00
gdkchan 17fb11ddb9 Fix wrong maximum id on sampler pool in some cases 2020-01-09 02:13:00 +01:00
gdkchan cb171f6ebf Support shared color mask, implement more shader instructions
Support shared color masks (used by Nouveau and maybe the NVIDIA
driver).
Support draw buffers (also required by OpenGL).
Support viewport transform disable (disabled for now as it breaks some
games).
Fix instanced rendering draw being ignored for multi draw.
Fix IADD and IADD3 immediate shader encodings, that was not matching
some ops.
Implement FFMA32I shader instruction.
Implement IMAD shader instruction.
2020-01-09 02:13:00 +01:00
gdkchan e25b7c9848 Initial support for the guest OpenGL driver (NVIDIA and Nouveau) 2020-01-09 02:13:00 +01:00
gdk 6a98c643ca Add a pass to turn global memory access into storage access, and do all storage related transformations on IR 2020-01-09 02:13:00 +01:00
gdk 396768f3b4 Fix texture 0 not being bound for compute 2020-01-09 02:13:00 +01:00
gdk 442485adb3 Partial support for branch with CC, and fix a edge case of branch out of loop on shaders 2020-01-09 02:13:00 +01:00
gdk 99f236fcf0 Simplified F2I shader instruction codegen 2020-01-09 02:13:00 +01:00
gdk b8528c6317 Implement HSET2 shader instruction and fix errors uncovered by Rodrigo tests 2020-01-09 02:13:00 +01:00