summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorLee Bousfield <ljbousfield@gmail.com>2025-03-22 11:13:44 -0500
committerGitHub <noreply@github.com>2025-03-22 17:13:44 +0100
commit6384f4acf4e2988bcb35d3dfc5821f07867a34d0 (patch)
tree2da8d2275cc4acc435906c7fa84956ae2b17ade6 /src/render
parent4600043a498b015360a0f2b6f682ae82aff1b198 (diff)
core/compositor: Correctly track SHM buffer damage (#9678)
Diffstat (limited to 'src/render')
-rw-r--r--src/render/Texture.cpp5
-rw-r--r--src/render/Texture.hpp17
2 files changed, 12 insertions, 10 deletions
diff --git a/src/render/Texture.cpp b/src/render/Texture.cpp
index 95efb15e..fd5b682e 100644
--- a/src/render/Texture.cpp
+++ b/src/render/Texture.cpp
@@ -64,8 +64,9 @@ void CTexture::createFromShm(uint32_t drmFormat, uint8_t* pixels, uint32_t strid
const auto format = NFormatUtils::getPixelFormatFromDRM(drmFormat);
ASSERT(format);
- m_iType = format->withAlpha ? TEXTURE_RGBA : TEXTURE_RGBX;
- m_vSize = size_;
+ m_iType = format->withAlpha ? TEXTURE_RGBA : TEXTURE_RGBX;
+ m_vSize = size_;
+ m_isSynchronous = true;
allocate();
GLCALL(glBindTexture(GL_TEXTURE_2D, m_iTexID));
diff --git a/src/render/Texture.hpp b/src/render/Texture.hpp
index 60134707..039b5247 100644
--- a/src/render/Texture.hpp
+++ b/src/render/Texture.hpp
@@ -35,14 +35,15 @@ class CTexture {
void update(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, const CRegion& damage);
const std::vector<uint8_t>& dataCopy();
- eTextureType m_iType = TEXTURE_RGBA;
- GLenum m_iTarget = GL_TEXTURE_2D;
- GLuint m_iTexID = 0;
- Vector2D m_vSize = {};
- void* m_pEglImage = nullptr;
- eTransform m_eTransform = HYPRUTILS_TRANSFORM_NORMAL;
- bool m_bOpaque = false;
- uint32_t m_iDrmFormat = 0; // for shm
+ eTextureType m_iType = TEXTURE_RGBA;
+ GLenum m_iTarget = GL_TEXTURE_2D;
+ GLuint m_iTexID = 0;
+ Vector2D m_vSize = {};
+ void* m_pEglImage = nullptr;
+ eTransform m_eTransform = HYPRUTILS_TRANSFORM_NORMAL;
+ bool m_bOpaque = false;
+ uint32_t m_iDrmFormat = 0; // for shm
+ bool m_isSynchronous = false;
private:
void createFromShm(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, const Vector2D& size);