Drawable Renderer (#1570), CI warnings

This commit is contained in:
Tim Sylvester
2023-06-12 14:40:51 -07:00
committed by Bart Louwers
parent d7c9c8b69a
commit 6b4f28d5f4
5 changed files with 24 additions and 9 deletions

View File

@@ -136,6 +136,7 @@ public:
std::size_t vertexLength);
void setSegments(gfx::DrawMode, std::vector<uint16_t> indexes, const std::vector<SegmentBase>&);
void setSegments(gfx::DrawMode, std::vector<uint16_t> indexes, const SegmentBase*, std::size_t segmentCount);
/// Add lines based on existing vertices
void addLines(const std::vector<uint16_t>& indexes,

View File

@@ -181,8 +181,16 @@ std::size_t DrawableBuilder::addVertices(const std::vector<std::array<int16_t, 2
void DrawableBuilder::setSegments(gfx::DrawMode mode,
std::vector<uint16_t> indexes,
const std::vector<SegmentBase>& segments) {
setSegments(mode, indexes, segments.data(), segments.size());
}
void DrawableBuilder::setSegments(gfx::DrawMode mode,
std::vector<uint16_t> indexes,
const SegmentBase* segments,
std::size_t segmentCount) {
impl->indexes = std::move(indexes);
for (const auto& seg : segments) {
for (std::size_t i = 0; i < segmentCount; ++i) {
const auto& seg = segments[i];
#if !defined(NDEBUG)
if (mode.type == DrawModeType::Triangles) {
assert(seg.indexLength % 3 == 0);
@@ -191,8 +199,8 @@ void DrawableBuilder::setSegments(gfx::DrawMode mode,
}
assert(seg.vertexOffset + seg.vertexLength <= impl->vertices.elements());
assert(seg.indexOffset + seg.indexLength <= impl->indexes.size());
for (decltype(seg.indexLength) i = 0; i < seg.indexLength; ++i) {
assert(impl->indexes[seg.indexOffset + i] < impl->vertices.elements());
for (decltype(seg.indexLength) j = 0; j < seg.indexLength; ++j) {
assert(impl->indexes[seg.indexOffset + j] < impl->vertices.elements());
}
#endif

View File

@@ -410,7 +410,8 @@ void RenderCircleLayer::update(gfx::ShaderRegistry& shaders,
circleBuilder->setSegments(gfx::Triangles(),
bucket.triangles.vector(),
reinterpret_cast<const std::vector<SegmentBase>&>(bucket.segments));
bucket.segments.data(),
bucket.segments.size());
circleBuilder->flush();

View File

@@ -493,7 +493,8 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
fillBuilder->addVertices(rawVerts, 0, rawVerts.size());
fillBuilder->setSegments(gfx::Triangles(),
bucket.triangles.vector(),
reinterpret_cast<const std::vector<SegmentBase>&>(bucket.triangleSegments));
bucket.triangleSegments.data(),
bucket.triangleSegments.size());
finish(*fillBuilder, tileID, interpolateUBO, tileProps);
}
if (outlineBuilder) {
@@ -503,7 +504,8 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
outlineBuilder->addVertices(rawVerts, 0, rawVerts.size());
outlineBuilder->setSegments(gfx::Lines(2),
bucket.lines.vector(),
reinterpret_cast<const std::vector<SegmentBase>&>(bucket.lineSegments));
bucket.lineSegments.data(),
bucket.lineSegments.size());
finish(*outlineBuilder, tileID, interpolateUBO, tileProps);
}
} else { // FillPattern is defined
@@ -549,7 +551,8 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
patternBuilder->addVertices(rawVerts, 0, rawVerts.size());
patternBuilder->setSegments(gfx::Triangles(),
bucket.triangles.vector(),
reinterpret_cast<const std::vector<SegmentBase>&>(bucket.triangleSegments));
bucket.triangleSegments.data(),
bucket.triangleSegments.size());
if (const auto& atlases = tile.getAtlasTextures()) {
if (const auto samplerLocation = fillShader->getSamplerLocation("u_image")) {
@@ -568,7 +571,8 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
outlinePatternBuilder->setSegments(
gfx::Lines(2),
bucket.lines.vector(),
reinterpret_cast<const std::vector<SegmentBase>&>(bucket.lineSegments));
bucket.lineSegments.data(),
bucket.lineSegments.size());
if (const auto& atlases = tile.getAtlasTextures()) {
if (const auto samplerLocation = outlineShader->getSamplerLocation("u_image")) {

View File

@@ -370,7 +370,8 @@ void RenderRasterLayer::update(gfx::ShaderRegistry& shaders,
builder->setSegments(gfx::Triangles(),
bucket.indices.vector(),
reinterpret_cast<const std::vector<SegmentBase>&>(bucket.segments));
bucket.segments.data(),
bucket.segments.size());
// attributes
{