Files
PS2Recomp/ps2xRuntime/include/runtime/gs/gs_backend.h
Ran-j e27a658b32 feat: wip performance patch
feat: added parallel gs
feat: optmized IOP emulator
feat: added guest and game fps count
feat: small vu1 optmization and guards
2026-09-25 14:29:05 -03:00

43 lines
1.6 KiB
C++

#pragma once
#include "runtime/gs/gs_types.h"
#include <cstdint>
#include <vector>
struct GSDebugSnapshot;
class GSRasterBackend
{
public:
virtual ~GSRasterBackend() = default;
virtual void Initialize(uint8_t *vram, uint32_t vramSize) = 0;
virtual void Reset() = 0;
virtual bool UsesRawCommands() const { return false; }
virtual void ProcessGIF(uint32_t, const uint8_t *, uint32_t) {}
virtual void WriteRegisterRaw(uint8_t, uint64_t) {}
virtual void ReadRegisterState(GSDebugSnapshot &) const {}
virtual uint64_t GetReadbackCount() const { return 0; }
virtual void Submit(const GSPrimitiveBatch &batch) = 0;
virtual void LoadClut(const GSTex0Reg &tex0, const GSTexClutReg &texclut) = 0;
virtual void BeginTransfer(const GSTransferCommand &command) = 0;
virtual void UploadImage(const uint8_t *data, uint32_t sizeBytes) = 0;
virtual void Flush() = 0;
virtual void TextureFlush() = 0;
virtual void Sync(GSSyncReason reason) = 0;
virtual PresentationFrame Present(const GSPresentationRequest &request) = 0;
virtual bool ClearFramebuffer(const GSContext &context, uint32_t rgba) = 0;
virtual uint32_t ConsumeLocalToHostBytes(uint8_t *dst, uint32_t maxBytes) = 0;
virtual uint32_t ReadVram(uint32_t psm, uint32_t base, uint32_t bw, uint32_t x, uint32_t y) const = 0;
virtual void WriteVram(uint32_t psm, uint32_t base, uint32_t bw, uint32_t x, uint32_t y, uint32_t value) = 0;
virtual void SnapshotVram(std::vector<uint8_t> &out) const = 0;
virtual GSTransferSnapshot GetTransferSnapshot() const = 0;
};