From 2d71683febcd62f8a954ea741b2816d2b645a6f7 Mon Sep 17 00:00:00 2001 From: Tim Sylvester Date: Thu, 14 Sep 2023 16:10:56 -0700 Subject: [PATCH] Add checks for zero indexes on fill patterns to match fills. (#1638) Co-authored-by: Bart Louwers Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../download-workflow-run-artifact/action.yml | 12 +++++++++++- .github/workflows/android-ci.yml | 4 ++++ include/mbgl/gfx/vertex_attribute.hpp | 2 ++ src/mbgl/gfx/drawable_builder.cpp | 5 ++++- src/mbgl/gl/drawable_gl.cpp | 6 ++++-- src/mbgl/renderer/layers/render_fill_layer.cpp | 4 ++-- src/mbgl/renderer/layers/render_raster_layer.cpp | 9 +++++++-- 7 files changed, 34 insertions(+), 8 deletions(-) diff --git a/.github/actions/download-workflow-run-artifact/action.yml b/.github/actions/download-workflow-run-artifact/action.yml index af5822430..8a84b9043 100644 --- a/.github/actions/download-workflow-run-artifact/action.yml +++ b/.github/actions/download-workflow-run-artifact/action.yml @@ -23,7 +23,10 @@ runs: let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { return artifact.name == "${{ inputs.artifact-name }}" })[0]; - if (!matchArtifact) throw new Error("Could not find artifact ${{ inputs.artifact-name }}"); + if (!matchArtifact) { + console.log("Could not find artifact '${{ inputs.artifact-name }}'"); + return; + } let download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, @@ -33,8 +36,15 @@ runs: let fs = require('fs'); fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/${{ inputs.artifact-name }}.zip`, Buffer.from(download.data)); + - name: "Check .zip file existence" + id: zip_exists + uses: andstor/file-existence-action@v2.0.0 + with: + files: ${{ inputs.artifact-name }}.zip + - name: Unzip artifact shell: bash + if: steps.zip_exists.outputs.files_exists == 'true' run: unzip ${{ inputs.artifact-name }}.zip - name: "Check file existence" diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index bd6452d42..3a52b6197 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -45,6 +45,10 @@ jobs: IS_LOCAL_DEVELOPMENT: false MLN_ANDROID_STL: c++_static steps: + - name: Update Apt Package Cache + run: sudo apt-get update + working-directory: . + - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: diff --git a/include/mbgl/gfx/vertex_attribute.hpp b/include/mbgl/gfx/vertex_attribute.hpp index 91f59524a..34eb4bb77 100644 --- a/include/mbgl/gfx/vertex_attribute.hpp +++ b/include/mbgl/gfx/vertex_attribute.hpp @@ -374,8 +374,10 @@ public: using Attribute = typename DataDrivenPaintProperty::Attribute; using Type = typename Attribute::Type; // ::mbgl::gfx::AttributeType using InterpType = ZoomInterpolatedAttributeType; +#if !defined(NDEBUG) using Value = typename Type::Value; // std::array using InterpValue = typename InterpType::Value; // std::array +#endif const auto vertexCount = binder->getVertexCount(); const auto isConstant = evaluated.template get().isConstant(); diff --git a/src/mbgl/gfx/drawable_builder.cpp b/src/mbgl/gfx/drawable_builder.cpp index 183f185e0..ae9f3fc13 100644 --- a/src/mbgl/gfx/drawable_builder.cpp +++ b/src/mbgl/gfx/drawable_builder.cpp @@ -167,7 +167,10 @@ void DrawableBuilder::setSegments(const gfx::DrawMode mode, gfx::IndexVectorBasePtr indexes, const SegmentBase* segments, const std::size_t segmentCount) { - assert(indexes && indexes->elements()); + if (!indexes || !indexes->elements()) { + assert("Missing segment indexes"); + return; + } impl->sharedIndexes = std::move(indexes); for (std::size_t i = 0; i < segmentCount; ++i) { const auto& seg = segments[i]; diff --git a/src/mbgl/gl/drawable_gl.cpp b/src/mbgl/gl/drawable_gl.cpp index b6cbcaacb..f74da2e4f 100644 --- a/src/mbgl/gl/drawable_gl.cpp +++ b/src/mbgl/gl/drawable_gl.cpp @@ -210,10 +210,12 @@ void DrawableGL::upload(gfx::UploadPass& uploadPass) { if (!glSeg.getVertexArray().isValid()) { auto vertexArray = glContext.createVertexArray(); - IndexBufferGL& indexBuffer = *static_cast(impl->indexes->getBuffer()); + const auto& indexBuffer = static_cast(*impl->indexes->getBuffer()); vertexArray.bind(glContext, *indexBuffer.buffer, bindings); assert(vertexArray.isValid()); - glSeg.setVertexArray(std::move(vertexArray)); + if (vertexArray.isValid()) { + glSeg.setVertexArray(std::move(vertexArray)); + } } }; } diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp index 3f53aa280..2903edff6 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_layer.cpp @@ -706,7 +706,7 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders, } }; - if (patternBuilder) { + if (patternBuilder && bucket.sharedTriangles->elements()) { patternBuilder->setShader(fillShader); patternBuilder->setRenderPass(renderPass); if (outlinePatternBuilder) { @@ -726,7 +726,7 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders, "FillPatternTilePropsUBO", getFillPatternTilePropsUBO()); } - if (outlinePatternBuilder) { + if (outlinePatternBuilder && bucket.sharedLines->elements()) { outlinePatternBuilder->setShader(outlineShader); outlinePatternBuilder->setRenderPass(renderPass); outlinePatternBuilder->setVertexAttributes(std::move(vertexAttrs)); diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp index e33e920b9..9ab34f138 100644 --- a/src/mbgl/renderer/layers/render_raster_layer.cpp +++ b/src/mbgl/renderer/layers/render_raster_layer.cpp @@ -233,10 +233,15 @@ constexpr auto Image0UniformName = "u_image0"; constexpr auto Image1UniformName = "u_image1"; void RenderRasterLayer::updateLayerTweaker() { - if (layerGroup) { + if (layerGroup || imageLayerGroup) { tweaker = std::make_shared(getID(), evaluatedProperties); tweaker->enableOverdrawInspector(overdrawInspector); - layerGroup->setLayerTweaker(tweaker); + if (layerGroup) { + layerGroup->setLayerTweaker(tweaker); + } + if (imageLayerGroup) { + imageLayerGroup->setLayerTweaker(tweaker); + } } }