summaryrefslogtreecommitdiff
path: root/src/render/GLRenderer.hpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2026-03-07 21:21:23 +0300
committerGitHub <noreply@github.com>2026-03-07 18:21:23 +0000
commit02f30ea15b349d1ed98b608ed06ec88c834592dd (patch)
tree5148a3935c43b64f209f2b13e2a0b1bbe987444b /src/render/GLRenderer.hpp
parentb227efc8492468cc925014a6c8446a3d044b01e8 (diff)
renderer: refactor gl renderer (#13488)
Diffstat (limited to 'src/render/GLRenderer.hpp')
-rw-r--r--src/render/GLRenderer.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/render/GLRenderer.hpp b/src/render/GLRenderer.hpp
new file mode 100644
index 00000000..1446e9b2
--- /dev/null
+++ b/src/render/GLRenderer.hpp
@@ -0,0 +1,52 @@
+#pragma once
+
+#include "Renderer.hpp"
+
+class CHyprGLRenderer : public IHyprRenderer {
+ public:
+ CHyprGLRenderer();
+
+ void endRender(const std::function<void()>& renderingDoneCallback = {}) override;
+ SP<ITexture> createStencilTexture(const int width, const int height) override;
+ SP<ITexture> createTexture(bool opaque = false) override;
+ SP<ITexture> createTexture(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, const Vector2D& size, bool keepDataCopy = false, bool opaque = false) override;
+ SP<ITexture> createTexture(const Aquamarine::SDMABUFAttrs&, bool opaque = false) override;
+ SP<ITexture> createTexture(const int width, const int height, unsigned char* const data) override;
+ SP<ITexture> createTexture(cairo_surface_t* cairo) override;
+ SP<ITexture> createTexture(std::span<const float> lut3D, size_t N) override;
+ bool explicitSyncSupported() override;
+ std::vector<SDRMFormat> getDRMFormats() override;
+ std::vector<uint64_t> getDRMFormatModifiers(DRMFormat format) override;
+ SP<IFramebuffer> createFB(const std::string& name = "") override;
+ void disableScissor() override;
+ void blend(bool enabled) override;
+ void drawShadow(const CBox& box, int round, float roundingPower, int range, CHyprColor color, float a) override;
+ SP<ITexture> blurFramebuffer(SP<IFramebuffer> source, float a, CRegion* originalDamage) override;
+ void setViewport(int x, int y, int width, int height) override;
+ bool reloadShaders(const std::string& path = "") override;
+
+ void unsetEGL();
+
+ private:
+ void renderOffToMain(IFramebuffer* off) override;
+ SP<IRenderbuffer> getOrCreateRenderbufferInternal(SP<Aquamarine::IBuffer> buffer, uint32_t fmt) override;
+ bool beginRenderInternal(PHLMONITOR pMonitor, CRegion& damage, bool simple = false) override;
+ bool beginFullFakeRenderInternal(PHLMONITOR pMonitor, CRegion& damage, SP<IFramebuffer> fb, bool simple = false) override;
+ void initRender() override;
+ bool initRenderBuffer(SP<Aquamarine::IBuffer> buffer, uint32_t fmt) override;
+
+ void draw(CBorderPassElement* element, const CRegion& damage) override;
+ void draw(CClearPassElement* element, const CRegion& damage) override;
+ void draw(CFramebufferElement* element, const CRegion& damage) override;
+ void draw(CPreBlurElement* element, const CRegion& damage) override;
+ void draw(CRectPassElement* element, const CRegion& damage) override;
+ void draw(CShadowPassElement* element, const CRegion& damage) override;
+ void draw(CTexPassElement* element, const CRegion& damage) override;
+ void draw(CTextureMatteElement* element, const CRegion& damage) override;
+
+ SP<ITexture> getBlurTexture(PHLMONITORREF pMonitor) override;
+
+ SP<IRenderbuffer> m_currentRenderbuffer = nullptr;
+
+ friend class CHyprOpenGLImpl;
+};