e18d258fa0
* WIP texture pre-flush Improve performance of TextureView GetData to buffer Fix copy/sync ordering Fix minor bug Make this actually work WIP host mapping stuff * Fix usage flags * message * Cleanup 1 * Fix rebase * Fix * Improve pre-flush rules * Fix pre-flush * A lot of cleanup * Use the host memory bits * Select the correct memory type * Cleanup TextureGroupHandle * Missing comment * Remove debugging logs * Revert BufferHandle _value access modifier * One interrupt action at a time. * Support D32S8 to D24S8 conversion, safeguards * Interrupt cannot happen in sync handle's lock Waitable needs to be checked twice now, but this should stop it from deadlocking. * Remove unused using * Address some feedback * Address feedback * Address more feedback * Address more feedback * Improve sync rules Should allow for faster sync in some cases.
68 lines
1.9 KiB
C#
68 lines
1.9 KiB
C#
using Ryujinx.Common.Configuration;
|
|
using System;
|
|
|
|
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, float scale);
|
|
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, bool hostReserved);
|
|
|
|
void ResetCounter(CounterType type);
|
|
|
|
void RunLoop(Action gpuLoop)
|
|
{
|
|
gpuLoop();
|
|
}
|
|
|
|
void WaitSync(ulong id);
|
|
|
|
void Initialize(GraphicsDebugLevel logLevel);
|
|
|
|
void SetInterruptAction(Action<Action> interruptAction);
|
|
|
|
void Screenshot();
|
|
}
|
|
}
|