mirror of
https://github.com/hyprwm/Hyprland
synced 2026-05-07 05:38:11 +02:00
render/opengl: optimize getShaderVariant's map access
This commit is contained in:
parent
9b05dc1b4c
commit
97ee042757
2 changed files with 15 additions and 12 deletions
|
|
@ -2458,7 +2458,10 @@ bool CHyprOpenGLImpl::explicitSyncSupported() {
|
|||
}
|
||||
|
||||
WP<CShader> CHyprOpenGLImpl::getShaderVariant(ePreparedFragmentShader frag, ShaderFeatureFlags features) {
|
||||
if (!m_shaders->fragVariants[frag].contains(features)) {
|
||||
auto& variants = m_shaders->fragVariants[frag];
|
||||
auto it = variants.find(features);
|
||||
|
||||
if (it == variants.end()) {
|
||||
auto shader = makeShared<CShader>();
|
||||
|
||||
Log::logger->log(Log::INFO, "compiling feature set {} for {}", features, FRAG_SHADERS[frag]);
|
||||
|
|
@ -2468,12 +2471,12 @@ WP<CShader> CHyprOpenGLImpl::getShaderVariant(ePreparedFragmentShader frag, Shad
|
|||
if (!shader->createProgram(m_shaders->TEXVERTSRC, fragSrc, true, true))
|
||||
Log::logger->log(Log::ERR, "shader features {} failed for {}", features, FRAG_SHADERS[frag]);
|
||||
|
||||
m_shaders->fragVariants[frag][features] = shader;
|
||||
return shader;
|
||||
it = variants.emplace(features, std::move(shader)).first;
|
||||
return it->second;
|
||||
}
|
||||
|
||||
ASSERT(m_shaders->fragVariants[frag][features]);
|
||||
return m_shaders->fragVariants[frag][features];
|
||||
ASSERT(it->second);
|
||||
return it->second;
|
||||
}
|
||||
|
||||
std::vector<SDRMFormat> CHyprOpenGLImpl::getDRMFormats() {
|
||||
|
|
|
|||
|
|
@ -80,13 +80,13 @@ class CDecorationPositioner {
|
|||
};
|
||||
|
||||
struct SWindowData {
|
||||
Vector2D lastWindowSize = {};
|
||||
SBoxExtents reserved = {};
|
||||
SBoxExtents extents = {};
|
||||
SBoxExtents decorationExtents = {};
|
||||
SBoxExtents decorationInputExtents = {};
|
||||
bool needsRecalc = false;
|
||||
bool needsDamageExtents = true;
|
||||
Vector2D lastWindowSize = {};
|
||||
SBoxExtents reserved = {};
|
||||
SBoxExtents extents = {};
|
||||
SBoxExtents decorationExtents = {};
|
||||
SBoxExtents decorationInputExtents = {};
|
||||
bool needsRecalc = false;
|
||||
bool needsDamageExtents = true;
|
||||
};
|
||||
|
||||
std::map<PHLWINDOWREF, SWindowData> m_windowDatas;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue