fix(core): Fix missing symbols/glyphs (#4554)

This commit is contained in:
Adrian Cojocaru
2026-09-04 22:42:09 +03:00
committed by GitHub
parent 96e806931d
commit 0b342a1209
2 changed files with 9 additions and 6 deletions

View File

@@ -1231,9 +1231,12 @@ size_t SymbolLayout::addSymbol(SymbolBucket::Buffer& buffer,
float sortKey) { float sortKey) {
constexpr const uint16_t instanceCount = 1; constexpr const uint16_t instanceCount = 1;
const uint16_t baseInstance = buffer.segments.empty() ? 0 : buffer.segments.back().instanceCount; if (buffer.segments.empty() ||
if (buffer.segments.empty() || baseInstance + instanceCount > std::numeric_limits<uint16_t>::max() || buffer.segments.back().instanceCount + instanceCount > std::numeric_limits<uint16_t>::max() ||
std::fabs(buffer.segments.back().sortKey - sortKey) > std::numeric_limits<float>::epsilon()) { std::fabs(buffer.segments.back().sortKey - sortKey) > std::numeric_limits<float>::epsilon()) {
const uint16_t baseInstance = buffer.segments.empty()
? 0
: buffer.segments.back().baseInstance + buffer.segments.back().instanceCount;
buffer.segments.emplace_back(RenderStaticData::symbolSegment(baseInstance, sortKey)); buffer.segments.emplace_back(RenderStaticData::symbolSegment(baseInstance, sortKey));
} }

View File

@@ -363,7 +363,7 @@ public:
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer; using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override { void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
this->template setInterleavedBuffer<BaseVertex>(buffer); this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A>>(buffer);
} }
private: private:
@@ -479,7 +479,7 @@ public:
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer; using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override { void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
this->template setInterleavedBuffer<Vertex>(buffer); this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A>>(buffer);
} }
std::tuple<ZoomInterpolatedVertexType<A>> getVertexValue(std::size_t index) const override { std::tuple<ZoomInterpolatedVertexType<A>> getVertexValue(std::size_t index) const override {
@@ -579,7 +579,7 @@ public:
using PaintPropertyBinder<T, std::array<uint16_t, 4>, PossiblyEvaluatedPropertyValue<Faded<T>>, A1, A2>:: using PaintPropertyBinder<T, std::array<uint16_t, 4>, PossiblyEvaluatedPropertyValue<Faded<T>>, A1, A2>::
setInterleavedBuffer; setInterleavedBuffer;
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override { void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
this->template setInterleavedBuffer<Vertex>(buffer); this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A1>>(buffer);
} }
private: private:
@@ -699,7 +699,7 @@ public:
interleavedVertexBuffer = std::move(other.interleavedVertexBuffer); interleavedVertexBuffer = std::move(other.interleavedVertexBuffer);
(([&] { (([&] {
binders.template get<Ps>()->setInterleavedBuffer(interleavedVertexBuffer); binders.template get<Ps>()->interleavedVertexBuffer = &interleavedVertexBuffer;
}()), }()),
...); ...);
} }