Commit graph

82 commits

Author SHA1 Message Date
gdkchan
d5381dc8c7 Report more realistic GPU timestamps when FastGpuTime is enabled (#1139) 2020-04-20 22:41:07 +10:00
Thog
aec95653e4 Implement GPU syncpoints (#980)
* Implement GPU syncpoints

This adds support for GPU syncpoints on the GPU backend & nvservices.

Everything that was implemented here is based on my researches,
hardware testing of the GM20B and reversing of nvservices (8.1.0).

Thanks to @fincs for the informations about some behaviours of the pusher
and for the initial informations about syncpoints.

* syncpoint: address gdkchan's comments

* Add some missing logic to handle SubmitGpfifo correctly

* Handle the NV event API correctly

* evnt => hostEvent

* Finish addressing gdkchan's comments

* nvservices: write the output buffer even when an error is returned

* dma pusher: Implemnet prefetch barrier

lso fix when the commands should be prefetch.

* Partially fix prefetch barrier

* Add a missing syncpoint check in QueryEvent of NvHostSyncPt

* Address Ac_K's comments and fix GetSyncpoint for ChannelResourcePolicy == Channel

* fix SyncptWait & SyncptWaitEx cmds logic

* Address ripinperi's comments

* Address gdkchan's comments

* Move user event management to the control channel

* Fix mm implementation, nvdec works again

* Address ripinperi's comments

* Address gdkchan's comments

* Implement nvhost-ctrl close accurately + make nvservices dispose channels when stopping the emulator

* Fix typo in MultiMediaOperationType
2020-04-19 11:25:57 +10:00
mageven
855161db98 Implement Depth Clamping (#1120)
* Implement Depth Clamping and add misc enums

* Fix formatting
2020-04-17 11:16:49 +10:00
mageven
d00f6f0722 Fix oversight in depth range initialization from PR #1093 (#1112) 2020-04-16 13:21:58 +10:00
mageven
df5c1835c9 Simple GPU fixes (#1093)
* Implement RasterizeEnable

* Match viewport count to hardware

* Simplify ScissorTest tracking around Blits

* Disable RasterizerDiscard around Blits and track its state

* Read RasterizeEnable reg as bool and add doc
2020-04-07 19:19:45 +10:00
gdkchan
3832cff250 Remove output interpolation qualifier (#1070) 2020-04-02 12:24:55 +11:00
Xpl0itR
d0f859c3ef Make max anisotropy configurable (#1043)
* Make max anisotropy configurable

* Move opengl command to opengl project

* Add GUI option
2020-03-31 08:38:52 +11:00
gdkchan
a3d666f2ca 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
2ef646354c Implement GPU scissors (#1058)
* Implement GPU scissors

* Remove unused using

* Add missing changes for Clear
2020-03-29 14:02:58 +11:00
gdkchan
07a00e4d88 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
88d20c29f9 Implement MME shadow RAM (#987) 2020-03-13 12:30:26 +11:00
gdkchan
303724a4b1 Support compute uniform buffers emulated with global memory (#924) 2020-02-11 01:10:05 +01:00
riperiperi
878dfe4cda Only enumerate cached textures that are modified when flushing. (#918)
* Only enumarate cached textures that are modified when flushing, rather than all of them.

* Remove locking.

* Add missing clear.

* Remove texture from modified list when data is disposed.

In case the game does not call either flush method at any point.

* Add ReferenceEqualityComparer from jD for the HashSet
2020-02-07 08:49:26 +11:00
riperiperi
aab597b78b Compare shader code using a span instead of individual reads. (#917)
* Compare shader code using a span instead of individual reads.

* Add comment for new parameter.

* Remove unnecessary Math.Min
2020-02-03 20:11:22 +01:00
gdkchan
039518404d 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
e81772ca09 Support configurable point size (#916) 2020-02-02 10:19:46 +11:00
gdkchan
ac0c282f4b Ignore exit flag on branch delay slot (#899) 2020-01-22 02:11:43 +01:00
Thog
d7babb075c Keep the GUI alive when closing a game (#888)
* Keep the GUI alive when closing a game

Make HLE.Switch init when starting a game and dispose it when closing
the GlScreen.

This also make HLE in charge of disposing the audio and gpu backend.

* Address Ac_k's comments

* Make sure to dispose the Discord module and use GTK quit method

Also update Discord Precense when closing a game.

* Make sure to dispose MainWindow

* Address gdk's comments
2020-01-21 23:23:11 +01:00
gdkchan
01ac0d0f74 Add sampler border color support on the GPU (#893) 2020-01-17 09:55:38 +01:00
gdkchan
13aea6d726 Add a GetSpan method to the memory manager and use it on GPU (#877) 2020-01-13 10:27:50 +11:00
gdkchan
471f504f97 Replace glFinish with barrier for WaitForIdle (#878) 2020-01-13 09:12:40 +11:00
Thog
96fba24558 MapBufferEx: take page size into account (#873)
Fix #744
2020-01-12 03:14:27 +01:00
gdkchan
24a72b2fcc Add runtime identifiers to new projects 2020-01-09 02:13:00 +01:00
gdkchan
4bf59cc7bd Address PR feedback
Removes a useless null check

Aligns some values to improve readability
2020-01-09 02:13:00 +01:00
gdkchan
46530360e3 Address PR feedback
Add TODO comment for GL_EXT_polygon_offset_clamp
2020-01-09 02:13:00 +01:00
gdkchan
4deeff5ed7 Fix some shader disposal issues 2020-01-09 02:13:00 +01:00
gdkchan
30a909265a Fix some spelling mistakes
Thanks to LDj3SNuD for spotting these
2020-01-09 02:13:00 +01:00
gdkchan
bc38064351 Address PR feedback 2020-01-09 02:13:00 +01:00
gdkchan
cb82de75b4 Re-add NVDEC project (not integrated) 2020-01-09 02:13:00 +01:00
gdkchan
987e78245e More code cleanup 2020-01-09 02:13:00 +01:00
gdkchan
af0003eb44 Remove more unused code 2020-01-09 02:13:00 +01:00
gdkchan
d7fb450216 GPU resource disposal 2020-01-09 02:13:00 +01:00
gdkchan
2d8339fc61 Add XML documentation to Ryujinx.Graphics.Gpu 2020-01-09 02:13:00 +01:00
gdkchan
fe8b25c8f1 Add XML documentation to Ryujinx.Graphics.Gpu.Engine 2020-01-09 02:13:00 +01:00
gdkchan
e1175c9453 Add XML documentation to Ryujinx.Graphics.Gpu.State 2020-01-09 02:13:00 +01:00
gdkchan
ea89d415bb Add XML documentation to Ryujinx.Graphics.Gpu.Shader 2020-01-09 02:13:00 +01:00
gdkchan
ef3ec2af26 Add XML documentation to Ryujinx.Graphics.Gpu.Memory 2020-01-09 02:13:00 +01:00
gdkchan
f5ce09c126 Change GPU errors to debug and reduce log messages 2020-01-09 02:13:00 +01:00
gdkchan
7cad07ecba Fix typos pointed out by LDj3SNuD 2020-01-09 02:13:00 +01:00
gdkchan
7e2383aebb Fix missing S8 format on texture compatibility check 2020-01-09 02:13:00 +01:00
gdkchan
b73695ce3e Add XML documentation to Ryujinx.Graphics.Gpu.Image 2020-01-09 02:13:00 +01:00
gdkchan
d42edddefd Some code cleanup 2020-01-09 02:13:00 +01:00
gdkchan
155c2ee2fe Add basic error logging to the GPU 2020-01-09 02:13:00 +01:00
Alex Barney
7c4256a713 ASTC optimizations (#845)
* ASTC optimizations

* Move code to Ryujinx.Common

* Support 3D textures

* Address feedback

* Remove ASTC logging

* Use stackalloc instead of a Buffer20 struct

* Code style and cleanup

* Respond to feedback

* Rearrange public/private property ordering
2020-01-09 02:13:00 +01:00
gdkchan
f7277e76e3 Reimplement limited bindless textures support 2020-01-09 02:13:00 +01:00
gdkchan
8e777be7b4 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
0dedc2bf7e Support texture rectangle targets (non-normalized coords) 2020-01-09 02:13:00 +01:00
gdkchan
84e5a32fd3 Support non-constant texture offsets on non-NVIDIA gpus 2020-01-09 02:13:00 +01:00
gdkchan
bd2d194183 Use correct shared memory size (in words, not bytes) 2020-01-09 02:13:00 +01:00
gdkchan
ef28012710 Ensure a valid shared memory size is used 2020-01-09 02:13:00 +01:00