rendervulkan: Replace flBorderAlpha with nBorderMask of layers
Allows us to fit more layers in push constants. We never use anything other than 0/1 anyway.
This commit is contained in:
parent
68a68e6bb2
commit
89b145dbca
3 changed files with 10 additions and 11 deletions
|
@ -22,7 +22,7 @@ uniform layers_t {
|
||||||
vec2 u_scale[MaxLayers];
|
vec2 u_scale[MaxLayers];
|
||||||
vec2 u_offset[MaxLayers];
|
vec2 u_offset[MaxLayers];
|
||||||
float u_opacity[MaxLayers];
|
float u_opacity[MaxLayers];
|
||||||
float u_borderAlpha[MaxLayers];
|
uint u_borderMask;
|
||||||
uint u_frameId;
|
uint u_frameId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,8 +75,10 @@ vec4 sampleLayer(sampler2D layerSampler, uint layerIdx, vec2 uv) {
|
||||||
vec2 texSize = textureSize(layerSampler, 0);
|
vec2 texSize = textureSize(layerSampler, 0);
|
||||||
|
|
||||||
if (coord.x < 0.0f || coord.y < 0.0f ||
|
if (coord.x < 0.0f || coord.y < 0.0f ||
|
||||||
coord.x >= texSize.x || coord.y >= texSize.y )
|
coord.x >= texSize.x || coord.y >= texSize.y) {
|
||||||
return vec4(0.0f, 0.0f, 0.0f, u_borderAlpha[layerIdx]);
|
float border = (u_borderMask & (1u << layerIdx)) != 0 ? 1.0f : 0.0f;
|
||||||
|
return vec4(0.0f, 0.0f, 0.0f, border);
|
||||||
|
}
|
||||||
|
|
||||||
return textureLod(layerSampler, coord, 0.0f);
|
return textureLod(layerSampler, coord, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,8 +44,9 @@ struct Composite_t
|
||||||
vec2_t vScale[k_nMaxLayers];
|
vec2_t vScale[k_nMaxLayers];
|
||||||
vec2_t vOffset[k_nMaxLayers];
|
vec2_t vOffset[k_nMaxLayers];
|
||||||
float flOpacity[k_nMaxLayers];
|
float flOpacity[k_nMaxLayers];
|
||||||
float flBorderAlpha[k_nMaxLayers];
|
uint32_t nBorderMask;
|
||||||
} data;
|
} data;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "drm.hpp"
|
#include "drm.hpp"
|
||||||
|
|
|
@ -1134,8 +1134,6 @@ void MouseCursor::paint(win *window, struct Composite_t *pComposite,
|
||||||
pComposite->data.vOffset[ curLayer ].x = -scaledX;
|
pComposite->data.vOffset[ curLayer ].x = -scaledX;
|
||||||
pComposite->data.vOffset[ curLayer ].y = -scaledY;
|
pComposite->data.vOffset[ curLayer ].y = -scaledY;
|
||||||
|
|
||||||
pComposite->data.flBorderAlpha[ curLayer ] = 0.0f;
|
|
||||||
|
|
||||||
pPipeline->layerBindings[ curLayer ].surfaceWidth = m_width;
|
pPipeline->layerBindings[ curLayer ].surfaceWidth = m_width;
|
||||||
pPipeline->layerBindings[ curLayer ].surfaceHeight = m_height;
|
pPipeline->layerBindings[ curLayer ].surfaceHeight = m_height;
|
||||||
|
|
||||||
|
@ -1174,6 +1172,8 @@ paint_cached_base_layer(const std::shared_ptr<commit_t>& commit, const BaseLayer
|
||||||
pPipeline->layerBindings[ curLayer ].fbid = commit->fb_id;
|
pPipeline->layerBindings[ curLayer ].fbid = commit->fb_id;
|
||||||
pPipeline->layerBindings[ curLayer ].bFilter = true;
|
pPipeline->layerBindings[ curLayer ].bFilter = true;
|
||||||
|
|
||||||
|
pComposite->data.nBorderMask |= (1u << curLayer);
|
||||||
|
|
||||||
pComposite->nLayerCount++;
|
pComposite->nLayerCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1279,8 +1279,6 @@ paint_window(Display *dpy, win *w, win *scaleW, struct Composite_t *pComposite,
|
||||||
{
|
{
|
||||||
pComposite->data.vOffset[ curLayer ].x = -drawXOffset;
|
pComposite->data.vOffset[ curLayer ].x = -drawXOffset;
|
||||||
pComposite->data.vOffset[ curLayer ].y = -drawYOffset;
|
pComposite->data.vOffset[ curLayer ].y = -drawYOffset;
|
||||||
|
|
||||||
pComposite->data.flBorderAlpha[ curLayer ] = 0.0f;
|
|
||||||
}
|
}
|
||||||
else if (notificationMode)
|
else if (notificationMode)
|
||||||
{
|
{
|
||||||
|
@ -1297,15 +1295,13 @@ paint_window(Display *dpy, win *w, win *scaleW, struct Composite_t *pComposite,
|
||||||
|
|
||||||
pComposite->data.vOffset[ curLayer ].x = (currentOutputWidth - xOffset - width) * -1.0f;
|
pComposite->data.vOffset[ curLayer ].x = (currentOutputWidth - xOffset - width) * -1.0f;
|
||||||
pComposite->data.vOffset[ curLayer ].y = (currentOutputHeight - yOffset - height) * -1.0f;
|
pComposite->data.vOffset[ curLayer ].y = (currentOutputHeight - yOffset - height) * -1.0f;
|
||||||
|
|
||||||
pComposite->data.flBorderAlpha[ curLayer ] = 0.0f;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pComposite->data.vOffset[ curLayer ].x = -drawXOffset;
|
pComposite->data.vOffset[ curLayer ].x = -drawXOffset;
|
||||||
pComposite->data.vOffset[ curLayer ].y = -drawYOffset;
|
pComposite->data.vOffset[ curLayer ].y = -drawYOffset;
|
||||||
|
|
||||||
pComposite->data.flBorderAlpha[ curLayer ] = 1.0f;
|
pComposite->data.nBorderMask |= (1u << curLayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
pPipeline->layerBindings[ curLayer ].surfaceWidth = w->a.width;
|
pPipeline->layerBindings[ curLayer ].surfaceWidth = w->a.width;
|
||||||
|
|
Loading…
Reference in a new issue