aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Gpu/Engine/Methods.cs
AgeCommit message (Collapse)Author
2020-09-24Implement small indexed draws and other fixes to make guest Vulkan work (#1558)gdkchan
2020-09-19Better viewport flipping and depth mode detection method (#1556)gdkchan
* 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-10Texture/Buffer Memory Management Improvements (#1408)riperiperi
* Initial implementation. Still pending better valid-overlap handling, disposed pool, compressed format flush fix. * Very messy backend resource cache. * Oops * Dispose -> Release * Improve Release/Dispose. * More rule refinement. * View compatibility levels as an enum - you can always know if a view is only copy compatible. * General cleanup. Use locking on the resource cache, as it is likely to be used by other threads in future. * Rename resource cache to resource pool. * Address some of the smaller nits. * Fix regression with MK8 lens flare Texture flushes done the old way should trigger memory tracking. * Use TextureCreateInfo as a key. It now implements IEquatable and generates a hashcode based on width/height. * Fix size change for compressed+non-compressed view combos. Before, this could set either the compressed or non compressed texture with a size with the wrong size, depending on which texture had its size changed. This caused exceptions when flushing the texture. Now it correctly takes the block size into account, assuming that these textures are only related because a pixel in the non-compressed texture represents a block in the compressed one. * Implement JD's suggestion for HashCode Combine Co-authored-by: jduncanator <1518948+jduncanator@users.noreply.github.com> * Address feedback * Address feedback. Co-authored-by: jduncanator <1518948+jduncanator@users.noreply.github.com>
2020-08-04Improved Logger (#1292)mageven
* Logger class changes only Now compile-time checking is possible with the help of Nullable Value types. * Misc formatting * Manual optimizations PrintGuestLog PrintGuestStackTrace Surfaceflinger DequeueBuffer * Reduce SendVibrationXX log level to Debug * Add Notice log level This level is always enabled and used to print system info, etc... Also, rewrite LogColor to switch expression as colors are static * Unify unhandled exception event handlers * Print enabled LogLevels during init * Re-add App Exit disposes in proper order nit: switch case spacing * Revert PrintGuestStackTrace to Info logs due to #1407 PrintGuestStackTrace is now called in some critical error handlers so revert to old behavior as KThread isn't part of Guest. * Batch replace Logger statements
2020-07-28Implement alpha test using legacy functions (#1426)gdkchan
2020-07-26Use polygon offset clamp if supported (#1429)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-12New NVDEC and VIC implementation (#1384)gdkchan
* Initial NVDEC and VIC implementation * Update FFmpeg.AutoGen to 4.3.0 * Add nvdec dependencies for Windows * Unify some VP9 structures * Rename VP9 structure fields * Improvements to Video API * XML docs for Common.Memory * Remove now unused or redundant overloads from MemoryAccessor * NVDEC UV surface read/write scalar paths * Add FIXME comments about hacky things/stuff that will need to be fixed in the future * Cleaned up VP9 memory allocation * Remove some debug logs * Rename some VP9 structs * Remove unused struct * No need to compile Ryujinx.Graphics.Host1x with unsafe anymore * Name AsyncWorkQueue threads to make debugging easier * Make Vp9PictureInfo a ref struct * LayoutConverter no longer needs the depth argument (broken by rebase) * Pooling of VP9 buffers, plus fix a memory leak on VP9 * Really wish VS could rename projects properly... * Address feedback * Remove using * Catch OperationCanceledException * Add licensing informations * Add THIRDPARTY.md to release too Co-authored-by: Thog <me@thog.eu>
2020-07-10Implement Logical Operation registers and functionality (#1380)riperiperi
* Implement Logical Operation registers and functionality. * Address Feedback 1
2020-07-07Implement Zero-Configuration Resolution Scaling (#1365)riperiperi
* Initial implementation of Render Target Scaling Works with most games I have. No GUI option right now, it is hardcoded. Missing handling for texelFetch operation. * Realtime Configuration, refactoring. * texelFetch scaling on fragment shader (WIP) * Improve Shader-Side changes. * Fix potential crash when no color/depth bound * Workaround random uses of textures in compute. This was blacklisting textures in a few games despite causing no bugs. Will eventually add full support so this doesn't break anything. * Fix scales oscillating when changing between non-native scales. * Scaled textures on compute, cleanup, lazier uniform update. * Cleanup. * Fix stupidity * Address Thog Feedback. * Cover most of GDK's feedback (two comments remain) * Fix bad rename * Move IsDepthStencil to FormatExtensions, add docs. * Fix default config, square texture detection. * Three final fixes: - Nearest copy when texture is integer format. - Texture2D -> Texture3D copy correctly blacklists the texture before trying an unscaled copy (caused driver error) - Discount small textures. * Remove scale threshold. Not needed right now - we'll see if we run into problems. * All CPU modification blacklists scale. * Fix comment.
2020-07-04Support inline index buffer data (#1351)gdkchan
* Support inline index buffer data * Sort usings
2020-07-04Fix compute restore of previous shader state (#1352)gdkchan
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-27Support separate textures and samplers (#1216)gdkchan
* Support separate textures and samplers * Add missing bindless flag, fix SNORM format on buffer textures * Add missing separation * Add comments about the new handles
2020-05-23Spanify Graphics Abstraction Layer (#1226)gdkchan
* Spanify Graphics Abstraction Layer * Be explicit about BufferHandle size
2020-05-06Refactor shader GPU state and memory access (#1203)gdkchan
* Refactor shader GPU state and memory access * Fix NVDEC project build * Address PR feedback and add missing XML comments
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-25Implement texture buffers (#1152)gdkchan
* Implement texture buffers * Throw NotSupportedException where appropriate
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-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-07Only enumerate cached textures that are modified when flushing. (#918)riperiperi
* 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-02Support configurable point size (#916)gdkchan
2020-01-22Ignore exit flag on branch delay slot (#899)gdkchan
2020-01-13Add a GetSpan method to the memory manager and use it on GPU (#877)gdkchan
2020-01-09Fix some shader disposal issuesgdkchan
2020-01-09Address PR feedbackgdkchan
2020-01-09Remove more unused codegdkchan
2020-01-09GPU resource disposalgdkchan
2020-01-09Add XML documentation to Ryujinx.Graphics.Gpu.Enginegdkchan
2020-01-09Change GPU errors to debug and reduce log messagesgdkchan
2020-01-09Some code cleanupgdkchan
2020-01-09Reimplement limited bindless textures supportgdkchan
2020-01-09Support texture rectangle targets (non-normalized coords)gdkchan
2020-01-09Support depth clip mode and disable shader fast math optimization on NVIDIA ↵gdkchan
as a workaround for compiler bugs (?)
2020-01-09Fix wrong maximum id on sampler pool in some casesgdkchan
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-09Improved and simplified window texture presentationgdk
2020-01-09Separate sub-channel stategdk
2020-01-09Invalidate shaders when they are modifiedgdk