summaryrefslogtreecommitdiff
path: root/src/render/Texture.hpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2026-03-29 00:41:45 +0300
committerGitHub <noreply@github.com>2026-03-28 21:41:45 +0000
commit38a7f03cf0e5ee116794a78581634ba3dab508fa (patch)
tree969891411b2af4e437a183004018cfc359a3057e /src/render/Texture.hpp
parentef2e8dfd5f7e6ee55fa7bc48e44974e64938d14a (diff)
renderer: refactor part 7: api fixes (#13631)
Part 7 of ujin's refactors --------- Co-authored-by: Vaxry <vaxry@vaxry.net>
Diffstat (limited to 'src/render/Texture.hpp')
-rw-r--r--src/render/Texture.hpp102
1 files changed, 54 insertions, 48 deletions
diff --git a/src/render/Texture.hpp b/src/render/Texture.hpp
index 38c3ff01..473e5ad9 100644
--- a/src/render/Texture.hpp
+++ b/src/render/Texture.hpp
@@ -1,6 +1,7 @@
#pragma once
#include "../defines.hpp"
+#include "../helpers/cm/ColorManagement.hpp"
#include <aquamarine/buffer/Buffer.hpp>
#include <hyprutils/math/Misc.hpp>
#include <span>
@@ -8,51 +9,56 @@
class IHLBuffer;
HYPRUTILS_FORWARD(Math, CRegion);
-enum eTextureType : int8_t {
- TEXTURE_INVALID = -1, // Invalid
- TEXTURE_RGBA = 0, // 4 channels
- TEXTURE_RGBX, // discard A
- TEXTURE_3D_LUT, // 3D LUT
- TEXTURE_EXTERNAL, // EGLImage
-};
-
-class ITexture {
- public:
- ITexture(ITexture&) = delete;
- ITexture(ITexture&&) = delete;
- ITexture(const ITexture&&) = delete;
- ITexture(const ITexture&) = delete;
-
- virtual ~ITexture() = default;
-
- virtual void setTexParameter(GLenum pname, GLint param) = 0;
- virtual void allocate(const Vector2D& size, uint32_t drmFormat = 0) = 0;
- virtual void update(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, const CRegion& damage) = 0;
- virtual void bind() {};
- virtual void unbind() {};
- virtual bool ok();
- virtual bool isDMA();
-
- const std::vector<uint8_t>& dataCopy();
-
- eTextureType m_type = TEXTURE_RGBA;
- Vector2D m_size = {};
- eTransform m_transform = HYPRUTILS_TRANSFORM_NORMAL;
- bool m_opaque = false;
-
- uint32_t m_drmFormat = 0; // for shm
- bool m_isSynchronous = false;
-
- // TODO move to GLTexture
- GLuint m_texID = 0;
- GLenum magFilter = GL_LINEAR; // useNearestNeighbor overwrites these
- GLenum minFilter = GL_LINEAR;
-
- protected:
- ITexture() = default;
- ITexture(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, const Vector2D& size, bool keepDataCopy = false, bool opaque = false);
- ITexture(std::span<const float> lut3D, size_t N);
-
- bool m_keepDataCopy = false;
- std::vector<uint8_t> m_dataCopy;
-};
+namespace Render {
+ enum eTextureType : int8_t {
+ TEXTURE_INVALID = -1, // Invalid
+ TEXTURE_RGBA = 0, // 4 channels
+ TEXTURE_RGBX, // discard A
+ TEXTURE_3D_LUT, // 3D LUT
+ TEXTURE_EXTERNAL, // EGLImage
+ };
+
+ class ITexture {
+ public:
+ ITexture(ITexture&) = delete;
+ ITexture(ITexture&&) = delete;
+ ITexture(const ITexture&&) = delete;
+ ITexture(const ITexture&) = delete;
+
+ virtual ~ITexture() = default;
+
+ virtual void setTexParameter(GLenum pname, GLint param) = 0;
+ virtual void allocate(const Vector2D& size, uint32_t drmFormat = 0) = 0;
+ virtual void update(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, const CRegion& damage) = 0;
+ virtual void bind() {};
+ virtual void unbind() {};
+ virtual bool ok();
+ virtual bool isDMA();
+
+ const std::vector<uint8_t>& dataCopy();
+
+ eTextureType m_type = TEXTURE_RGBA;
+ Vector2D m_size = {};
+ eTransform m_transform = HYPRUTILS_TRANSFORM_NORMAL;
+ bool m_opaque = false;
+
+ uint32_t m_drmFormat = 0; // for shm
+ bool m_isSynchronous = false;
+
+ // CM
+ NColorManagement::PImageDescription m_imageDescription;
+
+ // TODO move to GLTexture
+ GLuint m_texID = 0;
+ GLenum magFilter = GL_LINEAR; // useNearestNeighbor overwrites these
+ GLenum minFilter = GL_LINEAR;
+
+ protected:
+ ITexture() = default;
+ ITexture(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, const Vector2D& size, bool keepDataCopy = false, bool opaque = false);
+ ITexture(std::span<const float> lut3D, size_t N);
+
+ bool m_keepDataCopy = false;
+ std::vector<uint8_t> m_dataCopy;
+ };
+}