1
0
Fork 0
mirror of https://github.com/Ryujinx/Ryujinx.git synced 2024-12-18 22:42:06 +00:00
Ryujinx/src/Ryujinx.Graphics.GAL/IRenderer.cs
gdkchan 9c6071a645
Move support buffer update out of the backends (#5411)
* Move support buffer update out of the backends

* Fix render scale init and remove redundant state from SupportBufferUpdater

* Stop passing texture scale to the backends

* XML docs for SupportBufferUpdater
2023-07-11 14:07:41 -03:00

68 lines
1.9 KiB
C#

using Ryujinx.Common.Configuration;
using System;
using System.Threading;
namespace Ryujinx.Graphics.GAL
{
public interface IRenderer : IDisposable
{
event EventHandler<ScreenCaptureImageInfo> ScreenCaptured;
bool PreferThreading { get; }
IPipeline Pipeline { get; }
IWindow Window { get; }
void BackgroundContextAction(Action action, bool alwaysBackground = false);
BufferHandle CreateBuffer(int size, BufferHandle storageHint);
BufferHandle CreateBuffer(int size)
{
return CreateBuffer(size, BufferHandle.Null);
}
BufferHandle CreateBuffer(nint pointer, int size);
BufferHandle CreateBuffer(int size, BufferAccess access);
IProgram CreateProgram(ShaderSource[] shaders, ShaderInfo info);
ISampler CreateSampler(SamplerCreateInfo info);
ITexture CreateTexture(TextureCreateInfo info);
bool PrepareHostMapping(nint address, ulong size);
void CreateSync(ulong id, bool strict);
void DeleteBuffer(BufferHandle buffer);
PinnedSpan<byte> GetBufferData(BufferHandle buffer, int offset, int size);
Capabilities GetCapabilities();
ulong GetCurrentSync();
HardwareInfo GetHardwareInfo();
IProgram LoadProgramBinary(byte[] programBinary, bool hasFragmentShader, ShaderInfo info);
void SetBufferData(BufferHandle buffer, int offset, ReadOnlySpan<byte> data);
void UpdateCounters();
void PreFrame();
ICounterEvent ReportCounter(CounterType type, EventHandler<ulong> resultHandler, float divisor, bool hostReserved);
void ResetCounter(CounterType type);
void RunLoop(ThreadStart gpuLoop)
{
gpuLoop();
}
void WaitSync(ulong id);
void Initialize(GraphicsDebugLevel logLevel);
void SetInterruptAction(Action<Action> interruptAction);
void Screenshot();
}
}