From 47bc69b750b1a78d11b5831aa9db6c418b2bd4e5 Mon Sep 17 00:00:00 2001 From: LTDCrissOK Date: Sat, 7 Nov 2026 15:38:21 -0300 Subject: [PATCH] Add GSOpenGLBackend class for OpenGL integration Implement GSOpenGLBackend class for OpenGL ES 3.2 support. --- .../include/runtime/gs/gs_opengl_backend.h | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 ps2xRuntime/include/runtime/gs/gs_opengl_backend.h diff --git a/ps2xRuntime/include/runtime/gs/gs_opengl_backend.h b/ps2xRuntime/include/runtime/gs/gs_opengl_backend.h new file mode 100644 index 0000000000..aa543b9eba --- /dev/null +++ b/ps2xRuntime/include/runtime/gs/gs_opengl_backend.h @@ -0,0 +1,43 @@ +#pragma once + +#include "runtime/gs/gs_backend.h" +#include + +class GSCpuBackend; + +// Fase de integración: comprueba que existe un contexto OpenGL ES 3.2 +// y conserva el comportamiento GS actual delegando las operaciones al backend CPU. +// IMPORTANTE: todavía no rasteriza las primitivas GS en la GPU. +class GSOpenGLBackend final : public GSRasterBackend +{ +public: + GSOpenGLBackend(); + ~GSOpenGLBackend() override; + + bool IsOpenGLES32Available() const; + const char* GetOpenGLVersion() const; + + void Initialize(uint8_t* vram, uint32_t vramSize) override; + void Reset() override; + void Submit(const GSPrimitiveBatch& batch) override; + void LoadClut(const GSTex0Reg& tex0, const GSTexClutReg& texclut) override; + void BeginTransfer(const GSTransferCommand& command) override; + void UploadImage(const uint8_t* data, uint32_t sizeBytes) override; + void Flush() override; + void TextureFlush() override; + void Sync(GSSyncReason reason) override; + PresentationFrame Present(const GSPresentationRequest& request) override; + bool ClearFramebuffer(const GSContext& context, uint32_t rgba) override; + uint32_t ConsumeLocalToHostBytes(uint8_t* dst, uint32_t maxBytes) override; + uint32_t ReadVram(uint32_t psm, uint32_t base, uint32_t bw, + uint32_t x, uint32_t y) const override; + void WriteVram(uint32_t psm, uint32_t base, uint32_t bw, + uint32_t x, uint32_t y, uint32_t value) override; + void SnapshotVram(std::vector& out) const override; + GSTransferSnapshot GetTransferSnapshot() const override; + +private: + std::unique_ptr m_cpu; + bool m_gles32Available = false; + char m_glVersion[256]{}; +};