mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2025-04-17 14:34:05 -05:00

* Implement storage buffer operations using new Load/Store instruction * Extend GenerateMultiTargetStorageOp to also match access with constant offset, and log and comments * Remove now unused code * Catch more complex cases of global memory usage * Shader cache version bump * Extend global access elimination to work with more shared memory cases * Change alignment requirement from 16 bytes to 8 bytes, handle cases where we need more than 16 storage buffers * Tweak preferencing to catch more cases * Enable CB0 elimination even when host storage buffer alignment is > 16 (for Intel) * Fix storage buffer bindings * Simplify some code * Shader cache version bump * Fix typo * Extend global memory elimination to handle shared memory with multiple possible offsets and local memory
29 lines
968 B
C#
29 lines
968 B
C#
using System.Collections.Generic;
|
|
|
|
namespace Ryujinx.Graphics.Shader.StructuredIr
|
|
{
|
|
class ShaderProperties
|
|
{
|
|
private readonly Dictionary<int, BufferDefinition> _constantBuffers;
|
|
private readonly Dictionary<int, BufferDefinition> _storageBuffers;
|
|
|
|
public IReadOnlyDictionary<int, BufferDefinition> ConstantBuffers => _constantBuffers;
|
|
public IReadOnlyDictionary<int, BufferDefinition> StorageBuffers => _storageBuffers;
|
|
|
|
public ShaderProperties()
|
|
{
|
|
_constantBuffers = new Dictionary<int, BufferDefinition>();
|
|
_storageBuffers = new Dictionary<int, BufferDefinition>();
|
|
}
|
|
|
|
public void AddConstantBuffer(int binding, BufferDefinition definition)
|
|
{
|
|
_constantBuffers[binding] = definition;
|
|
}
|
|
|
|
public void AddStorageBuffer(int binding, BufferDefinition definition)
|
|
{
|
|
_storageBuffers[binding] = definition;
|
|
}
|
|
}
|
|
} |