mirror of
https://git.743378673.xyz/MeloNX/MeloNX.git
synced 2025-06-28 03:16:23 +02: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
44 lines
No EOL
1.3 KiB
C#
44 lines
No EOL
1.3 KiB
C#
namespace Ryujinx.Graphics.Shader.IntermediateRepresentation
|
|
{
|
|
enum StorageKind
|
|
{
|
|
None,
|
|
Input,
|
|
InputPerPatch,
|
|
Output,
|
|
OutputPerPatch,
|
|
ConstantBuffer,
|
|
StorageBuffer,
|
|
LocalMemory,
|
|
SharedMemory,
|
|
GlobalMemory,
|
|
// TODO: Remove those and store type as a field on the Operation class itself.
|
|
GlobalMemoryS8,
|
|
GlobalMemoryS16,
|
|
GlobalMemoryU8,
|
|
GlobalMemoryU16
|
|
}
|
|
|
|
static class StorageKindExtensions
|
|
{
|
|
public static bool IsInputOrOutput(this StorageKind storageKind)
|
|
{
|
|
return storageKind == StorageKind.Input ||
|
|
storageKind == StorageKind.InputPerPatch ||
|
|
storageKind == StorageKind.Output ||
|
|
storageKind == StorageKind.OutputPerPatch;
|
|
}
|
|
|
|
public static bool IsOutput(this StorageKind storageKind)
|
|
{
|
|
return storageKind == StorageKind.Output ||
|
|
storageKind == StorageKind.OutputPerPatch;
|
|
}
|
|
|
|
public static bool IsPerPatch(this StorageKind storageKind)
|
|
{
|
|
return storageKind == StorageKind.InputPerPatch ||
|
|
storageKind == StorageKind.OutputPerPatch;
|
|
}
|
|
}
|
|
} |