aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Gpu/State
AgeCommit message (Collapse)Author
2021-07-11Separate GPU engines (part 2/2) (#2440)gdkchan
* 3D engine now uses DeviceState too, plus new state modification tracking * Remove old methods code * Remove GpuState and friends * Optimize DeviceState, force inline some functions * This change was not supposed to go in * Proper channel initialization * Optimize state read/write methods even more * Fix debug build * Do not dirty state if the write is redundant * The YControl register should dirty either the viewport or front face state too, to update the host origin * Avoid redundant vertex buffer updates * Move state and get rid of the Ryujinx.Graphics.Gpu.State namespace * Comments and nits * Fix rebase * PR feedback * Move changed = false to improve codegen * PR feedback * Carry RyuJIT a bit more
2021-07-07Separate GPU engines and make state follow official docs (part 1/2) (#2422)gdkchan
* Use DeviceState for compute and i2m * Migrate 2D class, more comments * Migrate DMA copy engine * Remove now unused code * Replace GpuState by GpuAccessorState on GpuAcessor, since compute no longer has a GpuState * More comments * Add logging (disabled) * Add back i2m on 3D engine
2021-06-25Add support for custom line widths (#2406)gdkchan
2021-06-24Initial support for GPU channels (#2372)gdkchan
* Ground work for separate GPU channels * Rename TextureManager to TextureCache * Decouple texture bindings management from the texture cache * Rename BufferManager to BufferCache * Decouple buffer bindings management from the buffer cache * More comments and proper disposal * PR feedback * Force host state update on channel switch * Typo * PR feedback * Missing using
2021-06-09Do not clear gpu subchannel state on BindChannel (#2348)Mary
This fixes a regression caused by #980, that was causing a crash on New Super Lucky's Tale. As always, this need feedback on possible regression on any games. Fix #2343.
2021-06-03Fix texture blit off-by-one errors (#2335)gdkchan
2021-05-22Fix non-independent blend state not being updated (#2303)gdkchan
* Fix non-independent blend state not being updated * Actually, this is not needed
2021-01-13Implement clear buffer (fast path) (#1902)gdkchan
* Implement clear buffer (fast path) * Remove blank line
2020-12-02Implement Force Early Z Register (#1755)riperiperi
2020-11-13Use "Screen Scissor" as size hint for render targets (#1703)riperiperi
"Screen scissor" is the minimum size of all render targets, and is set when any render target is bound on NVN or OpenGL. Since it works on all active texture's real sizes, it is therefore more reliable than viewport 0's width, and is actually set before clear. This fixes a regression with Hyrule Warriors: Age Of Calamity's cubemaps, which did not set viewport dimensions before clear. This resulted in attempting to create a cubemap with rectangular sides, which is logically and physically impossible. (also it just fails)
2020-11-05Separate zeta from color formats (#1647)gdkchan
2020-09-24Implement small indexed draws and other fixes to make guest Vulkan work (#1558)gdkchan
2020-09-11Allow swizzles to match with "undefined" components (#1538)riperiperi
* Add swizzle matching rules. Improves rules which try to match incompatible formats as perfect, such as D32 float -> R32 float. Remove Format.HasOneComponent, since this information is now available via the FormatInfo struct. * Fix this rule. * Update component counts for depth formats.
2020-08-03Implement a Macro JIT (#1445)gdkchan
* Implement a Macro JIT * Nit: space
2020-07-28Implement alpha test using legacy functions (#1426)gdkchan
2020-07-23New GPFifo and fast guest constant buffer updates (#1400)gdkchan
* 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-20GL: Implement more Point parameters (#1399)mageven
* Fix GL_INVALID_VALUE on glPointSize calls * Implement more of Point primitive state * Use existing Origin enum
2020-07-15Initial transform feedback support (#1370)gdkchan
* Initial transform feedback support * Some nits and fixes * Update ReportCounterType and Write method * Can't change shader or TFB bindings while TFB is active * Fix geometry shader input names with new naming
2020-07-10Implement Logical Operation registers and functionality (#1380)riperiperi
* Implement Logical Operation registers and functionality. * Address Feedback 1
2020-07-04Support inline index buffer data (#1351)gdkchan
* Support inline index buffer data * Sort usings
2020-05-29Implement FIFO semaphore (#1286)gdkchan
* Implement FIFO semaphore * New enum for FIFO semaphore operation
2020-05-28Fix wrong face culling once and for all (#1277)gdkchan
* Viewport swizzle support on NV and clip origin * Initialize default viewport swizzle state, emulate viewport swizzle on shaders when not supported * Address PR feedback
2020-05-04Implement user-defined clipping on GL state pipeline (#1118)mageven
2020-04-30Fix depth clamp enable bit, unit scale for polygon offset. (#1178)riperiperi
Verified with deko3d and opengl driver code.
2020-04-27Fix shadow RAM affecting MME methods (#1168)gdkchan
2020-04-25Fix building of previous commitThog
2020-04-25Fix MME shadow RAM implementation (#1051)gdkchan
2020-04-25Implement Constant Color blends (#1119)mageven
* Implement Constant Color blends and init blend states * Address gdkchan's comments Also adds Set methods to GpuState * Fix descriptions of QueryModified
2020-04-22Initial conditional rendering support (#1012)gdkchan
* 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-21Suppress warnings from fields never used or never assigned (CS0169 and ↵Cristallix
CS0649) (#919) * chore : disable unwanted warnings and minor code cleanup * chore : remove more warnings * fix : reorder struct correctly * fix : restore _isKernel and remove useless comment * fix : copy/paste error * fix : restore CallMethod call * fix : whitespace * chore : clean using * feat : remove warnings * fix : simplify warning removal on struct * fix : revert fields deletion and code clean up * fix : re-add RE value * fix : typo
2020-04-19Implement GPU syncpoints (#980)Thog
* 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-17Implement Depth Clamping (#1120)mageven
* Implement Depth Clamping and add misc enums * Fix formatting
2020-04-16Fix oversight in depth range initialization from PR #1093 (#1112)mageven
2020-04-07Simple GPU fixes (#1093)mageven
* 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-03-30Support constant attributes (with a value of zero) (#1066)gdkchan
* Support constant attributes (with a value of zero) * Remove extra line
2020-03-29Implement GPU scissors (#1058)gdkchan
* Implement GPU scissors * Remove unused using * Add missing changes for Clear
2020-02-02Support configurable point size (#916)gdkchan
2020-01-22Ignore exit flag on branch delay slot (#899)gdkchan
2020-01-09Address PR feedbackgdkchan
Removes a useless null check Aligns some values to improve readability
2020-01-09Address PR feedbackgdkchan
Add TODO comment for GL_EXT_polygon_offset_clamp
2020-01-09Fix some spelling mistakesgdkchan
Thanks to LDj3SNuD for spotting these
2020-01-09Address PR feedbackgdkchan
2020-01-09Add XML documentation to Ryujinx.Graphics.Gpu.Stategdkchan
2020-01-09Some code cleanupgdkchan
2020-01-09Support depth clip mode and disable shader fast math optimization on NVIDIA ↵gdkchan
as a workaround for compiler bugs (?)
2020-01-09Support shared color mask, implement more shader instructionsgdkchan
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-09Initial support for the guest OpenGL driver (NVIDIA and Nouveau)gdkchan
2020-01-09Small optimizations on texture and sampler pool invalidationgdk
2020-01-09Separate sub-channel stategdk
2020-01-09Add per-source type memory change tracking, simplified state change ↵gdk
tracking, other fixes