ASTC optimizations (#845)
* ASTC optimizations * Move code to Ryujinx.Common * Support 3D textures * Address feedback * Remove ASTC logging * Use stackalloc instead of a Buffer20 struct * Code style and cleanup * Respond to feedback * Rearrange public/private property ordering
This commit is contained in:
parent
947e14d3be
commit
d1ab9fb42c
12 changed files with 1009 additions and 599 deletions
31
Ryujinx.Graphics.Texture/Astc/IntegerSequence.cs
Normal file
31
Ryujinx.Graphics.Texture/Astc/IntegerSequence.cs
Normal file
|
@ -0,0 +1,31 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Ryujinx.Graphics.Texture.Astc
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential, Size = IntegerEncoded.StructSize * Capacity + sizeof(int))]
|
||||
internal struct IntegerSequence
|
||||
{
|
||||
private const int Capacity = 100;
|
||||
|
||||
private int _length;
|
||||
private IntegerEncoded _start;
|
||||
|
||||
public Span<IntegerEncoded> List => MemoryMarshal.CreateSpan(ref _start, _length);
|
||||
|
||||
public void Reset() => _length = 0;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Add(ref IntegerEncoded item)
|
||||
{
|
||||
Debug.Assert(_length < Capacity);
|
||||
|
||||
int oldLength = _length;
|
||||
_length++;
|
||||
|
||||
List[oldLength] = item;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue