diff --git a/src/helpers/Format.cpp b/src/helpers/Format.cpp index 7660934e5..4ba4c4fed 100644 --- a/src/helpers/Format.cpp +++ b/src/helpers/Format.cpp @@ -6,223 +6,6 @@ #include #include -inline const std::vector GLES3_FORMATS = { - { - .drmFormat = DRM_FORMAT_ARGB8888, - .glInternalFormat = GL_RGBA8, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_BYTE, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_XRGB8888, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_BGRA}, - }, - { - .drmFormat = DRM_FORMAT_XRGB8888, - .glInternalFormat = GL_RGBA8, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_BYTE, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_XRGB8888, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_BGR1}, - }, - { - .drmFormat = DRM_FORMAT_XBGR8888, - .glInternalFormat = GL_RGBA8, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_BYTE, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_XBGR8888, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_RGB1}, - }, - { - .drmFormat = DRM_FORMAT_ABGR8888, - .glInternalFormat = GL_RGBA8, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_BYTE, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_XBGR8888, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_RGBA}, - }, - { - .drmFormat = DRM_FORMAT_BGR888, - .glInternalFormat = GL_RGB8, - .glFormat = GL_RGB, - .glType = GL_UNSIGNED_BYTE, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_BGR888, - .bytesPerBlock = 3, - .swizzle = {SWIZZLE_RGB1}, - }, - { - .drmFormat = DRM_FORMAT_RGBX4444, - .glInternalFormat = GL_RGBA4, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_SHORT_4_4_4_4, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_RGBX4444, - .bytesPerBlock = 2, - .swizzle = {SWIZZLE_RGB1}, - }, - { - .drmFormat = DRM_FORMAT_RGBA4444, - .glInternalFormat = GL_RGBA4, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_SHORT_4_4_4_4, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_RGBX4444, - .bytesPerBlock = 2, - .swizzle = {SWIZZLE_RGBA}, - }, - { - .drmFormat = DRM_FORMAT_RGBX5551, - .glInternalFormat = GL_RGB5_A1, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_SHORT_5_5_5_1, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_RGBX5551, - .bytesPerBlock = 2, - .swizzle = {SWIZZLE_RGB1}, - }, - { - .drmFormat = DRM_FORMAT_RGBA5551, - .glInternalFormat = GL_RGB5_A1, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_SHORT_5_5_5_1, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_RGBX5551, - .bytesPerBlock = 2, - .swizzle = {SWIZZLE_RGBA}, - }, - { - .drmFormat = DRM_FORMAT_RGB565, - .glInternalFormat = GL_RGB565, - .glFormat = GL_RGB, - .glType = GL_UNSIGNED_SHORT_5_6_5, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_RGB565, - .bytesPerBlock = 2, - .swizzle = {SWIZZLE_RGB1}, - }, - { - .drmFormat = DRM_FORMAT_XBGR2101010, - .glInternalFormat = GL_RGB10_A2, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_XBGR2101010, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_RGB1}, - }, - { - .drmFormat = DRM_FORMAT_ABGR2101010, - .glInternalFormat = GL_RGB10_A2, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_XBGR2101010, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_RGBA}, - }, - { - .drmFormat = DRM_FORMAT_XRGB2101010, - .glInternalFormat = GL_RGB10_A2, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_XRGB2101010, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_BGR1}, - }, - { - .drmFormat = DRM_FORMAT_ARGB2101010, - .glInternalFormat = GL_RGB10_A2, - .glFormat = GL_RGBA, - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_XRGB2101010, - .bytesPerBlock = 4, - .swizzle = {SWIZZLE_BGRA}, - }, - { - .drmFormat = DRM_FORMAT_XBGR16161616F, - .glInternalFormat = GL_RGBA16F, - .glFormat = GL_RGBA, - .glType = GL_HALF_FLOAT, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_XBGR16161616F, - .bytesPerBlock = 8, - .swizzle = {SWIZZLE_RGB1}, - }, - { - .drmFormat = DRM_FORMAT_ABGR16161616F, - .glInternalFormat = GL_RGBA16F, - .glFormat = GL_RGBA, - .glType = GL_HALF_FLOAT, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_XBGR16161616F, - .bytesPerBlock = 8, - .swizzle = {SWIZZLE_RGBA}, - }, - { - .drmFormat = DRM_FORMAT_XBGR16161616, - .glInternalFormat = GL_RGBA16UI, - .glFormat = GL_RGBA_INTEGER, - .glType = GL_UNSIGNED_SHORT, - .withAlpha = false, - .alphaStripped = DRM_FORMAT_XBGR16161616, - .bytesPerBlock = 8, - .swizzle = {SWIZZLE_RGBA}, - }, - { - .drmFormat = DRM_FORMAT_ABGR16161616, - .glInternalFormat = GL_RGBA16UI, - .glFormat = GL_RGBA_INTEGER, - .glType = GL_UNSIGNED_SHORT, - .withAlpha = true, - .alphaStripped = DRM_FORMAT_XBGR16161616, - .bytesPerBlock = 8, - .swizzle = {SWIZZLE_RGBA}, - }, - { - .drmFormat = DRM_FORMAT_YVYU, - .bytesPerBlock = 4, - .blockSize = {2, 1}, - }, - { - .drmFormat = DRM_FORMAT_VYUY, - .bytesPerBlock = 4, - .blockSize = {2, 1}, - }, - { - .drmFormat = DRM_FORMAT_R8, - .glInternalFormat = GL_R8, - .glFormat = GL_RED, - .glType = GL_UNSIGNED_BYTE, - .bytesPerBlock = 1, - .swizzle = {SWIZZLE_R001}, - }, - { - .drmFormat = DRM_FORMAT_GR88, - .glInternalFormat = GL_RG8, - .glFormat = GL_RG, - .glType = GL_UNSIGNED_BYTE, - .bytesPerBlock = 2, - .swizzle = {SWIZZLE_RG01}, - }, - { - .drmFormat = DRM_FORMAT_RGB888, - .glInternalFormat = GL_RGB8, - .glFormat = GL_RGB, - .glType = GL_UNSIGNED_BYTE, - .bytesPerBlock = 3, - .swizzle = {SWIZZLE_BGR1}, - }, -}; - SHMFormat NFormatUtils::drmToShm(DRMFormat drm) { switch (drm) { case DRM_FORMAT_XRGB8888: return WL_SHM_FORMAT_XRGB8888; @@ -243,24 +26,6 @@ DRMFormat NFormatUtils::shmToDRM(SHMFormat shm) { return shm; } -const SPixelFormat* NFormatUtils::getPixelFormatFromDRM(DRMFormat drm) { - for (auto const& fmt : GLES3_FORMATS) { - if (fmt.drmFormat == drm) - return &fmt; - } - - return nullptr; -} - -const SPixelFormat* NFormatUtils::getPixelFormatFromGL(uint32_t glFormat, uint32_t glType, bool alpha) { - for (auto const& fmt : GLES3_FORMATS) { - if (fmt.glFormat == sc(glFormat) && fmt.glType == sc(glType) && fmt.withAlpha == alpha) - return &fmt; - } - - return nullptr; -} - bool NFormatUtils::isFormatYUV(uint32_t drmFormat) { switch (drmFormat) { case DRM_FORMAT_YUYV: @@ -281,22 +46,6 @@ bool NFormatUtils::isFormatYUV(uint32_t drmFormat) { } } -bool NFormatUtils::isFormatOpaque(DRMFormat drm) { - const auto FMT = NFormatUtils::getPixelFormatFromDRM(drm); - if (!FMT) - return false; - - return !FMT->withAlpha; -} - -int NFormatUtils::pixelsPerBlock(const SPixelFormat* const fmt) { - return fmt->blockSize.x * fmt->blockSize.y > 0 ? fmt->blockSize.x * fmt->blockSize.y : 1; -} - -int NFormatUtils::minStride(const SPixelFormat* const fmt, int32_t width) { - return std::ceil((width * fmt->bytesPerBlock) / pixelsPerBlock(fmt)); -} - std::string NFormatUtils::drmFormatName(DRMFormat drm) { auto n = drmGetFormatName(drm); diff --git a/src/helpers/Format.hpp b/src/helpers/Format.hpp index 02925e225..e0dfcd3a4 100644 --- a/src/helpers/Format.hpp +++ b/src/helpers/Format.hpp @@ -9,51 +9,13 @@ using DRMFormat = uint32_t; using SHMFormat = uint32_t; -#define SWIZZLE_A1GB {GL_ALPHA, GL_ONE, GL_GREEN, GL_BLUE} -#define SWIZZLE_ABG1 {GL_ALPHA, GL_BLUE, GL_GREEN, GL_ONE} -#define SWIZZLE_ABGR {GL_ALPHA, GL_BLUE, GL_GREEN, GL_RED} -#define SWIZZLE_ARGB {GL_ALPHA, GL_RED, GL_GREEN, GL_BLUE} -#define SWIZZLE_B1RG {GL_BLUE, GL_ONE, GL_RED, GL_GREEN} -#define SWIZZLE_BARG {GL_BLUE, GL_ALPHA, GL_RED, GL_GREEN} -#define SWIZZLE_BGR1 {GL_BLUE, GL_GREEN, GL_RED, GL_ONE} -#define SWIZZLE_BGRA {GL_BLUE, GL_GREEN, GL_RED, GL_ALPHA} -#define SWIZZLE_G1AB {GL_GREEN, GL_ONE, GL_ALPHA, GL_BLUE} -#define SWIZZLE_GBA1 {GL_GREEN, GL_BLUE, GL_ALPHA, GL_ONE} -#define SWIZZLE_GBAR {GL_GREEN, GL_BLUE, GL_ALPHA, GL_RED} -#define SWIZZLE_GRAB {GL_GREEN, GL_RED, GL_ALPHA, GL_BLUE} -#define SWIZZLE_R001 {GL_RED, GL_ZERO, GL_ZERO, GL_ONE} -#define SWIZZLE_R1BG {GL_RED, GL_ONE, GL_BLUE, GL_GREEN} -#define SWIZZLE_RABG {GL_RED, GL_ALPHA, GL_BLUE, GL_GREEN} -#define SWIZZLE_RG01 {GL_RED, GL_GREEN, GL_ZERO, GL_ONE} -#define SWIZZLE_GR01 {GL_GREEN, GL_RED, GL_ZERO, GL_ONE} -#define SWIZZLE_RGB1 {GL_RED, GL_GREEN, GL_BLUE, GL_ONE} -#define SWIZZLE_RGBA {GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA} - -struct SPixelFormat { - DRMFormat drmFormat = 0; /* DRM_FORMAT_INVALID */ - int glInternalFormat = 0; - int glFormat = 0; - int glType = 0; - bool withAlpha = true; - DRMFormat alphaStripped = 0; /* DRM_FORMAT_INVALID */ - uint32_t bytesPerBlock = 0; - Vector2D blockSize; - std::optional> swizzle = std::nullopt; -}; - using SDRMFormat = Aquamarine::SDRMFormat; namespace NFormatUtils { - SHMFormat drmToShm(DRMFormat drm); - DRMFormat shmToDRM(SHMFormat shm); - - const SPixelFormat* getPixelFormatFromDRM(DRMFormat drm); - const SPixelFormat* getPixelFormatFromGL(uint32_t glFormat, uint32_t glType, bool alpha); - bool isFormatYUV(uint32_t drmFormat); - bool isFormatOpaque(DRMFormat drm); - int pixelsPerBlock(const SPixelFormat* const fmt); - int minStride(const SPixelFormat* const fmt, int32_t width); - std::string drmFormatName(DRMFormat drm); - std::string drmModifierName(uint64_t mod); - DRMFormat alphaFormat(DRMFormat prevFormat); + SHMFormat drmToShm(DRMFormat drm); + DRMFormat shmToDRM(SHMFormat shm); + bool isFormatYUV(uint32_t drmFormat); + std::string drmFormatName(DRMFormat drm); + std::string drmModifierName(uint64_t mod); + DRMFormat alphaFormat(DRMFormat prevFormat); }; diff --git a/src/managers/screenshare/CursorshareSession.cpp b/src/managers/screenshare/CursorshareSession.cpp index a1664487f..f093cfd8b 100644 --- a/src/managers/screenshare/CursorshareSession.cpp +++ b/src/managers/screenshare/CursorshareSession.cpp @@ -5,7 +5,9 @@ #include "../../render/Renderer.hpp" #include "../../render/pass/ClearPassElement.hpp" #include "../../render/pass/TexPassElement.hpp" +#include +using namespace Hyprgraphics::Egl; using namespace Screenshare; CCursorshareSession::CCursorshareSession(wl_client* client, WP pointer) : m_client(client), m_pointer(pointer) { @@ -164,7 +166,7 @@ bool CCursorshareSession::copy() { callback(RESULT_COPIED); }); } else if (auto attrs = m_pendingFrame.buffer->shm(); attrs.success) { - const auto PFORMAT = NFormatUtils::getPixelFormatFromDRM(m_format); + const auto PFORMAT = getPixelFormatFromDRM(m_format); if (attrs.format != m_format || !PFORMAT) { LOGM(Log::ERR, "Can't copy: invalid format"); @@ -190,11 +192,9 @@ bool CCursorshareSession::copy() { if (glFormat != GL_BGRA_EXT && glFormat != GL_RGB) { if (PFORMAT->swizzle.has_value()) { - std::array RGBA = SWIZZLE_RGBA; - std::array BGRA = SWIZZLE_BGRA; - if (PFORMAT->swizzle == RGBA) + if (PFORMAT->swizzle == SWIZZLE_RGBA) glFormat = GL_RGBA; - else if (PFORMAT->swizzle == BGRA) + else if (PFORMAT->swizzle == SWIZZLE_BGRA) glFormat = GL_BGRA_EXT; else { LOGM(Log::ERR, "Copied frame via shm might be broken or color flipped"); diff --git a/src/managers/screenshare/ScreenshareFrame.cpp b/src/managers/screenshare/ScreenshareFrame.cpp index 9f9dffa6c..6d110837f 100644 --- a/src/managers/screenshare/ScreenshareFrame.cpp +++ b/src/managers/screenshare/ScreenshareFrame.cpp @@ -14,7 +14,9 @@ #include "../../render/pass/RectPassElement.hpp" #include "helpers/cm/ColorManagement.hpp" #include +#include +using namespace Hyprgraphics::Egl; using namespace Screenshare; CScreenshareFrame::CScreenshareFrame(WP session, bool overlayCursor, bool isFirst) : @@ -395,7 +397,7 @@ bool CScreenshareFrame::copyShm() { auto shm = m_buffer->shm(); - const auto PFORMAT = NFormatUtils::getPixelFormatFromDRM(shm.format); + const auto PFORMAT = getPixelFormatFromDRM(shm.format); if (!PFORMAT) { LOGM(Log::ERR, "Can't copy: failed to find a pixel format"); return false; diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp index 825939ef1..75c230268 100644 --- a/src/protocols/Screencopy.cpp +++ b/src/protocols/Screencopy.cpp @@ -5,7 +5,9 @@ #include "types/Buffer.hpp" #include "../helpers/Format.hpp" #include "../helpers/time/Time.hpp" +#include +using namespace Hyprgraphics::Egl; using namespace Screenshare; CScreencopyClient::CScreencopyClient(SP resource_) : m_resource(resource_) { @@ -74,7 +76,7 @@ CScreencopyFrame::CScreencopyFrame(SP resource_, WPbufferSize(); - const auto PSHMINFO = NFormatUtils::getPixelFormatFromDRM(format); + const auto PSHMINFO = getPixelFormatFromDRM(format); if (!PSHMINFO) { LOGM(Log::ERR, "No pixel format for drm format"); @@ -82,7 +84,7 @@ CScreencopyFrame::CScreencopyFrame(SP resource_, WPsendBuffer(NFormatUtils::drmToShm(format), bufSize.x, bufSize.y, stride); if (m_resource->version() >= 3) { diff --git a/src/protocols/ToplevelExport.cpp b/src/protocols/ToplevelExport.cpp index 7b3d0c89b..5536e3d7c 100644 --- a/src/protocols/ToplevelExport.cpp +++ b/src/protocols/ToplevelExport.cpp @@ -6,7 +6,9 @@ #include "../render/Renderer.hpp" #include +#include +using namespace Hyprgraphics::Egl; using namespace Screenshare; CToplevelExportClient::CToplevelExportClient(SP resource_) : m_resource(resource_) { @@ -73,8 +75,8 @@ CToplevelExportFrame::CToplevelExportFrame(SP re DRMFormat format = formats.at(0); auto bufSize = m_frame->bufferSize(); - const auto PSHMINFO = NFormatUtils::getPixelFormatFromDRM(format); - const auto stride = NFormatUtils::minStride(PSHMINFO, bufSize.x); + const auto PSHMINFO = getPixelFormatFromDRM(format); + const auto stride = minStride(PSHMINFO, bufSize.x); m_resource->sendBuffer(NFormatUtils::drmToShm(format), bufSize.x, bufSize.y, stride); if LIKELY (format != DRM_FORMAT_INVALID) diff --git a/src/protocols/core/Shm.cpp b/src/protocols/core/Shm.cpp index c6f01b507..660458ab7 100644 --- a/src/protocols/core/Shm.cpp +++ b/src/protocols/core/Shm.cpp @@ -7,6 +7,9 @@ #include "../types/WLBuffer.hpp" #include "../../helpers/Format.hpp" #include "../../render/Renderer.hpp" +#include + +using namespace Hyprgraphics::Egl; using namespace Hyprutils::OS; CWLSHMBuffer::CWLSHMBuffer(WP pool_, uint32_t id, int32_t offset_, const Vector2D& size_, int32_t stride_, uint32_t fmt_) { @@ -21,7 +24,7 @@ CWLSHMBuffer::CWLSHMBuffer(WP pool_, uint32_t id, int32_t of m_stride = stride_; m_fmt = fmt_; m_offset = offset_; - m_opaque = NFormatUtils::isFormatOpaque(NFormatUtils::shmToDRM(fmt_)); + m_opaque = isDrmFormatOpaque(NFormatUtils::shmToDRM(fmt_)); m_resource = CWLBufferResource::create(makeShared(pool_->m_resource->client(), 1, id)); diff --git a/src/protocols/types/DMABuffer.cpp b/src/protocols/types/DMABuffer.cpp index 86db8ca69..37c463387 100644 --- a/src/protocols/types/DMABuffer.cpp +++ b/src/protocols/types/DMABuffer.cpp @@ -3,6 +3,7 @@ #include "../../desktop/view/LayerSurface.hpp" #include "../../render/Renderer.hpp" #include "../../helpers/Format.hpp" +#include #if defined(__linux__) #include @@ -11,6 +12,7 @@ #include using namespace Hyprutils::OS; +using namespace Hyprgraphics::Egl; CDMABuffer::CDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs const& attrs_) : m_attrs(attrs_) { m_listeners.resourceDestroy = events.destroy.listen([this] { @@ -20,7 +22,7 @@ CDMABuffer::CDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs size = m_attrs.size; m_resource = CWLBufferResource::create(makeShared(client, 1, id)); - m_opaque = NFormatUtils::isFormatOpaque(m_attrs.format); + m_opaque = isDrmFormatOpaque(m_attrs.format); m_texture = g_pHyprRenderer->createTexture(m_attrs, m_opaque); // texture takes ownership of the eglImage if UNLIKELY (!m_texture) { diff --git a/src/render/gl/GLFramebuffer.cpp b/src/render/gl/GLFramebuffer.cpp index 0ad84e621..3881c6f6e 100644 --- a/src/render/gl/GLFramebuffer.cpp +++ b/src/render/gl/GLFramebuffer.cpp @@ -3,7 +3,9 @@ #include "../Renderer.hpp" #include "macros.hpp" #include "../Framebuffer.hpp" +#include +using namespace Hyprgraphics::Egl; using namespace Render::GL; CGLFramebuffer::CGLFramebuffer() : IFramebuffer() {} @@ -27,14 +29,14 @@ bool CGLFramebuffer::internalAlloc(int w, int h, uint32_t drmFormat) { m_fbAllocated = true; } - const auto format = NFormatUtils::getPixelFormatFromDRM(drmFormat); + const auto format = getPixelFormatFromDRM(drmFormat); m_tex->bind(); glTexImage2D(GL_TEXTURE_2D, 0, format->glInternalFormat ? format->glInternalFormat : format->glFormat, w, h, 0, format->glFormat, format->glType, nullptr); glBindFramebuffer(GL_FRAMEBUFFER, m_fb); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_tex->m_texID, 0); if (m_mirrorTex) { - const auto format = NFormatUtils::getPixelFormatFromDRM(m_mirrorTex->m_drmFormat); + const auto format = getPixelFormatFromDRM(m_mirrorTex->m_drmFormat); m_mirrorTex->bind(); glTexImage2D(GL_TEXTURE_2D, 0, format->glInternalFormat ? format->glInternalFormat : format->glFormat, w, h, 0, format->glFormat, format->glType, nullptr); glBindFramebuffer(GL_FRAMEBUFFER, m_fb); @@ -110,7 +112,7 @@ bool CGLFramebuffer::readPixels(CHLBufferReference buffer, uint32_t offsetX, uin auto shm = buffer->shm(); auto [pixelData, fmt, bufLen] = buffer->beginDataPtr(0); // no need for end, cuz it's shm - const auto PFORMAT = NFormatUtils::getPixelFormatFromDRM(shm.format); + const auto PFORMAT = getPixelFormatFromDRM(shm.format); if (!PFORMAT) { LOGM(Log::ERR, "Can't copy: failed to find a pixel format"); return false; @@ -122,7 +124,7 @@ bool CGLFramebuffer::readPixels(CHLBufferReference buffer, uint32_t offsetX, uin glPixelStorei(GL_PACK_ALIGNMENT, 1); - uint32_t packStride = NFormatUtils::minStride(PFORMAT, m_size.x); + uint32_t packStride = minStride(PFORMAT, m_size.x); int glFormat = PFORMAT->glFormat; if (glFormat == GL_RGBA) @@ -130,11 +132,9 @@ bool CGLFramebuffer::readPixels(CHLBufferReference buffer, uint32_t offsetX, uin if (glFormat != GL_BGRA_EXT && glFormat != GL_RGB) { if (PFORMAT->swizzle.has_value()) { - std::array RGBA = SWIZZLE_RGBA; - std::array BGRA = SWIZZLE_BGRA; - if (PFORMAT->swizzle == RGBA) + if (PFORMAT->swizzle == SWIZZLE_RGBA) glFormat = GL_RGBA; - else if (PFORMAT->swizzle == BGRA) + else if (PFORMAT->swizzle == SWIZZLE_BGRA) glFormat = GL_BGRA_EXT; else { LOGM(Log::ERR, "Copied frame via shm might be broken or color flipped"); diff --git a/src/render/gl/GLTexture.cpp b/src/render/gl/GLTexture.cpp index d34bdb605..22bb8146f 100644 --- a/src/render/gl/GLTexture.cpp +++ b/src/render/gl/GLTexture.cpp @@ -4,7 +4,9 @@ #include "../../helpers/Format.hpp" #include "../Texture.hpp" #include +#include +using namespace Hyprgraphics::Egl; using namespace Render::GL; CGLTexture::CGLTexture(bool opaque) { @@ -32,7 +34,7 @@ CGLTexture::CGLTexture(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, con g_pHyprOpenGL->makeEGLCurrent(); - const auto format = NFormatUtils::getPixelFormatFromDRM(drmFormat); + const auto format = getPixelFormatFromDRM(drmFormat); ASSERT(format); m_type = format->withAlpha ? TEXTURE_RGBA : TEXTURE_RGBX; @@ -70,7 +72,7 @@ CGLTexture::CGLTexture(const Aquamarine::SDMABUFAttrs& attrs, void* image, bool return; } - m_opaque = NFormatUtils::isFormatOpaque(attrs.format); + m_opaque = isDrmFormatOpaque(attrs.format); // #TODO external only formats should be external aswell. // also needs a seperate color shader. @@ -79,7 +81,7 @@ CGLTexture::CGLTexture(const Aquamarine::SDMABUFAttrs& attrs, void* image, bool m_type = TEXTURE_EXTERNAL; } else {*/ m_target = GL_TEXTURE_2D; - m_type = NFormatUtils::isFormatOpaque(attrs.format) ? TEXTURE_RGBX : TEXTURE_RGBA; + m_type = isDrmFormatOpaque(attrs.format) ? TEXTURE_RGBX : TEXTURE_RGBA; //} allocate(attrs.size); @@ -124,7 +126,7 @@ void CGLTexture::update(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, co g_pHyprOpenGL->makeEGLCurrent(); - const auto format = NFormatUtils::getPixelFormatFromDRM(drmFormat); + const auto format = getPixelFormatFromDRM(drmFormat); ASSERT(format); bind(); diff --git a/tests/helpers/Format.cpp b/tests/helpers/Format.cpp index 5c945f7d1..705d13d1d 100644 --- a/tests/helpers/Format.cpp +++ b/tests/helpers/Format.cpp @@ -4,7 +4,9 @@ #include #include +#include +using namespace Hyprgraphics::Egl; using namespace NFormatUtils; TEST(Helpers, formatDrmToShm) { @@ -45,8 +47,8 @@ TEST(Helpers, formatGetPixelFormatFromDRM) { } TEST(Helpers, formatIsFormatOpaque) { - EXPECT_TRUE(isFormatOpaque(DRM_FORMAT_XRGB8888)); - EXPECT_FALSE(isFormatOpaque(DRM_FORMAT_ARGB8888)); + EXPECT_TRUE(isDrmFormatOpaque(DRM_FORMAT_XRGB8888)); + EXPECT_FALSE(isDrmFormatOpaque(DRM_FORMAT_ARGB8888)); } TEST(Helpers, formatPixelsPerBlock) {