43ebd7a9bb
New shader cache implementation ( #3194 )
...
* New shader cache implementation
* Remove some debug code
* Take transform feedback varying count into account
* Create shader cache directory if it does not exist + fragment output map related fixes
* Remove debug code
* Only check texture descriptors if the constant buffer is bound
* Also check CPU VA on GetSpanMapped
* Remove more unused code and move cache related code
* XML docs + remove more unused methods
* Better codegen for TransformFeedbackDescriptor.AsSpan
* Support migration from old cache format, remove more unused code
Shader cache rebuild now also rewrites the shared toc and data files
* Fix migration error with BRX shaders
* Add a limit to the async translation queue
Avoid async translation threads not being able to keep up and the queue growing very large
* Re-create specialization state on recompile
This might be required if a new version of the shader translator requires more or less state, or if there is a bug related to the GPU state access
* Make shader cache more error resilient
* Add some missing XML docs and move GpuAccessor docs to the interface/use inheritdoc
* Address early PR feedback
* Fix rebase
* Remove IRenderer.CompileShader and IShader interface, replace with new ShaderSource struct passed to CreateProgram directly
* Handle some missing exceptions
* Make shader cache purge delete both old and new shader caches
* Register textures on new specialization state
* Translate and compile shaders in forward order (eliminates diffs due to different binding numbers)
* Limit in-flight shader compilation to the maximum number of compilation threads
* Replace ParallelDiskCacheLoader state changed event with a callback function
* Better handling for invalid constant buffer 1 data length
* Do not create the old cache directory structure if the old cache does not exist
* Constant buffer use should be per-stage. This change will invalidate existing new caches (file format version was incremented)
* Replace rectangle texture with just coordinate normalization
* Skip incompatible shaders that are missing texture information, instead of crashing
This is required if we, for example, support new texture instruction to the shader translator, and then they allow access to textures that were not accessed before. In this scenario, the old cache entry is no longer usable
* Fix coordinates normalization on cubemap textures
* Check if title ID is null before combining shader cache path
* More robust constant buffer address validation on spec state
* More robust constant buffer address validation on spec state (2)
* Regenerate shader cache with one stream, rather than one per shader.
* Only create shader cache directory during initialization
* Logging improvements
* Proper shader program disposal
* PR feedback, and add a comment on serialized structs
* XML docs for RegisterTexture
Co-authored-by: riperiperi <rhy3756547@hotmail.com >
2022-04-10 10:49:44 -03:00
gdkchan and GitHub
26a881176e
Fix tail merge from block with conditional jump to multiple returns ( #3267 )
...
* Fix tail merge from block with conditional jump to multiple returns
* PPTC version bump
2022-04-09 16:56:50 +02:00
gdkchan and GitHub
e44a43c7e1
Implement VMAD shader instruction and improve InvocationInfo and ISBERD handling ( #3251 )
...
* Implement VMAD shader instruction and improve InvocationInfo and ISBERD handling
* Shader cache version bump
* Fix typo
2022-04-08 12:42:39 +02:00
gdkchan and GitHub
3139a85a2b
Allow copy texture views to have mismatching multisample state ( #3152 )
2022-04-08 11:26:48 +02:00
gdkchan and GitHub
952f6f8a65
Calculate vertex buffer size from index buffer type ( #3253 )
...
* Calculate vertex buffer size from index buffer type
* We also need to update the size if first vertex changes
2022-04-08 11:02:06 +02:00
gdkchan and GitHub
56c56aa34d
Do not clamp SNorm outputs to the [0, 1] range on OpenGL ( #3260 )
2022-04-05 18:09:06 -03:00
gdkchan and GitHub
d4b960d348
Implement primitive restart draw arrays properly on OpenGL ( #3256 )
2022-04-04 18:43:24 -03:00
gdkchan and GitHub
b2a225558d
Do not force scissor on clear if scissor is disabled ( #3258 )
2022-04-04 18:30:43 -03:00
gdkchan and GitHub
0ef0fc044a
Small graphics abstraction layer cleanup ( #3257 )
2022-04-04 18:21:06 -03:00
gdkchan and GitHub
04bd87ed5a
Fix shader textureSize with multisample and buffer textures ( #3240 )
...
* Fix shader textureSize with multisample and buffer textures
* Replace out param with tuple return value
2022-04-04 14:43:58 -03:00
gdkchan and GitHub
1402d8391d
Support NVDEC H264 interlaced video decoding and VIC deinterlacing ( #3225 )
...
* Support NVDEC H264 interlaced video decoding and VIC deinterlacing
* Remove unused code
2022-03-23 17:09:32 -03:00
gdkchan and GitHub
79408b68c3
De-tile GOB when DMA copying from block linear to pitch kind memory regions ( #3207 )
...
* De-tile GOB when DMA copying from block linear to pitch kind memory regions
* XML docs + nits
* Remove using
* No flush for regular buffer copies
* Add back ulong casts, fix regression due to oversight
2022-03-20 13:55:07 -03:00
gdkchan and GitHub
e5ad1dfa48
Implement S8D24 texture format and tweak depth range detection ( #2458 )
2022-03-15 03:42:08 +01:00
gdkchan and GitHub
79becc4b78
Dynamically increase buffer size when resizing ( #2861 )
...
* Grow buffers by 1.5x of its size when resizing
* Further restrict the cases where the dynamic expansion is done
2022-03-15 03:33:53 +01:00
gdkchan and GitHub
8c9633d72f
Initialize indexed inputs used on next shader stage ( #3198 )
2022-03-14 20:02:50 -03:00
gdkchan and GitHub
1f93fd52d9
Do not initialize geometry shader passthrough attributes ( #3196 )
2022-03-14 19:35:41 -03:00
gdkchan and GitHub
69b05f9918
Fix GetUserDisableCount NRE ( #3187 )
2022-03-12 18:12:12 +01:00
gdkchan and GitHub
fb7c80e928
Limit number of events that can be retrieved from GetDisplayVSyncEvent ( #3188 )
...
* Limit number of events that can be retrieved from GetDisplayVSyncEvent
* Cleaning
* Rename openDisplayInfos -> openDisplays
2022-03-12 17:56:19 +01:00
gdkchan and GitHub
0bcbe32367
Only initialize shader outputs that are actually used on the next stage ( #3054 )
...
* Only initialize shader outputs that are actually used on the next stage
* Shader cache version bump
2022-03-06 20:42:13 +01:00
gdkchan and GitHub
0a24aa6af2
Allow textures to have their data partially mapped ( #2629 )
...
* Allow textures to have their data partially mapped
* Explicitly check for invalid memory ranges on the MultiRangeList
* Update GetWritableRegion to also support unmapped ranges
2022-02-22 13:34:16 -03:00
gdkchan and GitHub
f2087ca29e
PPTC version increment ( #3139 )
2022-02-17 23:52:42 -03:00
gdkchan and GitHub
92d166ecb7
Enable CPU JIT cache invalidation ( #2965 )
...
* Enable CPU JIT cache invalidation
* Invalidate cache on IC IVAU
2022-02-18 02:53:18 +01:00
gdkchan and GitHub
72e543e946
Prefer texture over textureSize for sampler type ( #3132 )
...
* Prefer texture over textureSize for sampler type
* Shader cache version bump
2022-02-18 02:44:46 +01:00
gdkchan and GitHub
63c9c64196
Move kernel syscall logs to new trace log level ( #3137 )
2022-02-18 02:14:05 +01:00
gdkchan and GitHub
3bd357045f
Do not allow render targets not explicitly written by the fragment shader to be modified ( #3063 )
...
* Do not allow render targets not explicitly written by the fragment shader to be modified
* Shader cache version bump
* Remove blank lines
* Avoid redundant color mask updates
* HostShaderCacheEntry can be null
* Avoid more redundant glColorMask calls
* nit: Mask -> Masks
* Fix currentComponentMask
* More efficient way to update _currentComponentMasks
2022-02-16 23:15:39 +01:00
gdkchan and GitHub
7bfb5f79b8
When copying linear textures, DMA should ignore region X/Y ( #3121 )
2022-02-16 11:13:45 +01:00
gdkchan and GitHub
f861f0bca2
Fix missing geometry shader passthrough inputs ( #3106 )
...
* Fix missing geometry shader passthrough inputs
* Shader cache version bump
2022-02-11 19:52:20 +01:00
gdkchan and GitHub
c3c3914ed3
Add a limit on the number of uses a constant may have ( #3097 )
2022-02-09 17:42:47 -03:00
gdkchan and GitHub
b944941733
Fix bug that could cause depth buffer to be missing after clear ( #3067 )
2022-01-31 00:11:43 -03:00
gdkchan and GitHub
bd412afb9f
Fix small precision error on CPU reciprocal estimate instructions ( #3061 )
...
* Fix small precision error on CPU reciprocal estimate instructions
* PPTC version bump
2022-01-29 23:59:34 +01:00
gdkchan and GitHub
f3bfd799e1
Fix calls passing V128 values on Linux ( #3034 )
...
* Fix calls passing V128 values on Linux
* PPTC version bump
2022-01-24 11:23:24 +01:00
gdkchan and GitHub
42c75dbb8f
Add support for BC1/2/3 decompression (for 3D textures) ( #2987 )
...
* Add support for BC1/2/3 decompression (for 3D textures)
* Optimize and clean up
* Unsafe not needed here
* Fix alpha value interpolation when a0 <= a1
2022-01-22 19:23:00 +01:00
gdkchan and GitHub
f0824fde9f
Add host CPU memory barriers for DMB/DSB and ordered load/store ( #3015 )
...
* Add host CPU memory barriers for DMB/DSB and ordered load/store
* PPTC version bump
* Revert to old barrier order
2022-01-21 12:47:34 -03:00
gdkchan and GitHub
7e967d796c
Stop using glTransformFeedbackVaryings and use explicit layout on the shader ( #3012 )
...
* Stop using glTransformFeedbackVarying and use explicit layout on the shader
* This is no longer needed
* Shader cache version bump
* Fix gl_PerVertex output for tessellation control shaders
2022-01-21 12:35:21 -03:00
gdkchan and GitHub
0e59573f2b
Add capability for BGRA formats ( #3011 )
2022-01-20 08:37:21 -03:00
gdkchan and GitHub
fb853f13e9
Scale scissor used for clears ( #3002 )
2022-01-16 20:23:00 -03:00
gdkchan and GitHub
bd215e447d
Fix return type mismatch on 32-bit titles ( #3000 )
2022-01-16 08:39:43 -03:00
gdkchan and GitHub
6e0799580f
Fix render target clear when sizes mismatch ( #2994 )
2022-01-11 20:15:17 +01:00
gdkchan and GitHub
7f6b3d234a
Implement IMUL, PCNT and CONT shader instructions, fix FFMA32I and HFMA32I ( #2972 )
...
* Implement IMUL shader instruction
* Implement PCNT/CONT instruction and fix FFMA32I
* Add HFMA232I to the table
* Shader cache version bump
* No Rc on Ffma32i
2022-01-10 12:08:00 -03:00
gdkchan and GitHub
952c6e4d45
Fix sampled multisample image size ( #2984 )
2022-01-10 08:45:25 +01:00
gdkchan and GitHub
4864648e72
Return error on DNS resolution when guest internet access is disabled ( #2983 )
...
* Return error on DNS resolution when guest internet access is disabled
* Log DNS lookup calls
2022-01-08 20:18:09 -03:00
gdkchan and GitHub
15131d4350
Force crop when presentation cached texture size mismatches ( #2957 )
2021-12-31 12:00:42 -03:00
gdkchan and GitHub
c05c8e09d4
Add support for the R4G4 texture format ( #2956 )
2021-12-30 17:10:54 +01:00
gdkchan and GitHub
1485780d90
Fix A1B5G5R5 format for good ( #2955 )
2021-12-30 14:00:34 +01:00
gdkchan and GitHub
8544b1445b
Improve SocketOption handling ( #2946 )
2021-12-29 15:04:38 +01:00
gdkchan and GitHub
ef39b2ebdd
Flip scissor box when the YNegate bit is set ( #2941 )
...
* Flip scissor box when the YNegate bit is set
* Flip scissor based on screen scissor state, account for negative scissor Y
* No need for abs when we already know the value is negative
2021-12-28 08:37:23 -03:00
gdkchan and GitHub
6dacc4c577
Fix GetHostByNameRequestWithOptions and GetHostByAddrRequestWithOptions ( #2943 )
2021-12-28 08:22:58 -03:00
gdkchan and GitHub
f65d01b5d3
Use minimum stream sample count on SDL2 audio backend ( #2948 )
2021-12-27 18:25:21 -03:00
gdkchan and GitHub
ac57dd5d75
Fix wrong title language ( #2933 )
...
* Fix wrong title language
* Sort
2021-12-27 18:10:49 -03:00
gdkchan and GitHub
a87f7f2029
Fix DMA copy fast path line size when xCount < stride ( #2942 )
2021-12-26 13:05:26 -03:00
gdkchan and GitHub
451673ada5
Fix I2M texture copies when line length is not a multiple of 4 ( #2938 )
...
* Fix I2M texture copies when line length is not a multiple of 4
* Do not copy padding bytes for 1D copies
* Nit
2021-12-26 12:39:07 -03:00
gdkchan and GitHub
0b1185284c
Fix GetAddrInfoWithOptions and some sockets issues ( #2936 )
...
* Fix GetAddrInfoWithOptions and some sockets issues
* Was not supposed to remove this log
2021-12-26 15:17:13 +01:00
gdkchan and GitHub
c0056546e7
Fix bug causing an audio buffer to be enqueued more than once ( #2940 )
2021-12-26 14:48:18 +01:00
gdkchan and GitHub
a438a4bc16
Remove PortRemoteClosed warning ( #2928 )
2021-12-23 14:43:30 -03:00
gdkchan and GitHub
e7c2dc8ec3
Fix for texture pool not being updated when it should + buffer texture related fixes ( #2911 )
2021-12-19 11:50:44 -03:00
gdkchan and GitHub
e24949ca2c
Implement CSDB instruction ( #2927 )
2021-12-19 11:19:05 -03:00
gdkchan and GitHub
119a3a1887
Fix SUATOM and other texture shader instructions with RZ dest ( #2885 )
...
* Fix SUATOM and other texture shader instructions with RZ dest
* Shader cache version bump
2021-12-08 18:36:09 -03:00
gdkchan and GitHub
650cc41c02
Implement remaining shader double-precision instructions ( #2845 )
...
* Implement remaining shader double-precision instructions
* Shader cache version bump
2021-12-08 17:54:12 -03:00
gdkchan and GitHub
acc0b0f313
Fix FLO.SH shader instruction with a input of 0 ( #2876 )
...
* Fix FLO.SH shader instruction with a input of 0
* Shader cache version bump
2021-12-05 13:25:05 +01:00
gdkchan and GitHub
30b7aaefca
Better depth range detection ( #2754 )
...
* Better depth range detection
* PR feedback
* Move depth mode set out of the loop and to a separate method
2021-11-21 10:25:03 -03:00
gdkchan and GitHub
b9d83cc97e
Fix shader integer from/to double conversion ( #2831 )
2021-11-14 21:37:07 -03:00
gdkchan and GitHub
611bec6e44
Implement DrawTexture functionality ( #2747 )
...
* Implement DrawTexture functionality
* Non-NVIDIA support
* Disable some features that should not affect draw texture (slow path)
* Remove space from shader source
* Match 2D engine names
* Fix resolution scale and add missing XML docs
* Disable transform feedback for draw texture fallback
2021-11-10 15:37:49 -03:00
gdkchan and GitHub
911ea38e93
Support shader gl_Color, gl_SecondaryColor and gl_TexCoord built-ins ( #2817 )
...
* Support shader gl_Color, gl_SecondaryColor and gl_TexCoord built-ins
* Shader cache version bump
* Fix back color value on fragment shader
* Disable IPA multiplication for fixed function attributes and back color selection
2021-11-08 13:18:46 -03:00
gdkchan and GitHub
3dee712164
Fix bindless/global memory elimination with inverted predicates ( #2826 )
...
* Fix bindless/global memory elimination with inverted predicates
* Shader cache version bump
2021-11-08 12:57:28 -03:00
gdkchan and GitHub
b7a1544e8b
Fix InvocationInfo on geometry shader and bindless default integer const ( #2822 )
...
* Fix InvocationInfo on geometry shader and bindless default integer const
* Shader cache version bump
* Consistency for the default value
2021-11-08 11:39:30 -03:00
gdkchan and GitHub
81e9b86cdb
Ensure syncpoints are released and event handles closed on channel close ( #2812 )
2021-11-04 20:27:21 -03:00
gdkchan and GitHub
f78bcb8048
Clamp number of mipmap levels to avoid API errors due to invalid textures ( #2808 )
2021-11-03 20:58:24 -03:00
gdkchan and GitHub
e48530e9d9
When waiting on CPU, do not return a time out error from EventWait ( #2780 )
...
* When waiting on CPU, do not return a time out error from EventWait
* And while I'm at it...
2021-11-01 19:10:02 -03:00
gdkchan and GitHub
99445dd0a6
Add support for fragment shader interlock ( #2768 )
...
* Support coherent images
* Add support for fragment shader interlock
* Change to tree based match approach
* Refactor + check for branch targets and external registers
* Make detection more robust
* Use Intel fragment shader ordering if interlock is not available, use nothing if both are not available
* Remove unused field
2021-10-28 19:53:12 -03:00
gdkchan and GitHub
a7a40a77f2
Add support for the brazilian portuguese language code ( #2792 )
...
* Add support for the brazilian portuguese language code
* Fix error applet message
2021-10-28 23:06:45 +02:00
gdkchan and GitHub
04dfb86fde
Preserve image types for shader bindless surface instructions (.D variants) ( #2779 )
...
* Preserve image types for SULD/SUST .D variants
* Make format unknown for surface atomic if bindless and not sized
2021-10-24 19:40:20 -03:00
gdkchan and GitHub
0d174cbd45
EventWait should not signal the event when it returns Success ( #2739 )
...
* Fix race when EventWait is called and a wait is done on the CPU
* This is useless now
* Fix EventSignal
* Ensure the signal belongs to the current fence, to avoid stale signals
2021-10-19 17:25:32 -03:00
gdkchan and GitHub
63f1663fa9
Fix shader 8-bit and 16-bit STS/STG ( #2741 )
...
* Fix 8 and 16-bit STG
* Fix 8 and 16-bit STS
* Shader cache version bump
2021-10-18 20:24:15 -03:00
gdkchan and GitHub
d512ce122c
Initial tessellation shader support ( #2534 )
...
* Initial tessellation shader support
* Nits
* Re-arrange built-in table
* This is not needed anymore
* PR feedback
2021-10-18 18:38:04 -03:00
gdkchan and GitHub
7603dbe3c8
Add missing U8/S8 types from shader I2I instruction ( #2740 )
...
* Add missing U8/S8 types from shader I2I instruction
* Better names
* Fix dstIsSignedInt
2021-10-17 17:48:36 -03:00
gdkchan and GitHub
25fd4ef10e
Extend bindless elimination to work with masked and shifted handles ( #2727 )
...
* Extent bindless elimination to work with masked handles
* Extend bindless elimination to catch shifted pattern, refactor handle packing/unpacking
2021-10-17 17:28:18 -03:00
gdkchan and GitHub
d05573bfd1
Implement SHF (funnel shift) shader instruction ( #2702 )
...
* Implement SHF shader instruction
* Shader cache version bump
* Better name
2021-10-17 17:02:20 -03:00
gdkchan and GitHub
464a92d8a7
Force index buffer update for games using Vulkan ( #2726 )
2021-10-12 23:46:42 +02:00
gdkchan and GitHub
a7109c767b
Rewrite shader decoding stage ( #2698 )
...
* Rewrite shader decoding stage
* Fix P2R constant buffer encoding
* Fix PSET/PSETP
* PR feedback
* Log unimplemented shader instructions
* Implement NOP
* Remove using
* PR feedback
2021-10-12 22:35:31 +02:00
gdkchan and GitHub
11b437eafc
Fix DisplayInfo struct ( #2708 )
2021-10-05 12:38:44 -03:00
gdkchan and GitHub
75f4b1ff2d
Relax sampler pool requirement ( #2703 )
2021-10-04 14:35:28 -03:00
gdkchan and GitHub
f7aaea4300
Unref frames before decoding with FFMPEG ( #2704 )
2021-10-04 14:12:24 -03:00
gdkchan and GitHub
fd7567a6b5
Only make render target 2D textures layered if needed ( #2646 )
...
* Only make render target 2D textures layered if needed
* Shader cache version bump
* Ensure topology is updated on channel swap
2021-09-29 01:55:12 +02:00
gdkchan and GitHub
f4f496cb48
NVDEC (H264): Use separate contexts per channel and decode frames in DTS order ( #2671 )
...
* Use separate NVDEC contexts per channel (for FFMPEG)
* Remove NVDEC -> VIC frame override hack
* Add missing bottom_field_pic_order_in_frame_present_flag
* Make FFMPEG logging static
* nit: Remove empty lines
* New FFMPEG decoding approach -- call h264_decode_frame directly, trim surface cache to reduce memory usage
* Fix case
* Silence warnings
* PR feedback
* Per-decoder rather than per-codec ownership of surfaces on the cache
2021-09-29 00:43:40 +02:00
gdkchan and GitHub
83bdafccda
Share scales array for graphics and compute ( #2653 )
2021-09-28 23:52:27 +02:00
gdkchan and GitHub
f08a280ade
Use shader subgroup extensions if shader ballot is not supported ( #2627 )
...
* Use shader subgroup extensions if shader ballot is not supported
* Shader cache version bump + cleanup
* The type is still required on the table
2021-09-19 14:38:39 +02:00
gdkchan and GitHub
ac4ec1a015
Account for negative strides on DMA copy ( #2623 )
...
* Account for negative strides on DMA copy
* Should account for non-zero Y
2021-09-11 22:54:18 +02:00
gdkchan and GitHub
016fc64b3d
Implement GetVaRegions on nvservices ( #2621 )
...
* Implement GetVaRegions on nvservices
* This would just result in 0
2021-09-11 22:39:02 +02:00
gdkchan and GitHub
a4089fc878
Report 1080p resolution when in docked mode ( #2618 )
2021-09-11 22:24:10 +02:00
gdkchan and GitHub
416dc8fde4
Fix out-of-bounds shader thread shuffle ( #2605 )
...
* Fix out-of-bounds shader thread shuffle
* Shader cache version bump
2021-08-30 14:02:40 -03:00
gdkchan and GitHub
82cefc8dd3
Handle indirect draw counts with non-zero draw starts properly ( #2593 )
2021-08-29 16:52:38 -03:00
gdkchan and GitHub
ee1038e542
Initial support for shader attribute indexing ( #2546 )
...
* Initial support for shader attribute indexing
* Support output indexing too, other improvements
* Fix order
* Address feedback
2021-08-27 01:44:47 +02:00
gdkchan and GitHub
5b8ceb9173
Swap BGR565 components by changing the format ( #2577 )
2021-08-26 22:47:21 +02:00
gdkchan and GitHub
c702943af3
Swap BGR components for 16-bit BGR texture formats ( #2567 )
2021-08-20 18:26:25 -03:00
gdkchan and GitHub
680d3ed198
Enable transform feedback buffer flush ( #2552 )
2021-08-17 14:09:27 -03:00
gdkchan and GitHub
eb181425b1
Fix size of cached compute shaders ( #2548 )
...
* Fix size of cached compute shaders
* Missed one
2021-08-12 15:59:24 -03:00
gdkchan and GitHub
8196086f7a
Revert "Calculate vertex buffer sizes from index buffer ( #1663 )" ( #2544 )
...
This reverts commit 10d649e6d3 .
2021-08-11 22:13:48 -03:00
gdkchan and GitHub
0ba4ade8f1
Ensure render scale is initialized to 1 on the backend ( #2543 )
2021-08-11 19:44:41 -03:00
gdkchan and GitHub
3148c0c21c
Unify GpuAccessorBase and TextureDescriptorCapableGpuAccessor ( #2542 )
...
* Unify GpuAccessorBase and TextureDescriptorCapableGpuAccessor
* Shader cache version bump
2021-08-11 18:56:59 -03:00
gdkchan and GitHub
d44d8f2eb6
Workaround for cubemap view data upload bug on Intel ( #2539 )
...
* Workaround for cubemap view data upload bug on Intel
* Trigger CI
2021-08-11 23:19:28 +02:00