| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System;
- namespace Ryujinx.Graphics.Vic.Image
- {
- ref struct RentedBuffer
- {
- public static RentedBuffer Empty => new RentedBuffer(Span<byte>.Empty, -1);
- public Span<byte> Data;
- public int Index;
- public RentedBuffer(Span<byte> data, int index)
- {
- Data = data;
- Index = index;
- }
- public void Return(BufferPool<byte> pool)
- {
- if (Index != -1)
- {
- pool.Return(Index);
- }
- }
- }
- ref struct InputSurface
- {
- public ReadOnlySpan<byte> Buffer0;
- public ReadOnlySpan<byte> Buffer1;
- public ReadOnlySpan<byte> Buffer2;
- public int Buffer0Index;
- public int Buffer1Index;
- public int Buffer2Index;
- public int Width;
- public int Height;
- public int UvWidth;
- public int UvHeight;
- public void Initialize()
- {
- Buffer0Index = -1;
- Buffer1Index = -1;
- Buffer2Index = -1;
- }
- public void SetBuffer0(RentedBuffer buffer)
- {
- Buffer0 = buffer.Data;
- Buffer0Index = buffer.Index;
- }
- public void SetBuffer1(RentedBuffer buffer)
- {
- Buffer1 = buffer.Data;
- Buffer1Index = buffer.Index;
- }
- public void SetBuffer2(RentedBuffer buffer)
- {
- Buffer2 = buffer.Data;
- Buffer2Index = buffer.Index;
- }
- public void Return(BufferPool<byte> pool)
- {
- if (Buffer0Index != -1)
- {
- pool.Return(Buffer0Index);
- }
- if (Buffer1Index != -1)
- {
- pool.Return(Buffer1Index);
- }
- if (Buffer2Index != -1)
- {
- pool.Return(Buffer2Index);
- }
- }
- }
- }
|