diff options
| author | riperiperi <rhy3756547@hotmail.com> | 2022-11-17 17:47:41 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-17 18:47:41 +0100 |
| commit | 33a4d7d1badbebd2dc05114ef17c85678baed843 (patch) | |
| tree | dbf7fd4adb24d59a5adceca6c0cc36099064f917 /Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs | |
| parent | 391e08dd27661b72674f91450ac00d1363938251 (diff) | |
GPU: Eliminate CB0 accesses when storage buffer accesses are resolved (#3847)
* Eliminate CB0 accesses
Still some work to do, decouple from hle?
* Forgot the important part somehow
* Fix and improve alignment test
* Address Feedback
* Remove some complexity when checking storage buffer alignment
* Update Ryujinx.Graphics.Shader/Translation/Optimizations/GlobalToStorage.cs
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs b/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs index b0727677..511f4c23 100644 --- a/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs +++ b/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs @@ -83,6 +83,11 @@ namespace Ryujinx.Graphics.Gpu.Shader public readonly bool HasConstantBufferDrawParameters; /// <summary> + /// Indicates that any storage buffer use is unaligned. + /// </summary> + public readonly bool HasUnalignedStorageBuffer; + + /// <summary> /// Creates a new GPU graphics state. /// </summary> /// <param name="earlyZForce">Early Z force enable</param> @@ -99,6 +104,7 @@ namespace Ryujinx.Graphics.Gpu.Shader /// <param name="alphaTestReference">When alpha test is enabled, indicates the value to compare with the fragment output alpha</param> /// <param name="attributeTypes">Type of the vertex attributes consumed by the shader</param> /// <param name="hasConstantBufferDrawParameters">Indicates that the draw is writing the base vertex, base instance and draw index to Constant Buffer 0</param> + /// <param name="hasUnalignedStorageBuffer">Indicates that any storage buffer use is unaligned</param> public GpuChannelGraphicsState( bool earlyZForce, PrimitiveTopology topology, @@ -113,7 +119,8 @@ namespace Ryujinx.Graphics.Gpu.Shader CompareOp alphaTestCompare, float alphaTestReference, ref Array32<AttributeType> attributeTypes, - bool hasConstantBufferDrawParameters) + bool hasConstantBufferDrawParameters, + bool hasUnalignedStorageBuffer) { EarlyZForce = earlyZForce; Topology = topology; @@ -129,6 +136,7 @@ namespace Ryujinx.Graphics.Gpu.Shader AlphaTestReference = alphaTestReference; AttributeTypes = attributeTypes; HasConstantBufferDrawParameters = hasConstantBufferDrawParameters; + HasUnalignedStorageBuffer = hasUnalignedStorageBuffer; } } }
\ No newline at end of file |
