Compare commits
77 Commits
b433775348
...
maplibre-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0a4787b43 | ||
|
|
061b24a4bb | ||
|
|
87f3d1c59a | ||
|
|
93fb20479e | ||
|
|
51c38b1296 | ||
|
|
016bf5ad93 | ||
|
|
24105b1be7 | ||
|
|
bf7f6193e0 | ||
|
|
7cfad1c72f | ||
|
|
ea5bd393c6 | ||
|
|
40b79764ae | ||
|
|
69922b795a | ||
|
|
23f7b8a4d7 | ||
|
|
86906c8a6a | ||
|
|
a49dd936c4 | ||
|
|
2c6f673e54 | ||
|
|
c30add4d33 | ||
|
|
73db0356ac | ||
|
|
30d0e6665e | ||
|
|
a4b5f4eaa0 | ||
|
|
f8378fd711 | ||
|
|
e4c7af7c40 | ||
|
|
c7506d6aff | ||
|
|
57d1981497 | ||
|
|
042f21da5c | ||
|
|
a33d3f00fb | ||
|
|
eca9e1db33 | ||
|
|
843cdec996 | ||
|
|
474d127bfb | ||
|
|
fed6dc019b | ||
|
|
0b342a1209 | ||
|
|
96e806931d | ||
|
|
e5d0fce32a | ||
|
|
be3f03b86e | ||
|
|
2919f71e39 | ||
|
|
6010a2e687 | ||
|
|
c3b588321b | ||
|
|
cbe4681ef1 | ||
|
|
1d0908bdaa | ||
|
|
96afb98b7f | ||
|
|
ef5ff9ac01 | ||
|
|
08f775e2ed | ||
|
|
a4670161a0 | ||
|
|
0c7fbe2b29 | ||
|
|
2a8ebc4906 | ||
|
|
06fcf13d42 | ||
|
|
f0bd259b53 | ||
|
|
2e13de25f4 | ||
|
|
65a3405370 | ||
|
|
550f64be22 | ||
|
|
836b862984 | ||
|
|
95a977e12e | ||
|
|
6485d28b3e | ||
|
|
d508e65692 | ||
|
|
743ed53794 | ||
|
|
a666f02633 | ||
|
|
9a9f831782 | ||
|
|
bd92c87d39 | ||
|
|
8be081ae83 | ||
|
|
49f80e95f3 | ||
|
|
d9664ee187 | ||
|
|
7f430aa624 | ||
|
|
b0388d186d | ||
|
|
ccb9af119e | ||
|
|
e2b01754b6 | ||
|
|
40be634126 | ||
|
|
f1905c5215 | ||
|
|
e626fc0fbd | ||
|
|
9ef0f1c790 | ||
|
|
25e4f6acbf | ||
|
|
a34723ff4a | ||
|
|
5e6fd6bb78 | ||
|
|
c8dad00be5 | ||
|
|
a6189feecb | ||
|
|
83ce54ed3e | ||
|
|
5bcdc704b8 | ||
|
|
15fcee54dc |
19
.github/workflows/android-ci.yml
vendored
19
.github/workflows/android-ci.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
outputs:
|
||||
should_skip: ${{ github.event_name != 'workflow_dispatch' && steps.changed-files.outputs.android_any_modified != 'true' }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
renderer: [opengl, vulkan]
|
||||
renderer: [opengl, vulkan, multiBackend]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: platform/android
|
||||
@@ -57,14 +57,14 @@ jobs:
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN_ANDROID }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
|
||||
- uses: ./.github/actions/setup-android-ci
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
|
||||
@@ -169,6 +169,7 @@ jobs:
|
||||
case "${{ matrix.renderer }}" in
|
||||
opengl) echo "renderer=OpenGL" >> "$GITHUB_ENV" ;;
|
||||
vulkan) echo "renderer=Vulkan" >> "$GITHUB_ENV" ;;
|
||||
multiBackend) echo "renderer=MultiBackend" >> "$GITHUB_ENV" ;;
|
||||
*) echo "::error ::Unknown renderer '${{ matrix.renderer }}'"; exit 1 ;;
|
||||
esac
|
||||
|
||||
@@ -210,7 +211,7 @@ jobs:
|
||||
working-directory: test/android
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -255,7 +256,7 @@ jobs:
|
||||
if: needs.pre_job.outputs.should_skip != 'true'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -283,7 +284,7 @@ jobs:
|
||||
env:
|
||||
IS_LOCAL_DEVELOPMENT: false
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -316,7 +317,7 @@ jobs:
|
||||
C_COMPILER: aarch64-linux-android26-clang
|
||||
BINDGEN_TARGET: aarch64-linux-android26
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -390,7 +391,7 @@ jobs:
|
||||
|
||||
# automatically trigger android-release when code is pushed to main
|
||||
# and the platform/android/VERSION file has changed
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
||||
|
||||
- name: VERSION file changed
|
||||
|
||||
6
.github/workflows/android-device-test.yml
vendored
6
.github/workflows/android-device-test.yml
vendored
@@ -78,11 +78,11 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository_owner == 'maplibre' && github.event.workflow_run.conclusion == 'success'
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
@@ -145,7 +145,7 @@ jobs:
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
if: env.run_device_test == 'true'
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
|
||||
27
.github/workflows/android-release.yml
vendored
27
.github/workflows/android-release.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
run:
|
||||
working-directory: platform/android
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- name: Validate and set version
|
||||
working-directory: .
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
|
||||
- name: Create release (draft)
|
||||
id: create_release
|
||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
||||
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
||||
with:
|
||||
tag_name: ${{ steps.prepare_release.outputs.version_tag }}
|
||||
name: ${{ steps.prepare_release.outputs.version_tag }}
|
||||
@@ -74,19 +74,20 @@ jobs:
|
||||
RENDERER:
|
||||
- vulkan
|
||||
- opengl
|
||||
- multiBackend
|
||||
BUILDTYPE:
|
||||
- Release
|
||||
- Debug
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
|
||||
- uses: actions/setup-java@0f481fcb613427c0f801b606911222b5b6f3083a # v5.5.0
|
||||
- uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
|
||||
with:
|
||||
distribution: "temurin"
|
||||
java-version: "17"
|
||||
@@ -118,7 +119,7 @@ jobs:
|
||||
"build/debug-symbols-maplibre-android-${{ matrix.RENDERER }}-${{ env.buildtype }}-$version_tag.tar.gz"
|
||||
|
||||
- name: Upload release assets (${{ matrix.RENDERER }}, ${{ matrix.BUILDTYPE }})
|
||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
||||
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
||||
with:
|
||||
tag_name: ${{ needs.android-create-release.outputs.version_tag }}
|
||||
fail_on_unmatched_files: true
|
||||
@@ -133,8 +134,12 @@ jobs:
|
||||
if [ "$renderer" = "opengl" ]; then
|
||||
./gradlew :MapLibreAndroid:publishOpengl${{ env.buildtype }}PublicationToMavenCentralRepository
|
||||
./gradlew :MapLibreAndroid:publishDefault${{ env.buildtype }}PublicationToMavenCentralRepository
|
||||
else
|
||||
elif [ "$renderer" = "vulkan" ]; then
|
||||
./gradlew :MapLibreAndroid:publishVulkan${{ env.buildtype }}PublicationToMavenCentralRepository
|
||||
elif [ "$renderer" = "multiBackend" ]; then
|
||||
./gradlew :MapLibreAndroid:publishMultibackend${{ env.buildtype }}PublicationToMavenCentralRepository
|
||||
else
|
||||
echo "::error ::Unknown renderer '$renderer'"; exit 1
|
||||
fi
|
||||
env:
|
||||
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
|
||||
@@ -149,20 +154,20 @@ jobs:
|
||||
- android-build-and-upload-release
|
||||
steps:
|
||||
- name: Publish release (remove draft)
|
||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
||||
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
||||
with:
|
||||
tag_name: ${{ needs.android-create-release.outputs.version_tag }}
|
||||
name: ${{ needs.android-create-release.outputs.version_tag }}
|
||||
draft: false
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- uses: actions/setup-java@0f481fcb613427c0f801b606911222b5b6f3083a # v5.5.0
|
||||
- uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
|
||||
with:
|
||||
distribution: "temurin"
|
||||
java-version: "17"
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
|
||||
|
||||
10
.github/workflows/android-testapp-release.yml
vendored
10
.github/workflows/android-testapp-release.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
create-android-testapp-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
renderer: [opengl, vulkan]
|
||||
renderer: [opengl, vulkan, multibackend]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: platform/android
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN_ANDROID }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -68,11 +68,11 @@ jobs:
|
||||
needs: [android-build-testapp]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- name: Finalize release (set draft=false)
|
||||
run: |
|
||||
|
||||
2
.github/workflows/cache-cleanup.yml
vendored
2
.github/workflows/cache-cleanup.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
|
||||
14
.github/workflows/core-release.yml
vendored
14
.github/workflows/core-release.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
create-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -46,13 +46,13 @@ jobs:
|
||||
needs: [create-release]
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- run: brew install webp libuv
|
||||
- run: brew install webp libuv llvm
|
||||
|
||||
- uses: taiki-e/install-action@2ca9b94c269419b7b0c711c09d0b21c4e1d51145 # v2.83.1
|
||||
- uses: taiki-e/install-action@ba47c86ac325773530516bb756137ac718732518 # v2.86.5
|
||||
with:
|
||||
tool: armerge@2
|
||||
|
||||
@@ -103,14 +103,14 @@ jobs:
|
||||
- renderer: vulkan
|
||||
runner: { os: ubuntu-24.04-arm, arch: arm64 }
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install dependencies
|
||||
run: .github/scripts/install-linux-deps
|
||||
|
||||
- uses: taiki-e/install-action@2ca9b94c269419b7b0c711c09d0b21c4e1d51145 # v2.83.1
|
||||
- uses: taiki-e/install-action@ba47c86ac325773530516bb756137ac718732518 # v2.86.5
|
||||
with:
|
||||
tool: armerge@2
|
||||
|
||||
@@ -156,7 +156,7 @@ jobs:
|
||||
- run: |
|
||||
git config --system core.longpaths true
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
|
||||
6
.github/workflows/gh-pages-android-api.yml
vendored
6
.github/workflows/gh-pages-android-api.yml
vendored
@@ -15,11 +15,11 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-java@0f481fcb613427c0f801b606911222b5b6f3083a # v5.5.0
|
||||
- uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
|
||||
with:
|
||||
distribution: "temurin"
|
||||
java-version: "17"
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
run: ./gradlew dokkaGenerate
|
||||
|
||||
- name: Deploy 🚀
|
||||
uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0
|
||||
uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: platform/android/MapLibreAndroid/build/dokka/html
|
||||
|
||||
@@ -17,13 +17,13 @@ jobs:
|
||||
shell: bash
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- name: Generate documentation
|
||||
run: make mkdocs-build
|
||||
|
||||
- name: Deploy 🚀
|
||||
uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0
|
||||
uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: platform/android/site
|
||||
|
||||
4
.github/workflows/gh-pages-cpp-api.yml
vendored
4
.github/workflows/gh-pages-cpp-api.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
run: doxygen
|
||||
|
||||
- name: Deploy 🚀
|
||||
uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0
|
||||
uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: docs/doxygen/html
|
||||
|
||||
12
.github/workflows/gh-pages-docc.yml
vendored
12
.github/workflows/gh-pages-docc.yml
vendored
@@ -15,15 +15,17 @@ on:
|
||||
|
||||
jobs:
|
||||
gh-pages-docc-build:
|
||||
if: ${{ github.ref_name == 'main' }}
|
||||
name: Build DocC Docs
|
||||
runs-on: macos-latest
|
||||
if: ${{ github.ref_name == 'main' }}
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
@@ -52,7 +54,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- name: Download DocC docs artifacts
|
||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
||||
@@ -67,7 +69,7 @@ jobs:
|
||||
rm docs.zip
|
||||
|
||||
- name: Deploy DocC documentation (main) 🚀
|
||||
uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0
|
||||
uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: build/docs
|
||||
|
||||
6
.github/workflows/gh-pages-mdbook.yml
vendored
6
.github/workflows/gh-pages-mdbook.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
|
||||
- name: Setup mdBook
|
||||
uses: peaceiris/actions-mdbook@ee69d230fe19748b7abf22df32acaa93833fad08 # v2.0.0
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
name: Deploy
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Download book
|
||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
||||
with:
|
||||
@@ -48,7 +48,7 @@ jobs:
|
||||
path: artifacts/book
|
||||
|
||||
- name: Deploy
|
||||
uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0
|
||||
uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: artifacts/book
|
||||
|
||||
14
.github/workflows/ios-ci.yml
vendored
14
.github/workflows/ios-ci.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
outputs:
|
||||
should_skip: ${{ github.event_name != 'workflow_dispatch' && steps.changed-files-yaml.outputs.ios_any_modified != 'true' }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -58,7 +58,7 @@ jobs:
|
||||
working-directory: platform/ios
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: false
|
||||
persist-credentials: false
|
||||
@@ -211,7 +211,7 @@ jobs:
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
if: github.ref == 'refs/heads/main' && vars.OIDC_AWS_ROLE_TO_ASSUME
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
@@ -236,7 +236,7 @@ jobs:
|
||||
runs-on: macos-14
|
||||
if: needs.pre_job.outputs.should_skip != 'true'
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -269,7 +269,7 @@ jobs:
|
||||
if: needs.pre_job.outputs.should_skip != 'true'
|
||||
runs-on: macos-26
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -304,7 +304,7 @@ jobs:
|
||||
if: needs.pre_job.outputs.should_skip != 'true'
|
||||
runs-on: macos-26
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -366,7 +366,7 @@ jobs:
|
||||
|
||||
# Trigger release on main if VERSION file changed
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
if: github.ref == 'refs/heads/main'
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
4
.github/workflows/ios-device-test.yml
vendored
4
.github/workflows/ios-device-test.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
runs-on: ubuntu-24.04
|
||||
if: github.repository_owner == 'maplibre' && github.event.workflow_run.conclusion == 'success'
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
files: "${{ matrix.test.xcTestFile }}, ${{ matrix.test.ipaFile }}"
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
|
||||
2
.github/workflows/ios-release-cocoapods.yml
vendored
2
.github/workflows/ios-release-cocoapods.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
working-directory: platform/ios
|
||||
runs-on: macos-14
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
|
||||
44
.github/workflows/ios-release.yml
vendored
44
.github/workflows/ios-release.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
working-directory: platform/ios
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -65,7 +65,7 @@ jobs:
|
||||
working-directory: platform/ios
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -104,13 +104,13 @@ jobs:
|
||||
working-directory: platform/ios
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
|
||||
@@ -144,7 +144,7 @@ jobs:
|
||||
cat changelog_for_version.md
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
@@ -155,7 +155,7 @@ jobs:
|
||||
|
||||
- name: Release (GitHub) - Create Draft
|
||||
id: github_release
|
||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
||||
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
||||
with:
|
||||
name: ios-v${{ env.version }}
|
||||
files: |
|
||||
@@ -177,6 +177,22 @@ jobs:
|
||||
private-key: ${{ secrets.MAPLIBRE_NATIVE_BOT_PRIVATE_KEY }}
|
||||
owner: ${{ github.repository_owner }}
|
||||
|
||||
- run: npm install
|
||||
working-directory: .
|
||||
|
||||
- name: Release (CocoaPods)
|
||||
shell: bash -leo pipefail {0} # so pod is found
|
||||
run: gh workflow run ios-release-cocoapods.yml --field version=${{ env.version }}
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Publish release (remove draft)
|
||||
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
||||
with:
|
||||
tag_name: ios-v${{ env.version }}
|
||||
name: ios-v${{ env.version }}
|
||||
draft: false
|
||||
|
||||
- name: Release (Swift Package Index)
|
||||
run: |
|
||||
echo "::add-mask::${{ steps.generate_token.outputs.token }}"
|
||||
@@ -192,22 +208,6 @@ jobs:
|
||||
"version":"${{ env.version }}",
|
||||
"download_url": "https://github.com/maplibre/maplibre-native/releases/download/ios-v${{ env.version }}/MapLibre.dynamic.xcframework.zip"}}'
|
||||
|
||||
- run: npm install
|
||||
working-directory: .
|
||||
|
||||
- name: Release (CocoaPods)
|
||||
shell: bash -leo pipefail {0} # so pod is found
|
||||
run: gh workflow run ios-release-cocoapods.yml --field version=${{ env.version }}
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Publish release (remove draft)
|
||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
||||
with:
|
||||
tag_name: ios-v${{ env.version }}
|
||||
name: ios-v${{ env.version }}
|
||||
draft: false
|
||||
|
||||
- name: Write release notifications
|
||||
if: github.repository_owner == 'maplibre'
|
||||
env:
|
||||
|
||||
4
.github/workflows/ios-testapp-release.yml
vendored
4
.github/workflows/ios-testapp-release.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
runs-on: macos-26
|
||||
timeout-minutes: 90
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -49,7 +49,7 @@ jobs:
|
||||
test -f bazel-bin/platform/ios/app-swift/MapLibreApp.ipa
|
||||
|
||||
- name: Upload app to TestFlight
|
||||
uses: apple-actions/upload-testflight-build@1ad58030672057aa084b4e96beb6f7a8c627f9e6 # v5.2.1
|
||||
uses: apple-actions/upload-testflight-build@5e75ff58276689011512ba87a381d93dc67dbcf8 # v5.3.0
|
||||
with:
|
||||
app-path: bazel-bin/platform/ios/app-swift/MapLibreApp.ipa
|
||||
issuer-id: ${{ vars.APPSTORE_ISSUER_ID }}
|
||||
|
||||
2
.github/workflows/labeler.yml
vendored
2
.github/workflows/labeler.yml
vendored
@@ -9,4 +9,4 @@ jobs:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@b8dd2d9be0f68b860e7dae5dae7d772984eacd6d # v6.2.0
|
||||
- uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
|
||||
|
||||
16
.github/workflows/linux-ci.yml
vendored
16
.github/workflows/linux-ci.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
||||
outputs:
|
||||
should_skip: ${{ github.event_name != 'workflow_dispatch' && steps.changed-files.outputs.linux_any_modified != 'true' }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -66,20 +66,20 @@ jobs:
|
||||
rust: true
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
|
||||
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||
with:
|
||||
languages: cpp
|
||||
|
||||
- name: Install dependencies
|
||||
run: .github/scripts/install-linux-deps
|
||||
|
||||
- uses: taiki-e/install-action@2ca9b94c269419b7b0c711c09d0b21c4e1d51145 # v2.83.1
|
||||
- uses: taiki-e/install-action@ba47c86ac325773530516bb756137ac718732518 # v2.86.5
|
||||
with:
|
||||
tool: armerge@2
|
||||
|
||||
@@ -156,7 +156,7 @@ jobs:
|
||||
# CodeQL
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
|
||||
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||
with:
|
||||
category: "/language:cpp"
|
||||
|
||||
@@ -199,7 +199,7 @@ jobs:
|
||||
linux-coverage:
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -215,7 +215,7 @@ jobs:
|
||||
${{ runner.os }}-bazel-
|
||||
path: ~/.cache/bazel
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
@@ -249,7 +249,7 @@ jobs:
|
||||
- linux-build-and-test
|
||||
- linux-coverage
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- if: github.event_name == 'pull_request'
|
||||
uses: ./.github/actions/save-pr-number
|
||||
|
||||
4
.github/workflows/macos-ci.yml
vendored
4
.github/workflows/macos-ci.yml
vendored
@@ -69,7 +69,7 @@ jobs:
|
||||
shell: bash
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
fetch-depth: 0
|
||||
@@ -106,7 +106,7 @@ jobs:
|
||||
name: wgpu
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
|
||||
16
.github/workflows/macos-release.yml
vendored
16
.github/workflows/macos-release.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
working-directory: platform/macos
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
working-directory: .
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
with:
|
||||
name: xcframework
|
||||
path: |
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
working-directory: platform/macos
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -92,7 +92,7 @@ jobs:
|
||||
working-directory: .
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
with:
|
||||
name: xcframework-static
|
||||
path: |
|
||||
@@ -111,13 +111,13 @@ jobs:
|
||||
working-directory: platform/macos
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- uses: actions/download-artifact@v8
|
||||
|
||||
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v4
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
|
||||
@@ -153,7 +153,7 @@ jobs:
|
||||
cat changelog_for_version.md
|
||||
|
||||
- name: Release (GitHub) - Create Draft
|
||||
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
|
||||
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
||||
with:
|
||||
name: macos-v${{ env.version }}
|
||||
files: |
|
||||
@@ -167,7 +167,7 @@ jobs:
|
||||
draft: true
|
||||
|
||||
- name: Publish release (remove draft)
|
||||
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
|
||||
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
|
||||
with:
|
||||
tag_name: macos-v${{ env.version }}
|
||||
name: macos-v${{ env.version }}
|
||||
|
||||
4
.github/workflows/node-ci.yml
vendored
4
.github/workflows/node-ci.yml
vendored
@@ -100,7 +100,7 @@ jobs:
|
||||
run: git config --global core.longpaths true
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -141,7 +141,7 @@ jobs:
|
||||
/usr/sbin/update-ccache-symlinks
|
||||
|
||||
- name: Use Node.js from nvmrc
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: 'platform/node/.nvmrc'
|
||||
|
||||
|
||||
14
.github/workflows/node-release.yml
vendored
14
.github/workflows/node-release.yml
vendored
@@ -17,12 +17,12 @@ jobs:
|
||||
run:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js from nvmrc
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: 'platform/node/.nvmrc'
|
||||
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
run:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -118,7 +118,7 @@ jobs:
|
||||
run: git config --global core.longpaths true
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -159,7 +159,7 @@ jobs:
|
||||
/usr/sbin/update-ccache-symlinks
|
||||
|
||||
- name: Use Node.js from nvmrc
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: 'platform/node/.nvmrc'
|
||||
|
||||
@@ -297,12 +297,12 @@ jobs:
|
||||
shell: bash
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js from nvmrc
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: 'platform/node/.nvmrc'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
|
||||
8
.github/workflows/pr-bloaty-ios.yml
vendored
8
.github/workflows/pr-bloaty-ios.yml
vendored
@@ -19,14 +19,14 @@ jobs:
|
||||
outputs:
|
||||
should_skip: ${{ steps.parent_workflow.outputs.was_skipped_or_cancelled }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github
|
||||
.nvmrc
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
if: needs.pre_job.outputs.should_skip == 'false'
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -85,7 +85,7 @@ jobs:
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
if: vars.OIDC_AWS_ROLE_TO_ASSUME
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
|
||||
12
.github/workflows/pr-linux-tests.yml
vendored
12
.github/workflows/pr-linux-tests.yml
vendored
@@ -22,14 +22,14 @@ jobs:
|
||||
outputs:
|
||||
should_skip: ${{ steps.parent_workflow.outputs.was_skipped_or_cancelled }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github
|
||||
.nvmrc
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
@@ -48,7 +48,7 @@ jobs:
|
||||
if: needs.pre_job.outputs.should_skip == 'false'
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@@ -95,7 +95,7 @@ jobs:
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
if: github.ref == 'refs/heads/main' && vars.OIDC_AWS_ROLE_TO_ASSUME
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
@@ -139,7 +139,7 @@ jobs:
|
||||
if: needs.pre_job.outputs.should_skip == 'false'
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: true
|
||||
persist-credentials: false
|
||||
@@ -170,7 +170,7 @@ jobs:
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
if: github.ref == 'refs/heads/main' && vars.OIDC_AWS_ROLE_TO_ASSUME
|
||||
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
|
||||
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
|
||||
with:
|
||||
aws-region: us-west-2
|
||||
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
|
||||
|
||||
2
.github/workflows/qt-ci.yml
vendored
2
.github/workflows/qt-ci.yml
vendored
@@ -104,7 +104,7 @@ jobs:
|
||||
run: git config --global core.longpaths true
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
path: source
|
||||
submodules: recursive
|
||||
|
||||
12
.github/workflows/rust-ci.yaml
vendored
12
.github/workflows/rust-ci.yaml
vendored
@@ -7,6 +7,10 @@ on:
|
||||
branches: [ main ]
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
||||
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: rustutils/
|
||||
@@ -23,9 +27,9 @@ jobs:
|
||||
- os: windows-latest
|
||||
- os: ubuntu-latest
|
||||
steps:
|
||||
- uses: taiki-e/install-action@2ca9b94c269419b7b0c711c09d0b21c4e1d51145 # v2.83.1
|
||||
- uses: taiki-e/install-action@ba47c86ac325773530516bb756137ac718732518 # v2.86.5
|
||||
with: { tool: just }
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- run: just -v ci-test
|
||||
@@ -34,9 +38,9 @@ jobs:
|
||||
name: Rust tests MSRV (Minimal Supported Rust Version)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: taiki-e/install-action@2ca9b94c269419b7b0c711c09d0b21c4e1d51145 # v2.83.1
|
||||
- uses: taiki-e/install-action@ba47c86ac325773530516bb756137ac718732518 # v2.86.5
|
||||
with: { tool: just }
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Read crate metadata
|
||||
|
||||
6
.github/workflows/upload-coverage.yml
vendored
6
.github/workflows/upload-coverage.yml
vendored
@@ -12,14 +12,14 @@ jobs:
|
||||
outputs:
|
||||
should_run: ${{ !steps.parent_workflow.outputs.was_skipped_or_cancelled }}
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github
|
||||
.nvmrc
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
if: needs.pre_job.outputs.should_run == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
|
||||
4
.github/workflows/validate-pr-title.yml
vendored
4
.github/workflows/validate-pr-title.yml
vendored
@@ -9,9 +9,9 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
|
||||
|
||||
4
.github/workflows/validate-scripts.yml
vendored
4
.github/workflows/validate-scripts.yml
vendored
@@ -9,11 +9,11 @@ jobs:
|
||||
validate-scripts:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
|
||||
|
||||
20
.github/workflows/windows-ci.yml
vendored
20
.github/workflows/windows-ci.yml
vendored
@@ -37,7 +37,7 @@ jobs:
|
||||
- run: |
|
||||
git config --system core.longpaths true
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -62,7 +62,7 @@ jobs:
|
||||
- run: |
|
||||
git config --system core.longpaths true
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
sparse-checkout: |
|
||||
platform/windows/vendor
|
||||
@@ -118,19 +118,19 @@ jobs:
|
||||
- run: |
|
||||
git config --system core.longpaths true
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
|
||||
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||
with:
|
||||
languages: cpp
|
||||
|
||||
- uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
|
||||
|
||||
- uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
|
||||
- uses: mozilla-actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
|
||||
|
||||
- name: Initialize sccache
|
||||
run: |
|
||||
@@ -167,7 +167,7 @@ jobs:
|
||||
# CodeQL
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
|
||||
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||
with:
|
||||
category: "/language:cpp"
|
||||
|
||||
@@ -255,7 +255,7 @@ jobs:
|
||||
git config --system core.longpaths true
|
||||
git config --system core.autocrlf input
|
||||
|
||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
submodules: recursive
|
||||
persist-credentials: false
|
||||
@@ -279,11 +279,11 @@ jobs:
|
||||
libuv:p
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
|
||||
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||
with:
|
||||
languages: cpp
|
||||
|
||||
- uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
|
||||
- uses: mozilla-actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
|
||||
|
||||
- name: Initialize sccache
|
||||
run: |
|
||||
@@ -308,7 +308,7 @@ jobs:
|
||||
# CodeQL
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
|
||||
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
|
||||
with:
|
||||
category: "/language:cpp"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ MapLibre Native uses a monolithic repository that houses both core C++ code and
|
||||
|
||||
## Core cross-platform C++ code
|
||||
|
||||
In the repository, core C++ code is contained in the `include` and `src` directories. The former includes headers that are considered to make up the "public" core C++ API, while the latter includes `.cpp` implementation files and headers that are private to the implementation. Within both directories, files are nested under an `mbgl` directory, which has various subdirectories based on areas of functionality. Both public and private headers therefore can (and should) always be included with the form `#include <mbgl/___/___.hpp>`.
|
||||
In the repository, core C++ code is contained in the `include` and `src` directories. The former includes headers that are considered to make up the "public" core C++ API, while the latter includes `.cpp` implementation files and headers that are private to the implementation. Within both directories, files are nested under an `mbgl` directory, which has various subdirectories based on areas of functionality. Both public and private headers therefore can (and should) always be included with the form `#include <mln/___/___.hpp>`.
|
||||
|
||||
## Platform specific code
|
||||
|
||||
@@ -24,7 +24,7 @@ Code and build scripts belonging to platform SDKs are contained in the `platform
|
||||
## Other directories
|
||||
|
||||
- `benchmark` contains the performance tests built using https://github.com/google/benchmark/. The code under this directory builds the `mbgl-benchmark-test` executable to execute the benchmark tests.
|
||||
- The entry point of this executable is `platform/default/src/mbgl/benchmark/main.cpp -> benchmark/src/mbgl/benchmark/benchmark.cpp`.
|
||||
- The entry point of this executable is `platform/default/src/mln/benchmark/main.cpp -> benchmark/src/mln/benchmark/benchmark.cpp`.
|
||||
- iOS SDK runs benchmark test through a separate app named `BenchmarkApp`.
|
||||
- Android SDK does not have benchmark test.
|
||||
- `bin` contains the code for tools like `mbgl-cache`, `mbgl-offline`, and `mbgl-render`.
|
||||
@@ -142,4 +142,4 @@ To minimize data races and invalid memory access, we aim for zero shared memory
|
||||
|
||||
Invoking a task on another thread itself creates an ownership obligation: the responsibility for the work happening on the other thread. This ownership is represented by the invocation method returning `std::unique_ptr<AsyncTask>`. Destroying this object indicates that the result of the task is no longer required: the callback is guaranteed not to be called, and the work on the other thread may be aborted (if doing so is convenient).
|
||||
|
||||
All this is implemented by [Thread](https://github.com/mapbox/mapbox-gl-native/blob/master/src/mbgl/util/thread.hpp) and [RunLoop](https://github.com/mapbox/mapbox-gl-native/blob/master/include/mbgl/util/run_loop.hpp).
|
||||
All this is implemented by [Thread](https://github.com/mapbox/mapbox-gl-native/blob/master/src/mln/util/thread.hpp) and [RunLoop](https://github.com/mapbox/mapbox-gl-native/blob/master/include/mln/util/run_loop.hpp).
|
||||
|
||||
20
CHANGELOG.md
20
CHANGELOG.md
@@ -29,6 +29,10 @@
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- *...Add new stuff here...*
|
||||
- [core] Draw numbers and short uppercase codes upright in vertical CJK line labels ([#4565](https://github.com/maplibre/maplibre-native/issues/4565)), compat to [maplibre-gl-js#8205](https://github.com/maplibre/maplibre-gl-js/pull/8205).
|
||||
- [core] Fix `ImageSource` not rendering across world copies ([#4508](https://github.com/maplibre/maplibre-native/issues/4508)).
|
||||
- [core] Repaint data-driven symbol paint properties after feature-state updates.
|
||||
- [core] Accept alpha values in legacy comma-separated `hsl()` colors ([#4434](https://github.com/maplibre/maplibre-native/issues/4434)).
|
||||
- [core] Fix thread-unsafe headless OpenGL display singleton initialization [#4332](https://github.com/maplibre/maplibre-native/pull/4332)
|
||||
- [macos] Fix `mlt-cpp` and `mbgl-vendor-icu` not being included in the amalgamation
|
||||
- [core] Fix memory access violation exception in vector_tile_data.cpp [#632](https://github.com/maplibre/maplibre-native/pull/632)
|
||||
@@ -85,7 +89,7 @@
|
||||
|
||||
- [ios, macos] Allow specifying multiple fonts or font families for local font rendering ([#16253](https://github.com/mapbox/mapbox-gl-native/pull/16253))
|
||||
|
||||
By default, CJK characters are now set in the font specified by the `text-font` layout property. If the named font is not installed on the device or bundled with the application, the characters are set in one of the fallback fonts passed into the `localFontFamily` parameter of `mbgl::Renderer::Renderer()` and `mbgl::MapSnapshotter::MapSnapshotter()`. This parameter can now contain a list of font family names, font display names, and font PostScript names, each name separated by a newline.
|
||||
By default, CJK characters are now set in the font specified by the `text-font` layout property. If the named font is not installed on the device or bundled with the application, the characters are set in one of the fallback fonts passed into the `localFontFamily` parameter of `mln::Renderer::Renderer()` and `mln::MapSnapshotter::MapSnapshotter()`. This parameter can now contain a list of font family names, font display names, and font PostScript names, each name separated by a newline.
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
@@ -139,7 +143,7 @@
|
||||
|
||||
- [core][tile mode] Fix variable placement for labels with the `icon-text-fit` property set ([#16382](https://github.com/mapbox/mapbox-gl-native/pull/16382))
|
||||
|
||||
The `symbolIntersectsTileEdges()` util in `mbgl::TilePlacement` now considers icon shift for the variable symbols with enabled icon-text-fit setting, thus providing more accurate results.
|
||||
The `symbolIntersectsTileEdges()` util in `mln::TilePlacement` now considers icon shift for the variable symbols with enabled icon-text-fit setting, thus providing more accurate results.
|
||||
|
||||
- [core] Correctly log a warning instead of crashing when a non-existent image is attempted to be removed. ([#16391](https://github.com/mapbox/mapbox-gl-native/pull/16391))
|
||||
|
||||
@@ -170,7 +174,7 @@
|
||||
- [android] Add jni binding for styleable snapshotter ([#16286](https://github.com/mapbox/mapbox-gl-native/pull/16286))
|
||||
|
||||
- [core] Ability to set generic layer properties using setProperty method ([#16324](https://github.com/mapbox/mapbox-gl-native/pull/16324))
|
||||
This change enables the following new keys for the `mbgl::Layer::setProperty()` API:
|
||||
This change enables the following new keys for the `mln::Layer::setProperty()` API:
|
||||
- "filter" invokes `setFilter()`
|
||||
- "minzoom" invokes `setMinZoom()`
|
||||
- "maxzoom" invokes `setMaxZoom()`
|
||||
@@ -252,7 +256,7 @@
|
||||
|
||||
- Fixed using of the `in` expression as a layer filter ([#16272](https://github.com/mapbox/mapbox-gl-native/pull/16272))
|
||||
|
||||
The bug was caused by `mbgl::style::conversion::isExpression()` always returning `false` for the `in` expression.
|
||||
The bug was caused by `mln::style::conversion::isExpression()` always returning `false` for the `in` expression.
|
||||
|
||||
### 🧩 Architectural changes
|
||||
|
||||
@@ -296,9 +300,9 @@
|
||||
|
||||
##### ⚠️ Breaking changes
|
||||
|
||||
- Changes to `mbgl::FileSourceManager::getFileSource()` ([#16238](https://github.com/mapbox/mapbox-gl-native/pull/16238))
|
||||
- Changes to `mln::FileSourceManager::getFileSource()` ([#16238](https://github.com/mapbox/mapbox-gl-native/pull/16238))
|
||||
|
||||
It returns now `mbgl::PassRefPtr<FileSource>` (previously was `std::shared_ptr<FileSource>`) in order to enforce keeping the strong reference to the returned object.
|
||||
It returns now `mln::PassRefPtr<FileSource>` (previously was `std::shared_ptr<FileSource>`) in order to enforce keeping the strong reference to the returned object.
|
||||
|
||||
Breaking code example:
|
||||
`auto fs = FileSourceManager::getFileSource(); fs->..`
|
||||
@@ -306,9 +310,9 @@
|
||||
Possible fix:
|
||||
`std::shared_ptr<FileSource> fs = `;
|
||||
|
||||
- The `mbgl::OnlineFileSource` class cannot be used directly ([#16238](https://github.com/mapbox/mapbox-gl-native/pull/16238))
|
||||
- The `mln::OnlineFileSource` class cannot be used directly ([#16238](https://github.com/mapbox/mapbox-gl-native/pull/16238))
|
||||
|
||||
Clients must use the parent `mbgl::FileSource` interface instead.
|
||||
Clients must use the parent `mln::FileSource` interface instead.
|
||||
|
||||
Breaking code example:
|
||||
`std::shared_ptr<OnlineFileSource> onlineSource = std::static_pointer_cast<OnlineFileSource>(FileSourceManager::get()->getFileSource(..));`
|
||||
|
||||
1843
CMakeLists.txt
1843
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
2486
bazel/core.bzl
2486
bazel/core.bzl
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,7 @@ add_library(
|
||||
${PROJECT_SOURCE_DIR}/benchmark/parse/tile_mask.benchmark.cpp
|
||||
${PROJECT_SOURCE_DIR}/benchmark/parse/vector_tile.benchmark.cpp
|
||||
${PROJECT_SOURCE_DIR}/benchmark/renderer/group_layers.benchmark.cpp
|
||||
${PROJECT_SOURCE_DIR}/benchmark/src/mbgl/benchmark/benchmark.cpp
|
||||
${PROJECT_SOURCE_DIR}/benchmark/src/mln/benchmark/benchmark.cpp
|
||||
${PROJECT_SOURCE_DIR}/benchmark/storage/offline_database.benchmark.cpp
|
||||
${PROJECT_SOURCE_DIR}/benchmark/util/tilecover.benchmark.cpp
|
||||
${PROJECT_SOURCE_DIR}/benchmark/util/color.benchmark.cpp
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/map/map.hpp>
|
||||
#include <mbgl/map/map_options.hpp>
|
||||
#include <mbgl/gfx/headless_frontend.hpp>
|
||||
#include <mbgl/renderer/renderer.hpp>
|
||||
#include <mbgl/style/style.hpp>
|
||||
#include <mbgl/style/image.hpp>
|
||||
#include <mbgl/storage/network_status.hpp>
|
||||
#include <mbgl/util/image.hpp>
|
||||
#include <mbgl/util/io.hpp>
|
||||
#include <mbgl/util/run_loop.hpp>
|
||||
#include <mln/map/map.hpp>
|
||||
#include <mln/map/map_options.hpp>
|
||||
#include <mln/gfx/headless_frontend.hpp>
|
||||
#include <mln/renderer/renderer.hpp>
|
||||
#include <mln/style/style.hpp>
|
||||
#include <mln/style/image.hpp>
|
||||
#include <mln/storage/network_status.hpp>
|
||||
#include <mln/util/image.hpp>
|
||||
#include <mln/util/io.hpp>
|
||||
#include <mln/util/run_loop.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
namespace {
|
||||
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/gfx/headless_frontend.hpp>
|
||||
#include <mbgl/map/map.hpp>
|
||||
#include <mbgl/map/map_observer.hpp>
|
||||
#include <mbgl/map/map_options.hpp>
|
||||
#include <mbgl/renderer/renderer.hpp>
|
||||
#include <mbgl/storage/network_status.hpp>
|
||||
#include <mbgl/storage/resource_options.hpp>
|
||||
#include <mbgl/style/image.hpp>
|
||||
#include <mbgl/style/layers/symbol_layer.hpp>
|
||||
#include <mbgl/style/sources/geojson_source.hpp>
|
||||
#include <mbgl/style/style.hpp>
|
||||
#include <mbgl/util/image.hpp>
|
||||
#include <mbgl/util/io.hpp>
|
||||
#include <mbgl/util/run_loop.hpp>
|
||||
#include <mln/gfx/headless_frontend.hpp>
|
||||
#include <mln/map/map.hpp>
|
||||
#include <mln/map/map_observer.hpp>
|
||||
#include <mln/map/map_options.hpp>
|
||||
#include <mln/renderer/renderer.hpp>
|
||||
#include <mln/storage/network_status.hpp>
|
||||
#include <mln/storage/resource_options.hpp>
|
||||
#include <mln/style/image.hpp>
|
||||
#include <mln/style/layers/symbol_layer.hpp>
|
||||
#include <mln/style/sources/geojson_source.hpp>
|
||||
#include <mln/style/style.hpp>
|
||||
#include <mln/util/image.hpp>
|
||||
#include <mln/util/io.hpp>
|
||||
#include <mln/util/run_loop.hpp>
|
||||
|
||||
#include <sstream>
|
||||
#include <optional>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -124,7 +124,7 @@ static void API_renderStill_recreate_map_2(::benchmark::State& state) {
|
||||
}
|
||||
|
||||
static void API_renderStill_multiple_sources(::benchmark::State& state) {
|
||||
using namespace mbgl::style;
|
||||
using namespace mln::style;
|
||||
RenderBenchmark bench;
|
||||
HeadlessFrontend frontend{size, pixelRatio};
|
||||
Map map{frontend,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/style/conversion/json.hpp>
|
||||
#include <mbgl/style/conversion/function.hpp>
|
||||
#include <mbgl/style/conversion/property_value.hpp>
|
||||
#include <mbgl/style/conversion_impl.hpp>
|
||||
#include <mln/style/conversion/json.hpp>
|
||||
#include <mln/style/conversion/function.hpp>
|
||||
#include <mln/style/conversion/property_value.hpp>
|
||||
#include <mln/style/conversion_impl.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mbgl::style;
|
||||
using namespace mln;
|
||||
using namespace mln::style;
|
||||
|
||||
static std::string createFunctionJSON(size_t stopCount) {
|
||||
std::string stops = "[";
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/benchmark/stub_geometry_tile_feature.hpp>
|
||||
#include <mln/benchmark/stub_geometry_tile_feature.hpp>
|
||||
|
||||
#include <mbgl/style/conversion/json.hpp>
|
||||
#include <mbgl/style/conversion/function.hpp>
|
||||
#include <mbgl/style/conversion/property_value.hpp>
|
||||
#include <mbgl/style/conversion_impl.hpp>
|
||||
#include <mln/style/conversion/json.hpp>
|
||||
#include <mln/style/conversion/function.hpp>
|
||||
#include <mln/style/conversion/property_value.hpp>
|
||||
#include <mln/style/conversion_impl.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mbgl::style;
|
||||
using namespace mln;
|
||||
using namespace mln::style;
|
||||
|
||||
static std::string createFunctionJSON(size_t stopCount) {
|
||||
std::string stops = "[";
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/benchmark/stub_geometry_tile_feature.hpp>
|
||||
#include <mln/benchmark/stub_geometry_tile_feature.hpp>
|
||||
|
||||
#include <mbgl/style/conversion/json.hpp>
|
||||
#include <mbgl/style/conversion/property_value.hpp>
|
||||
#include <mbgl/style/conversion_impl.hpp>
|
||||
#include <mln/style/conversion/json.hpp>
|
||||
#include <mln/style/conversion/property_value.hpp>
|
||||
#include <mln/style/conversion_impl.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mbgl::style;
|
||||
using namespace mln;
|
||||
using namespace mln::style;
|
||||
|
||||
static std::string createFunctionJSON(size_t stopCount) {
|
||||
std::string stops = "[";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
int runBenchmark(int argc, char* argv[]);
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,8 +1,8 @@
|
||||
#include <ios_test_runner.hpp>
|
||||
|
||||
#include <mbgl/benchmark.hpp>
|
||||
#include <mln/benchmark.hpp>
|
||||
|
||||
#include <mbgl/util/logging.hpp>
|
||||
#include <mln/util/logging.hpp>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <vector>
|
||||
@@ -22,13 +22,13 @@ bool TestRunner::startTest(const std::string& basePath) {
|
||||
argv.push_back(nullptr);
|
||||
|
||||
if (chdir(basePath.c_str())) {
|
||||
mbgl::Log::Error(mbgl::Event::General, "Failed to change the directory to " + basePath);
|
||||
mln::Log::Error(mln::Event::General, "Failed to change the directory to " + basePath);
|
||||
return false;
|
||||
}
|
||||
|
||||
mbgl::Log::Info(mbgl::Event::General, "Start BenchmarkRunner");
|
||||
int status = mbgl::runBenchmark(static_cast<uint32_t>(argv.size()), argv.data());
|
||||
mbgl::Log::Info(mbgl::Event::General, "BenchmarkRunner finished with status: '%d'", status);
|
||||
mln::Log::Info(mln::Event::General, "Start BenchmarkRunner");
|
||||
int status = mln::runBenchmark(static_cast<uint32_t>(argv.size()), argv.data());
|
||||
mln::Log::Info(mln::Event::General, "BenchmarkRunner finished with status: '%d'", status);
|
||||
|
||||
return status == 0;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/style/filter.hpp>
|
||||
#include <mbgl/style/conversion/json.hpp>
|
||||
#include <mbgl/style/conversion/filter.hpp>
|
||||
#include <mbgl/style/conversion_impl.hpp>
|
||||
#include <mbgl/tile/geometry_tile_data.hpp>
|
||||
#include <mbgl/benchmark/stub_geometry_tile_feature.hpp>
|
||||
#include <mln/style/filter.hpp>
|
||||
#include <mln/style/conversion/json.hpp>
|
||||
#include <mln/style/conversion/filter.hpp>
|
||||
#include <mln/style/conversion_impl.hpp>
|
||||
#include <mln/tile/geometry_tile_data.hpp>
|
||||
#include <mln/benchmark/stub_geometry_tile_feature.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
style::Filter parse(const char* expression) {
|
||||
style::conversion::Error error;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/algorithm/update_tile_masks.hpp>
|
||||
#include <mln/algorithm/update_tile_masks.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
class FakeTile {
|
||||
public:
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/tile/vector_mvt_tile_data.hpp>
|
||||
#include <mbgl/util/io.hpp>
|
||||
#include <mln/tile/vector_mvt_tile_data.hpp>
|
||||
#include <mln/util/io.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
static void Parse_VectorTile(benchmark::State& state) {
|
||||
auto data = std::make_shared<std::string>(
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
// Core function to benchmark
|
||||
#include <mbgl/renderer/group_by_layout.hpp>
|
||||
#include <mln/renderer/group_by_layout.hpp>
|
||||
|
||||
// For mock layer properties
|
||||
#include <mbgl/style/layer_properties.hpp>
|
||||
#include <mbgl/style/layers/fill_layer_impl.hpp>
|
||||
#include <mbgl/style/layers/fill_layer_properties.hpp>
|
||||
#include <mbgl/style/layers/line_layer_impl.hpp>
|
||||
#include <mbgl/style/layers/line_layer_properties.hpp>
|
||||
#include <mbgl/style/layers/symbol_layer_impl.hpp>
|
||||
#include <mbgl/style/layers/symbol_layer_properties.hpp>
|
||||
#include <mbgl/style/layers/circle_layer_impl.hpp>
|
||||
#include <mbgl/style/layers/circle_layer_properties.hpp>
|
||||
#include <mbgl/util/immutable.hpp>
|
||||
#include <mln/style/layer_properties.hpp>
|
||||
#include <mln/style/layers/fill_layer_impl.hpp>
|
||||
#include <mln/style/layers/fill_layer_properties.hpp>
|
||||
#include <mln/style/layers/line_layer_impl.hpp>
|
||||
#include <mln/style/layers/line_layer_properties.hpp>
|
||||
#include <mln/style/layers/symbol_layer_impl.hpp>
|
||||
#include <mln/style/layers/symbol_layer_properties.hpp>
|
||||
#include <mln/style/layers/circle_layer_impl.hpp>
|
||||
#include <mln/style/layers/circle_layer_properties.hpp>
|
||||
#include <mln/util/immutable.hpp>
|
||||
|
||||
// For real style loading
|
||||
#include <mbgl/style/style_impl.hpp>
|
||||
#include <mbgl/storage/file_source.hpp>
|
||||
#include <mbgl/util/io.hpp>
|
||||
#include <mbgl/util/run_loop.hpp>
|
||||
#include <mbgl/layermanager/layer_manager.hpp>
|
||||
#include <mbgl/renderer/render_layer.hpp>
|
||||
#include <mbgl/util/thread_pool.hpp>
|
||||
#include <mln/style/style_impl.hpp>
|
||||
#include <mln/storage/file_source.hpp>
|
||||
#include <mln/util/io.hpp>
|
||||
#include <mln/util/run_loop.hpp>
|
||||
#include <mln/layermanager/layer_manager.hpp>
|
||||
#include <mln/renderer/render_layer.hpp>
|
||||
#include <mln/util/thread_pool.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mbgl::style;
|
||||
using namespace mln;
|
||||
using namespace mln::style;
|
||||
|
||||
// Minimal FileSource stub for benchmark (doesn't actually fetch resources)
|
||||
class StubFileSource : public FileSource {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include <mbgl/benchmark.hpp>
|
||||
#include <mln/benchmark.hpp>
|
||||
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
int runBenchmark(int argc, char* argv[]) {
|
||||
::benchmark::Initialize(&argc, argv);
|
||||
@@ -10,4 +10,4 @@ int runBenchmark(int argc, char* argv[]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/tile/geometry_tile_data.hpp>
|
||||
#include <mbgl/util/feature.hpp>
|
||||
#include <mln/tile/geometry_tile_data.hpp>
|
||||
#include <mln/util/feature.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
class StubGeometryTileFeature : public GeometryTileFeature {
|
||||
public:
|
||||
@@ -1,11 +1,11 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
#include <mbgl/storage/offline_database.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
#include <mbgl/storage/response.hpp>
|
||||
#include <mbgl/storage/sqlite3.hpp>
|
||||
#include <mbgl/util/string.hpp>
|
||||
#include <mbgl/util/logging.hpp>
|
||||
#include <mln/storage/offline_database.hpp>
|
||||
#include <mln/storage/resource.hpp>
|
||||
#include <mln/storage/response.hpp>
|
||||
#include <mln/storage/sqlite3.hpp>
|
||||
#include <mln/util/string.hpp>
|
||||
#include <mln/util/logging.hpp>
|
||||
|
||||
#include <random>
|
||||
|
||||
@@ -18,14 +18,14 @@ public:
|
||||
|
||||
response.data = std::make_shared<std::string>(50 * 1024, 0);
|
||||
response.mustRevalidate = false;
|
||||
response.expires = mbgl::util::now() + 1h;
|
||||
response.expires = mln::util::now() + 1h;
|
||||
|
||||
resetAmbientTiles();
|
||||
resetRegion();
|
||||
}
|
||||
|
||||
void resetAmbientTiles() {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
db.clearAmbientCache();
|
||||
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
}
|
||||
|
||||
void resetRegion() {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
auto regions = db.listRegions().value();
|
||||
if (!regions.empty()) {
|
||||
@@ -58,8 +58,8 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
mbgl::Response response;
|
||||
mbgl::OfflineDatabase db{":memory:", mbgl::TileServerOptions::DefaultConfiguration()};
|
||||
mln::Response response;
|
||||
mln::OfflineDatabase db{":memory:", mln::TileServerOptions::DefaultConfiguration()};
|
||||
|
||||
const unsigned tileCount = 100;
|
||||
int64_t regionID = 0;
|
||||
@@ -78,7 +78,7 @@ BENCHMARK_F(OfflineDatabase, DeleteRegion)(benchmark::State& state) {
|
||||
}
|
||||
|
||||
BENCHMARK_F(OfflineDatabase, InsertTileRegion)(benchmark::State& state) {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
while (state.KeepRunning()) {
|
||||
const Resource offline = Resource::tile(
|
||||
@@ -99,7 +99,7 @@ BENCHMARK_F(OfflineDatabase, ClearAmbientCache)(benchmark::State& state) {
|
||||
}
|
||||
|
||||
BENCHMARK_F(OfflineDatabase, InsertTileCache)(benchmark::State& state) {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
while (state.KeepRunning()) {
|
||||
const Resource ambient = Resource::tile(
|
||||
@@ -109,7 +109,7 @@ BENCHMARK_F(OfflineDatabase, InsertTileCache)(benchmark::State& state) {
|
||||
}
|
||||
|
||||
BENCHMARK_F(OfflineDatabase, InsertBigTileCache)(benchmark::State& state) {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
Response big;
|
||||
big.data = std::make_shared<std::string>(util::DEFAULT_MAX_CACHE_SIZE / 100, 0);
|
||||
@@ -122,7 +122,7 @@ BENCHMARK_F(OfflineDatabase, InsertBigTileCache)(benchmark::State& state) {
|
||||
}
|
||||
|
||||
BENCHMARK_F(OfflineDatabase, GetTile)(benchmark::State& state) {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
std::random_device rd;
|
||||
std::mt19937 gen(rd());
|
||||
@@ -136,7 +136,7 @@ BENCHMARK_F(OfflineDatabase, GetTile)(benchmark::State& state) {
|
||||
}
|
||||
|
||||
BENCHMARK_F(OfflineDatabase, AddTilesToFullDatabase)(benchmark::State& state) {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
Log::setObserver(std::make_unique<Log::NullObserver>());
|
||||
db.setMaximumAmbientCacheSize(50 * 1024 * 5);
|
||||
@@ -152,7 +152,7 @@ BENCHMARK_F(OfflineDatabase, AddTilesToFullDatabase)(benchmark::State& state) {
|
||||
|
||||
BENCHMARK_F(OfflineDatabase, AddTilesToDisabledDatabase)
|
||||
(benchmark::State& state) {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
auto regions = db.listRegions().value();
|
||||
if (!regions.empty()) {
|
||||
@@ -171,7 +171,7 @@ BENCHMARK_F(OfflineDatabase, AddTilesToDisabledDatabase)
|
||||
|
||||
BENCHMARK_F(OfflineDatabase, GetTileFromDisabledDatabase)
|
||||
(benchmark::State& state) {
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
auto regions = db.listRegions().value();
|
||||
if (!regions.empty()) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <mbgl/util/color.hpp>
|
||||
#include <mln/util/color.hpp>
|
||||
|
||||
static const std::vector<std::string> testStrings = {"#000000",
|
||||
"#FFFFFF",
|
||||
@@ -20,7 +20,7 @@ namespace {
|
||||
void ColorParse(benchmark::State& state) {
|
||||
for (auto _ : state) {
|
||||
for (const auto& str : testStrings) {
|
||||
auto result = mbgl::Color::parse(str);
|
||||
auto result = mln::Color::parse(str);
|
||||
benchmark::DoNotOptimize(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
#include <mbgl/util/geo.hpp>
|
||||
#include <mbgl/util/geometry.hpp>
|
||||
#include <mbgl/util/tile_coordinate.hpp>
|
||||
#include <mbgl/util/tile_cover.hpp>
|
||||
#include <mbgl/map/transform.hpp>
|
||||
#include <mln/util/geo.hpp>
|
||||
#include <mln/util/geometry.hpp>
|
||||
#include <mln/util/tile_coordinate.hpp>
|
||||
#include <mln/util/tile_cover.hpp>
|
||||
#include <mln/map/transform.hpp>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
static const LatLngBounds sanFrancisco = LatLngBounds::hull({37.6609, -122.5744}, {37.8271, -122.3204});
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include <mbgl/storage/file_source_manager.hpp>
|
||||
#include <mbgl/storage/resource.hpp>
|
||||
#include <mbgl/storage/resource_options.hpp>
|
||||
#include <mbgl/util/chrono.hpp>
|
||||
#include <mbgl/util/run_loop.hpp>
|
||||
#include <mln/storage/file_source_manager.hpp>
|
||||
#include <mln/storage/resource.hpp>
|
||||
#include <mln/storage/resource_options.hpp>
|
||||
#include <mln/util/chrono.hpp>
|
||||
#include <mln/util/run_loop.hpp>
|
||||
|
||||
#include <args.hxx>
|
||||
#include <mapbox/io/io.hpp>
|
||||
@@ -25,20 +25,20 @@ int main(int argc, char* argv[]) {
|
||||
args::ValueFlag<unsigned long> expiresValue(p, "expires", "Expires date, will use 'now' otherwise", {'e'});
|
||||
args::ValueFlag<unsigned long> modifiedValue(p, "modified", "Modified date, will use 'now' otherwise", {'m'});
|
||||
|
||||
std::unordered_map<std::string, mbgl::Resource::Kind> typeMap{{"glyphs", mbgl::Resource::Glyphs},
|
||||
{"image", mbgl::Resource::Image},
|
||||
{"source", mbgl::Resource::Source},
|
||||
{"sprite-image", mbgl::Resource::SpriteImage},
|
||||
{"sprite-json", mbgl::Resource::SpriteJSON},
|
||||
{"style", mbgl::Resource::Style},
|
||||
{"tile", mbgl::Resource::Tile}};
|
||||
std::unordered_map<std::string, mln::Resource::Kind> typeMap{{"glyphs", mln::Resource::Glyphs},
|
||||
{"image", mln::Resource::Image},
|
||||
{"source", mln::Resource::Source},
|
||||
{"sprite-image", mln::Resource::SpriteImage},
|
||||
{"sprite-json", mln::Resource::SpriteJSON},
|
||||
{"style", mln::Resource::Style},
|
||||
{"tile", mln::Resource::Tile}};
|
||||
|
||||
std::string typeHelp("One of the following (required):");
|
||||
for (const auto& key : typeMap) {
|
||||
typeHelp += " " + key.first;
|
||||
}
|
||||
|
||||
args::MapFlag<std::string, mbgl::Resource::Kind> typeFlag(
|
||||
args::MapFlag<std::string, mln::Resource::Kind> typeFlag(
|
||||
p, "type", typeHelp, {"type"}, typeMap, args::Options::Required);
|
||||
|
||||
args::Group tileIdGroup(p, "Coordinates (required for 'tile')", args::Group::Validators::AllOrNone);
|
||||
@@ -67,15 +67,15 @@ int main(int argc, char* argv[]) {
|
||||
exit(3);
|
||||
}
|
||||
|
||||
mbgl::Response response;
|
||||
mln::Response response;
|
||||
response.data = std::make_shared<std::string>(*file);
|
||||
response.etag = etagValue ? args::get(etagValue) : std::string();
|
||||
response.expires = expiresValue ? mbgl::Timestamp(mbgl::Seconds(args::get(expiresValue))) : mbgl::util::now();
|
||||
response.modified = modifiedValue ? mbgl::Timestamp(mbgl::Seconds(args::get(modifiedValue))) : mbgl::util::now();
|
||||
response.expires = expiresValue ? mln::Timestamp(mln::Seconds(args::get(expiresValue))) : mln::util::now();
|
||||
response.modified = modifiedValue ? mln::Timestamp(mln::Seconds(args::get(modifiedValue))) : mln::util::now();
|
||||
|
||||
mbgl::Resource resource(args::get(typeFlag), args::get(urlValue));
|
||||
mln::Resource resource(args::get(typeFlag), args::get(urlValue));
|
||||
|
||||
if (args::get(typeFlag) == mbgl::Resource::Tile) {
|
||||
if (args::get(typeFlag) == mln::Resource::Tile) {
|
||||
if (!xValueFlag || !yValueFlag || !zValueFlag) {
|
||||
std::cerr << "Error: -x, -y and -z must be provided for tiles" << '\n';
|
||||
exit(1);
|
||||
@@ -88,9 +88,9 @@ int main(int argc, char* argv[]) {
|
||||
.z = static_cast<int8_t>(args::get(zValueFlag))}};
|
||||
}
|
||||
|
||||
mbgl::util::RunLoop loop;
|
||||
std::shared_ptr<mbgl::FileSource> dbfs = mbgl::FileSourceManager::get()->getFileSource(
|
||||
mbgl::FileSourceType::Database, mbgl::ResourceOptions().withCachePath(args::get(cacheValue)));
|
||||
mln::util::RunLoop loop;
|
||||
std::shared_ptr<mln::FileSource> dbfs = mln::FileSourceManager::get()->getFileSource(
|
||||
mln::FileSourceType::Database, mln::ResourceOptions().withCachePath(args::get(cacheValue)));
|
||||
dbfs->forward(resource, response, [&loop] { loop.stop(); });
|
||||
loop.run();
|
||||
return 0;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#include <mbgl/util/run_loop.hpp>
|
||||
#include <mbgl/util/string.hpp>
|
||||
#include <mbgl/util/geojson.hpp>
|
||||
#include <mln/util/run_loop.hpp>
|
||||
#include <mln/util/string.hpp>
|
||||
#include <mln/util/geojson.hpp>
|
||||
|
||||
#include <mbgl/storage/database_file_source.hpp>
|
||||
#include <mbgl/storage/file_source_manager.hpp>
|
||||
#include <mbgl/storage/resource_options.hpp>
|
||||
#include <mbgl/util/client_options.hpp>
|
||||
#include <mbgl/util/tile_server_options.hpp>
|
||||
#include <mln/storage/database_file_source.hpp>
|
||||
#include <mln/storage/file_source_manager.hpp>
|
||||
#include <mln/storage/resource_options.hpp>
|
||||
#include <mln/util/client_options.hpp>
|
||||
#include <mln/util/tile_server_options.hpp>
|
||||
|
||||
#include <args.hxx>
|
||||
|
||||
@@ -51,19 +51,19 @@ mapbox::geometry::geometry<double> parseGeometry(const std::string& json) {
|
||||
});
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, mbgl::Response::Error::Reason r) {
|
||||
std::ostream& operator<<(std::ostream& os, mln::Response::Error::Reason r) {
|
||||
switch (r) {
|
||||
case mbgl::Response::Error::Reason::Success:
|
||||
case mln::Response::Error::Reason::Success:
|
||||
return os << "Response::Error::Reason::Success";
|
||||
case mbgl::Response::Error::Reason::NotFound:
|
||||
case mln::Response::Error::Reason::NotFound:
|
||||
return os << "Response::Error::Reason::NotFound";
|
||||
case mbgl::Response::Error::Reason::Server:
|
||||
case mln::Response::Error::Reason::Server:
|
||||
return os << "Response::Error::Reason::Server";
|
||||
case mbgl::Response::Error::Reason::Connection:
|
||||
case mln::Response::Error::Reason::Connection:
|
||||
return os << "Response::Error::Reason::Connection";
|
||||
case mbgl::Response::Error::Reason::RateLimit:
|
||||
case mln::Response::Error::Reason::RateLimit:
|
||||
return os << "Response::Error::Reason::RateLimit";
|
||||
case mbgl::Response::Error::Reason::Other:
|
||||
case mln::Response::Error::Reason::Other:
|
||||
return os << "Response::Error::Reason::Other";
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ int main(int argc, char* argv[]) {
|
||||
exit(2);
|
||||
}
|
||||
|
||||
auto mapTilerConfiguration = mbgl::TileServerOptions::MapTilerConfiguration();
|
||||
auto mapTilerConfiguration = mln::TileServerOptions::MapTilerConfiguration();
|
||||
|
||||
std::string style = styleValue ? args::get(styleValue) : mapTilerConfiguration.defaultStyles().at(0).getUrl();
|
||||
std::cout << " Style: " << style << std::endl;
|
||||
@@ -138,7 +138,7 @@ int main(int argc, char* argv[]) {
|
||||
const bool includeIdeographs = includeIdeographsValue ? args::get(includeIdeographsValue) : false;
|
||||
const std::string output = outputValue ? args::get(outputValue) : "offline.db";
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
OfflineRegionDefinition definition = [&]() {
|
||||
if (geometryValue) {
|
||||
@@ -185,7 +185,7 @@ int main(int argc, char* argv[]) {
|
||||
int retCode = 0;
|
||||
std::cout << "Start Merge" << std::endl;
|
||||
inputSource.mergeOfflineRegions(
|
||||
*mergePath, [&](mbgl::expected<std::vector<OfflineRegion>, std::exception_ptr> result) {
|
||||
*mergePath, [&](mln::expected<std::vector<OfflineRegion>, std::exception_ptr> result) {
|
||||
if (!result) {
|
||||
std::cerr << "Error merging database: " << util::toString(result.error()) << std::endl;
|
||||
retCode = 1;
|
||||
@@ -264,7 +264,7 @@ int main(int argc, char* argv[]) {
|
||||
std::signal(SIGINT, [](int) { stop(); });
|
||||
|
||||
fileSource->createOfflineRegion(
|
||||
definition, metadata, [&](mbgl::expected<OfflineRegion, std::exception_ptr> region_) {
|
||||
definition, metadata, [&](mln::expected<OfflineRegion, std::exception_ptr> region_) {
|
||||
if (!region_) {
|
||||
std::cerr << "Error creating region: " << util::toString(region_.error()) << std::endl;
|
||||
loop.stop();
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#include <mbgl/map/map.hpp>
|
||||
#include <mbgl/map/map_options.hpp>
|
||||
#include <mbgl/util/image.hpp>
|
||||
#include <mbgl/util/run_loop.hpp>
|
||||
#include <mln/map/map.hpp>
|
||||
#include <mln/map/map_options.hpp>
|
||||
#include <mln/util/image.hpp>
|
||||
#include <mln/util/run_loop.hpp>
|
||||
|
||||
#include <mbgl/gfx/backend.hpp>
|
||||
#include <mbgl/gfx/headless_frontend.hpp>
|
||||
#include <mbgl/style/style.hpp>
|
||||
#include <mln/gfx/backend.hpp>
|
||||
#include <mln/gfx/headless_frontend.hpp>
|
||||
#include <mln/style/style.hpp>
|
||||
|
||||
#include <args.hxx>
|
||||
|
||||
@@ -19,8 +19,10 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
args::ValueFlag<std::string> backendValue(argumentParser, "Backend", "Rendering backend", {"backend"});
|
||||
args::ValueFlag<std::string> apikeyValue(argumentParser, "key", "API key", {'t', "apikey"});
|
||||
args::ValueFlag<std::string> styleValue(argumentParser, "URL", "Map stylesheet", {'s', "style"});
|
||||
args::ValueFlag<std::string> outputValue(argumentParser, "file", "Output file name", {'o', "output"});
|
||||
args::ValueFlag<std::string> styleValue(
|
||||
argumentParser, "URL|file|-", "Map stylesheet (use '-' for stdin)", {'s', "style"});
|
||||
args::ValueFlag<std::string> outputValue(
|
||||
argumentParser, "file|-", "Output file name (use '-' for stdout)", {'o', "output"});
|
||||
args::ValueFlag<std::string> cacheValue(argumentParser, "file", "Cache database file name", {'c', "cache"});
|
||||
args::ValueFlag<std::string> assetsValue(
|
||||
argumentParser, "file", "Directory to which asset:// URLs will resolve", {'a', "assets"});
|
||||
@@ -69,7 +71,7 @@ int main(int argc, char* argv[]) {
|
||||
const double lon = lonValue ? args::get(lonValue) : 0;
|
||||
const double alt = altValue ? args::get(altValue) : 0;
|
||||
const double zoom = zoomValue ? args::get(zoomValue) : 0;
|
||||
const double fov = fovValue ? args::get(fovValue) : mbgl::util::rad2deg(mbgl::util::DEFAULT_FOV);
|
||||
const double fov = fovValue ? args::get(fovValue) : mln::util::rad2deg(mln::util::DEFAULT_FOV);
|
||||
const double bearing = bearingValue ? args::get(bearingValue) : 0;
|
||||
const double pitch = pitchValue ? args::get(pitchValue) : 0;
|
||||
const double roll = rollValue ? args::get(rollValue) : 0;
|
||||
@@ -87,9 +89,11 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
const bool debug = debugFlag ? args::get(debugFlag) : false;
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
auto mapTilerConfiguration = mbgl::TileServerOptions::MapTilerConfiguration();
|
||||
auto mapTilerConfiguration = mln::TileServerOptions::MapTilerConfiguration();
|
||||
|
||||
std::string json;
|
||||
std::string style = styleValue ? args::get(styleValue) : mapTilerConfiguration.defaultStyles().at(0).getUrl();
|
||||
|
||||
util::RunLoop loop;
|
||||
@@ -115,11 +119,16 @@ int main(int argc, char* argv[]) {
|
||||
.withApiKey(apikey)
|
||||
.withTileServerOptions(mapTilerConfiguration));
|
||||
|
||||
if (style.find("://") == std::string::npos) {
|
||||
style = std::string("file://") + style;
|
||||
}
|
||||
if (style == "-") {
|
||||
json = std::string(std::istreambuf_iterator<char>(std::cin), std::istreambuf_iterator<char>());
|
||||
map.getStyle().loadJSON(json);
|
||||
} else {
|
||||
if (style.find("://") == std::string::npos) {
|
||||
style = std::string("file://") + style;
|
||||
}
|
||||
|
||||
map.getStyle().loadURL(style);
|
||||
map.getStyle().loadURL(style);
|
||||
}
|
||||
std::vector<double> bounds = args::get(boundsValue);
|
||||
if (bounds.size() == 4) {
|
||||
LatLngBounds boundingBox = LatLngBounds::hull(LatLng(bounds[0], bounds[1]), LatLng(bounds[2], bounds[3]));
|
||||
@@ -136,14 +145,19 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
|
||||
if (debug) {
|
||||
map.setDebug(debug ? mbgl::MapDebugOptions::TileBorders | mbgl::MapDebugOptions::ParseStatus
|
||||
: mbgl::MapDebugOptions::NoDebug);
|
||||
map.setDebug(debug ? mln::MapDebugOptions::TileBorders | mln::MapDebugOptions::ParseStatus
|
||||
: mln::MapDebugOptions::NoDebug);
|
||||
}
|
||||
|
||||
try {
|
||||
std::ofstream out(output, std::ios::binary);
|
||||
out << encodePNG(frontend.render(map).image);
|
||||
out.close();
|
||||
std::string png = encodePNG(frontend.render(map).image);
|
||||
if (output == "-") {
|
||||
std::cout.write(png.data(), png.size());
|
||||
} else {
|
||||
std::ofstream out(output, std::ios::binary);
|
||||
out << png;
|
||||
out.close();
|
||||
}
|
||||
} catch (std::exception& e) {
|
||||
std::cout << "Error: " << e.what() << std::endl;
|
||||
exit(1);
|
||||
|
||||
@@ -11,96 +11,93 @@ target_compile_definitions(
|
||||
)
|
||||
list(APPEND
|
||||
INCLUDE_FILES
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/drawable.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/drawable_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/mtl_fwd.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/offscreen_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/renderable_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/tile_layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/uniform_buffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/vertex_attribute.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/mtl/vertex_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/common.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/collision.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/debug.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/particle_gpu_validation.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/retained_underlay_composite.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/shader_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/shader_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/symbol.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/drawable.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/drawable_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/mtl_fwd.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/offscreen_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/renderable_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/tile_layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/uniform_buffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/vertex_attribute.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/mtl/vertex_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/common.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/collision.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/debug.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/particle_gpu_validation.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/retained_underlay_composite.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/shader_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/shader_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/mtl/symbol.hpp
|
||||
)
|
||||
list(APPEND
|
||||
SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable_impl.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/mtl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/tile_layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/vertex_attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/mtl/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/background.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/circle.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/collision.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/clipping_mask.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/custom_geometry.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/custom_symbol_icon.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/debug.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/fill.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/fill_extrusion.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/heatmap.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/heatmap_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/hillshade.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/hillshade_prepare.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/color_relief.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/line.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/location_indicator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/particle_gpu_validation.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/retained_underlay_composite.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/raster.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/symbol.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/widevector.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/mtl/custom_layer_render_parameters.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/drawable_impl.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/mtl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/tile_layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/vertex_attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/mtl/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/background.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/circle.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/collision.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/clipping_mask.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/custom_geometry.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/custom_symbol_icon.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/debug.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/fill.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/fill_extrusion.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/heatmap.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/heatmap_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/hillshade.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/hillshade_prepare.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/color_relief.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/line.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/location_indicator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/particle_gpu_validation.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/retained_underlay_composite.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/raster.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/symbol.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/mtl/widevector.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/style/layers/mtl/custom_layer_render_parameters.cpp
|
||||
)
|
||||
|
||||
find_library(METAL_FRAMEWORK Metal)
|
||||
if (METAL_FRAMEWORK)
|
||||
target_link_libraries(mbgl-core PRIVATE ${METAL_FRAMEWORK})
|
||||
endif()
|
||||
target_link_libraries(mbgl-core PRIVATE "-framework Metal")
|
||||
|
||||
@@ -11,143 +11,144 @@ target_compile_definitions(
|
||||
)
|
||||
list(APPEND
|
||||
INCLUDE_FILES
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderable_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/platform/gl_functions.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/shader_manifest.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/shader_group_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/prelude.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/background_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/collision_box.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/collision_circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/debug.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline_triangulated.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion_instanced.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion_pattern_instanced.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/retained_underlay_composite.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_gradient.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_sdf.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/location_indicator_textured.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_sdf.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_text_and_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/wide_vector.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/renderable_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/platform/gl_functions.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/shader_manifest.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/shader_group_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/prelude.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/background_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/collision_box.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/collision_circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/debug.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_outline.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_outline_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_outline_triangulated.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_extrusion_instanced.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_extrusion_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/fill_extrusion_pattern_instanced.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/particle_gpu_validation.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/retained_underlay_composite.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/line_gradient.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/line_pattern.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/line_sdf.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/location_indicator_textured.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/symbol_sdf.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/symbol_text_and_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/wide_vector.hpp
|
||||
)
|
||||
list(APPEND
|
||||
SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/fence.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/fence.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/defines.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/draw_scope_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/extension.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/framebuffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderbuffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderbuffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/resource_pool.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/resource_pool.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/state.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/timestamp_query_extension.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/timestamp_query_extension.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/types.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/platform/gl_functions.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/clipping_mask_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/program_base.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/program.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/programs.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/programs.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/attribute.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/fence.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/fence.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/debugging_extension.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/debugging_extension.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/defines.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/draw_scope_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/enum.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/enum.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/extension.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/framebuffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/object.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/object.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/offscreen_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/renderbuffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/renderbuffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/resource_pool.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/resource_pool.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/state.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/timestamp_query_extension.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/timestamp_query_extension.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/types.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/uniform.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/uniform.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/value.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/value.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/vertex_array.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/vertex_array.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/vertex_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/platform/gl_functions.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/gl/legacy/clipping_mask_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/gl/legacy/program_base.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/gl/legacy/program.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/gl/legacy/programs.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/gl/legacy/programs.hpp
|
||||
)
|
||||
|
||||
list(APPEND INCLUDE_FILES
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/background_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/circle_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/collision_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/custom_drawable_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/debug_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/fill_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/fill_extrusion_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/heatmap_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/heatmap_texture_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/hillshade_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/color_relief_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/hillshade_prepare_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/line_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/location_indicator_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/raster_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/shader_defines.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/symbol_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/widevector_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/custom_drawable_layer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/custom_drawable_layer_factory.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/shader_program_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/buffer_allocator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/drawable_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/drawable_gl_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/layer_group_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/uniform_buffer_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/gl/vertex_attribute_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/background_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/circle_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/collision_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/custom_drawable_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/debug_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/fill_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/fill_extrusion_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/heatmap_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/heatmap_texture_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/hillshade_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/color_relief_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/hillshade_prepare_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/line_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/location_indicator_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/raster_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/shader_defines.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/symbol_layer_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/widevector_ubo.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/style/layers/custom_drawable_layer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/layermanager/custom_drawable_layer_factory.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/gl/shader_program_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/buffer_allocator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/drawable_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/drawable_gl_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/layer_group_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/uniform_buffer_gl.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/gl/vertex_attribute_gl.hpp
|
||||
)
|
||||
list(APPEND SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/shader_info.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/shader_program_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/buffer_allocator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl_impl.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/layer_group_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform_buffer_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_attribute_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/gl/shader_info.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/gl/shader_program_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/buffer_allocator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/drawable_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/drawable_gl_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/drawable_gl_impl.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/layer_group_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/uniform_buffer_gl.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/gl/vertex_attribute_gl.cpp
|
||||
)
|
||||
|
||||
@@ -12,93 +12,93 @@ target_compile_definitions(
|
||||
|
||||
list(APPEND
|
||||
INCLUDE_FILES
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/vulkan/custom_layer_init_parameters.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/vulkan/custom_layer_render_parameters.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/drawable.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/descriptor_set.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/drawable_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/offscreen_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/pipeline.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/renderable_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/tile_layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/uniform_buffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/vertex_attribute.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/vertex_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/shader_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/shader_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/collision.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/common.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/symbol.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/widevector.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/style/layers/vulkan/custom_layer_init_parameters.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/style/layers/vulkan/custom_layer_render_parameters.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/drawable.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/descriptor_set.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/drawable_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/offscreen_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/pipeline.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/renderable_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/tile_layer_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/uniform_buffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/vertex_attribute.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/vulkan/vertex_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/shader_group.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/shader_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/collision.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/common.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/symbol.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/vulkan/widevector.hpp
|
||||
)
|
||||
|
||||
list(APPEND
|
||||
SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/vulkan/custom_layer_render_parameters.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/descriptor_set.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable_impl.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/pipeline.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/renderable_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/tile_layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/vertex_attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/background.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/circle.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/clipping_mask.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/collision.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/custom_geometry.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/custom_symbol_icon.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/debug.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/fill.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/fill_extrusion.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/heatmap.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/heatmap_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/hillshade.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/hillshade_prepare.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/color_relief.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/line.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/location_indicator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/raster.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/symbol.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/widevector.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/style/layers/vulkan/custom_layer_render_parameters.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/descriptor_set.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/drawable_impl.hpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/pipeline.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/renderable_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/tile_layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/vertex_attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/vulkan/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/background.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/circle.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/clipping_mask.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/collision.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/custom_geometry.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/custom_symbol_icon.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/debug.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/fill.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/fill_extrusion.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/heatmap.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/heatmap_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/hillshade.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/hillshade_prepare.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/color_relief.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/line.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/location_indicator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/raster.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/symbol.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/vulkan/widevector.cpp
|
||||
)
|
||||
|
||||
@@ -17,99 +17,98 @@ target_include_directories(
|
||||
|
||||
list(APPEND
|
||||
SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/headless_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/draw_scope_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/wgsl_preprocessor.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/background.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/circle.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/clipping_mask.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/collision.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/custom_geometry.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/custom_symbol_icon.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/debug.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/fill.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/fill_extrusion.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/heatmap.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/heatmap_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/hillshade.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/hillshade_prepare.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/color_relief.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/line.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/location_indicator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/raster.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/symbol.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/widevector.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/tile_layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/draw_scope_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/wgsl_preprocessor.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/background.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/circle.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/clipping_mask.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/collision.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/custom_geometry.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/custom_symbol_icon.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/debug.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/fill.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/fill_extrusion.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/heatmap.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/heatmap_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/hillshade.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/hillshade_prepare.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/color_relief.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/line.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/location_indicator.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/raster.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/symbol.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/widevector.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/vertex_attribute.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/offscreen_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/tile_layer_group.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/layer_group.cpp
|
||||
)
|
||||
|
||||
list(APPEND
|
||||
INCLUDE_FILES
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/drawable.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/drawable_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/shader_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/collision.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/common.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/debug.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/symbol.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/widevector.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/uniform_buffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/vertex_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/command_encoder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/context.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/drawable.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/drawable_builder.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/dynamic_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/index_buffer_resource.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/render_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/renderer_backend.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/shader_program.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/background.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/circle.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/clipping_mask.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/collision.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/common.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/custom_geometry.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/custom_symbol_icon.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/debug.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/fill.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/fill_extrusion.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/heatmap.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/heatmap_texture.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/hillshade.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/hillshade_prepare.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/color_relief.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/line.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/location_indicator.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/raster.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/symbol.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/widevector.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/texture2d.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/uniform_buffer.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/upload_pass.hpp
|
||||
${PROJECT_SOURCE_DIR}/include/mln/webgpu/vertex_buffer_resource.hpp
|
||||
)
|
||||
|
||||
list(APPEND
|
||||
SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/command_encoder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/context.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable_builder.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/dynamic_texture.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/index_buffer_resource.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/render_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/renderer_backend.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/shader_program.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/texture2d.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/uniform_buffer.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/upload_pass.cpp
|
||||
${PROJECT_SOURCE_DIR}/src/mln/webgpu/vertex_buffer_resource.cpp
|
||||
)
|
||||
|
||||
# Include WebGPU vendor configuration (Dawn or wgpu)
|
||||
@@ -119,7 +118,13 @@ include(${PROJECT_SOURCE_DIR}/vendor/webgpu.cmake)
|
||||
if(MLN_WEBGPU_IMPL_DAWN)
|
||||
include(${PROJECT_SOURCE_DIR}/vendor/dawn.cmake)
|
||||
if(TARGET mbgl-vendor-dawn)
|
||||
target_link_libraries(mbgl-core PRIVATE mbgl-vendor-dawn)
|
||||
if(MLN_WEBGPU_EMDAWN)
|
||||
# Emdawn is a compiler/linker port rather than a conventional
|
||||
# library. Consumers must inherit its final-link options.
|
||||
target_link_libraries(mbgl-core PUBLIC mbgl-vendor-dawn)
|
||||
else()
|
||||
target_link_libraries(mbgl-core PRIVATE mbgl-vendor-dawn)
|
||||
endif()
|
||||
endif()
|
||||
elseif(MLN_WEBGPU_IMPL_WGPU OR MLN_WEBGPU_IMPL_FFI)
|
||||
# Include wgpu-native integration
|
||||
@@ -127,6 +132,11 @@ elseif(MLN_WEBGPU_IMPL_WGPU OR MLN_WEBGPU_IMPL_FFI)
|
||||
if(TARGET mbgl-vendor-wgpu)
|
||||
target_link_libraries(mbgl-core PRIVATE mbgl-vendor-wgpu)
|
||||
# Add WebGPU-Cpp implementation file (required for wgpu-native backend)
|
||||
list(APPEND SRC_FILES ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/webgpu_cpp_impl.cpp)
|
||||
list(APPEND SRC_FILES ${PROJECT_SOURCE_DIR}/src/mln/webgpu/webgpu_cpp_impl.cpp)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Headless backend uses Dawn native / wgpu-native bootstrap; skip for emdawnwebgpu.
|
||||
if(NOT MLN_WEBGPU_EMDAWN)
|
||||
list(APPEND SRC_FILES ${PROJECT_SOURCE_DIR}/src/mln/webgpu/headless_backend.cpp)
|
||||
endif()
|
||||
|
||||
@@ -75,7 +75,7 @@ The shaders need a representation visible outside the toolkit and we need to cha
|
||||
|
||||
Individual shaders are represented by an object class with massive amounts of template logic and a minimum of in-line comments. They’re opaque from the outside and only controllable through vector tile data and styles.
|
||||
|
||||
The [render_raster_layer](https://github.com/maplibre/maplibre-native/blob/main/src/mbgl/renderer/layers/render_raster_layer.cpp), as an example, asks for the instantiation of (eventually) RasterProgram. Rather than having the source for the program, that then pokes into a compressed chunk of memory that contains the source, which is then uncompressed and fed into OpenGL for compilation.
|
||||
The [render_raster_layer](https://github.com/maplibre/maplibre-native/blob/main/src/mln/renderer/layers/render_raster_layer.cpp), as an example, asks for the instantiation of (eventually) RasterProgram. Rather than having the source for the program, that then pokes into a compressed chunk of memory that contains the source, which is then uncompressed and fed into OpenGL for compilation.
|
||||
|
||||
All of this makes sense in context, but is completely inaccessible outside the toolkit and rather incomprehensible when making changes.
|
||||
|
||||
@@ -134,9 +134,9 @@ Modern graphics pipelines use more than one pass to create a visual representati
|
||||
Without getting too deep into specifics, early rendering passes allow the developer to use the power of the rasterizer for their own data. Later rendering passes are typically used to decorate the map with effects.
|
||||
|
||||
#### The way it is now:
|
||||
The [low level rendering logic](https://github.com/maplibre/maplibre-native/blob/main/src/mbgl/renderer/renderer_impl.cpp) in the toolkit seems to only support one explicit rendering pass.
|
||||
The [low level rendering logic](https://github.com/maplibre/maplibre-native/blob/main/src/mln/renderer/renderer_impl.cpp) in the toolkit seems to only support one explicit rendering pass.
|
||||
|
||||
However, there is the [RenderPass](https://github.com/maplibre/maplibre-native/blob/main/src/mbgl/gl/render_pass.hpp) so some notion of this exists in the toolkit, but it's not clear how complete that is. It may depend on ordering to work things out, rather than the explicit command buffer filling and fences we would use in a more modern approach.
|
||||
However, there is the [RenderPass](https://github.com/maplibre/maplibre-native/blob/main/src/mln/gl/render_pass.hpp) so some notion of this exists in the toolkit, but it's not clear how complete that is. It may depend on ordering to work things out, rather than the explicit command buffer filling and fences we would use in a more modern approach.
|
||||
|
||||
In any case, we need this filled out more explicitly for the render targets.
|
||||
|
||||
@@ -205,7 +205,7 @@ In WhirlyGlobe we’ve always called out separate objects for drawing certain ki
|
||||
|
||||
Which is to say that Drawable is a good concept which can encapsulate a lot of complexity. So much so that it eventually encapsulates ALL the complexity, at least at that level of rendering. It’s a good interface between the things that construct geometry and the things that render geometry.
|
||||
|
||||
To keep the Drawable somewhat manageable, we added the concept of a Drawable Builder. This is an object that you throw geometry at in a somewhat disordered way and it emits Drawables when you’re done. MapLibre's [Buckets](https://github.com/maplibre/maplibre-native/blob/main/src/mbgl/renderer/bucket.hpp) are similar, but not quite the same. Perhaps they'll be adaptable. We'll see.
|
||||
To keep the Drawable somewhat manageable, we added the concept of a Drawable Builder. This is an object that you throw geometry at in a somewhat disordered way and it emits Drawables when you’re done. MapLibre's [Buckets](https://github.com/maplibre/maplibre-native/blob/main/src/mln/renderer/bucket.hpp) are similar, but not quite the same. Perhaps they'll be adaptable. We'll see.
|
||||
|
||||
Drawables and Builders have a subclass for each supported rendering SDK. One mistake we won’t bring over is using multiple inheritance for that. You’re welcome.
|
||||
|
||||
@@ -221,7 +221,7 @@ Builders will be used primarily by Layers to emit Drawables for rendering.
|
||||
|
||||
This is a big topic because it gets to the very heart of the critical changes we want to make to the toolkit. There are a couple of different categories that are revealing and we'll use some examples.
|
||||
|
||||
Most commonly there are *render layers*. These are individual classes that know how to render, for instance, the [fill layer](https://github.com/maplibre/maplibre-native/blob/main/src/mbgl/renderer/layers/render_fill_layer.cpp). You'll see a bunch of these that start with "render" and end with "layer".
|
||||
Most commonly there are *render layers*. These are individual classes that know how to render, for instance, the [fill layer](https://github.com/maplibre/maplibre-native/blob/main/src/mln/renderer/layers/render_fill_layer.cpp). You'll see a bunch of these that start with "render" and end with "layer".
|
||||
|
||||
What's going on here is that the toolkit has broken out a bunch of features from a tile, consolidated them together in a Bucket and then handed them off to a Layer to render. Sure enough, if you look in the render_*_layer you can see it doing just that.
|
||||
|
||||
@@ -230,7 +230,7 @@ Now it's not redoing the work of consolidation each frame, but it is doing a lot
|
||||
- This is more specific logic than we'd want to see in a rendering loop. Remember, this runs every frame.
|
||||
- If your data is not in tile form, it's going to be hard to render.
|
||||
|
||||
That last one is really interesting and we can find an example in MapLibre Native itself. Look to the [Render Location Indicator Layer](https://github.com/maplibre/maplibre-native/blob/main/src/mbgl/renderer/layers/render_location_indicator_layer.cpp). Here's where this approach trips up... rolls down the hill... into a pile of broken glass. You can feel the developers' pain in this module.
|
||||
That last one is really interesting and we can find an example in MapLibre Native itself. Look to the [Render Location Indicator Layer](https://github.com/maplibre/maplibre-native/blob/main/src/mln/renderer/layers/render_location_indicator_layer.cpp). Here's where this approach trips up... rolls down the hill... into a pile of broken glass. You can feel the developers' pain in this module.
|
||||
|
||||
If you're not familiar with real time rendering toolkits, I'll put it this way. Managing the logic for a location puck that updates every time the user moves should not involve direct OpenGL calls. It should be abstracted, at least a little.
|
||||
|
||||
@@ -319,7 +319,7 @@ Every real time rendering toolkit has a main rendering loop or something like it
|
||||
|
||||
On iOS this runs on the main thread and on Android this runs on its own separate thread. You might think the latter is better, but it has its own problems (gesture lag). In any case, MapLibre Native handles both just fine.
|
||||
|
||||
The toolkit's main rendering "loop" lives in [renderer_impl](https://github.com/maplibre/maplibre-native/blob/main/src/mbgl/renderer/renderer_impl.cpp) and it's worth a look. It serves as a central point to begin examining the real time rendering.
|
||||
The toolkit's main rendering "loop" lives in [renderer_impl](https://github.com/maplibre/maplibre-native/blob/main/src/mln/renderer/renderer_impl.cpp) and it's worth a look. It serves as a central point to begin examining the real time rendering.
|
||||
|
||||
As you might suspect, the rendering loop logic and implementation are heavily influenced by OpenGL.
|
||||
|
||||
|
||||
184
design-proposals/2025-07-05-custom-vector-source.md
Normal file
184
design-proposals/2025-07-05-custom-vector-source.md
Normal file
@@ -0,0 +1,184 @@
|
||||
# Custom Vector Source
|
||||
|
||||
## Motivation
|
||||
|
||||
MapLibre Native currently supports two ways to provide vector tile data:
|
||||
|
||||
1. **URL-based sources** (`vector` source type) — tiles are fetched according to the protocol of the URL (`http://`,
|
||||
`file://`, etc.).
|
||||
2. **CustomGeometrySource** — accepts GeoJSON features programmatically, but internally re-encodes them into vector
|
||||
tiles, adding overhead and limiting control over the tile encoding.
|
||||
|
||||
This proposal comes from the need for an efficient and kotlin native way to asynchronously connect a tile data source
|
||||
similar to vector tile.
|
||||
CustomGeometrySource was considered, but it has some obvious drawbacks:
|
||||
|
||||
1. Tile requests are in the format of a bounding box — since it's not a tile X/Y/Z it is pretty unclear what logic it
|
||||
conforms to.
|
||||
1. Is it just a tile X/Y/Z but converted to geo bounds?
|
||||
2. Can it ever request data in a bounding box that is bigger than just one X/Y/Z tile
|
||||
3. Additional boilerplate of mapping geo bounds into tile X/Y/Z
|
||||
2. Internally CustomGeometrySource spawns a 4 thread threadpool and runs tasks one by one inside. It's a good old
|
||||
technique
|
||||
but Kotlin has things like coroutines which are a more ergonomic way to handle suspendable operations (like network
|
||||
requests).
|
||||
3. CustomGeometrySource operates over GeoJSON. So in case of a vector tiles like format it needs to be converted to
|
||||
GeoJSON and then internally it will be cut down into vector tile format back.
|
||||
|
||||
## Proposed Change
|
||||
|
||||
Introduce a new source type, `CustomVectorSource`, that lets the application deliver raw binary tile data (starting with
|
||||
MVT) directly to the rendering pipeline. The source participates in the standard tile loading lifecycle — the core
|
||||
requests tiles by `CanonicalTileID`, and the application responds asynchronously with encoded data or an error.
|
||||
|
||||
### Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Platform layer (Kotlin) │
|
||||
│ │
|
||||
│ CustomVectorTileProvider.fetchTile(z, x, y) → TileData │
|
||||
│ ↕ (JNI / platform bridge) │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ Core C++ layer │
|
||||
│ │
|
||||
│ CustomVectorSource │
|
||||
│ ├── Options { fetchTileFunction, cancelTileFunction, │
|
||||
│ │ zoomRange } │
|
||||
│ ├── setTileData(CanonicalTileID, shared_ptr<string>, │
|
||||
│ │ TileDataFormat) │
|
||||
│ ├── setTileError(CanonicalTileID, exception_ptr) │
|
||||
│ └── invalidateTile(CanonicalTileID) │
|
||||
│ │
|
||||
│ CustomVectorTileLoader (Actor on Scheduler::GetBackground) │
|
||||
│ └── Receives fetch/cancel requests from tiles │
|
||||
│ │
|
||||
│ CustomVectorTile (extends Tile) │
|
||||
│ └── Parses MVT data via VectorTileData, delegates to │
|
||||
│ standard GeometryTileWorker for symbol/line/fill │
|
||||
│ layout │
|
||||
│ │
|
||||
│ RenderCustomVectorSource (extends RenderTileSetSource) │
|
||||
│ └── Standard tile pyramid rendering │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ Existing rendering pipeline (unchanged) │
|
||||
│ GeometryTileWorker → Buckets → Drawables → GPU │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Key Design Decisions
|
||||
|
||||
1. **Binary data, not GeoJSON.** For the Kotlin layer to send data to C++, it needs to be marshaled into some
|
||||
data format that can be passed across languages. One could come up with a new binary format, implement an encoder in
|
||||
Kotlin and a decoder in C++. But it turns out MVT is already such a format — just a binary blob that can be passed
|
||||
simply as a sized buffer. Existing infrastructure of `MVT` tile data is just reused as is.
|
||||
|
||||
2. **Actor-based concurrency.** `CustomVectorTileLoader` runs on a background thread via MapLibre's Actor system. The
|
||||
platform callback (fetch/cancel) is invoked on this thread; the platform layer is responsible for dispatching to its
|
||||
own preferred context (e.g., coroutines on Android).
|
||||
|
||||
3. **Cooperative cancellation.** When a tile is no longer needed (e.g., user panned away), the core calls
|
||||
`cancelTileFunction`. The platform layer can abort in-flight work.
|
||||
|
||||
4. **Standard tile pipeline reuse.** Once binary data arrives, it goes through the same `VectorTileData` →
|
||||
`GeometryTileWorker` path as HTTP-fetched vector tiles. No custom rendering code is needed.
|
||||
|
||||
5. **Extensible format enum.** `TileDataFormat` is an enum starting with `MVT`. Future formats (e.g., a hypothetical
|
||||
compact binary format) can be added without API changes. And obvious next candidate is `MLT` format support in
|
||||
CustomVectorSource.
|
||||
|
||||
### Threading Model
|
||||
|
||||
```
|
||||
Main thread: Source::update() → tile needs data
|
||||
↓
|
||||
Background Actor: CustomVectorTileLoader::fetchTile()
|
||||
↓
|
||||
Platform bridge: fetchTileFunction callback → platform code
|
||||
↓ (async, any thread)
|
||||
setTileData() → mailbox → CustomVectorTile::setData()
|
||||
↓
|
||||
GeometryTileWorker: parse MVT, create buckets (background pool)
|
||||
↓
|
||||
Main thread: Tile ready → render
|
||||
```
|
||||
|
||||
## API Modifications
|
||||
|
||||
### Core C++ (public header)
|
||||
|
||||
```cpp
|
||||
namespace mln::style {
|
||||
|
||||
enum class TileDataFormat : uint8_t { MVT = 0 };
|
||||
|
||||
using TileFunction = std::function<void(const CanonicalTileID&)>;
|
||||
|
||||
class CustomVectorSource final : public Source {
|
||||
public:
|
||||
struct Options {
|
||||
TileFunction fetchTileFunction;
|
||||
TileFunction cancelTileFunction;
|
||||
Range<uint8_t> zoomRange = {0, 18};
|
||||
};
|
||||
|
||||
CustomVectorSource(std::string id, const Options& options);
|
||||
|
||||
void setTileData(const CanonicalTileID&,
|
||||
const std::shared_ptr<const std::string>& data,
|
||||
TileDataFormat format = TileDataFormat::MVT);
|
||||
void setTileError(const CanonicalTileID&, std::exception_ptr error);
|
||||
void invalidateTile(const CanonicalTileID&);
|
||||
};
|
||||
|
||||
} // namespace mln::style
|
||||
```
|
||||
|
||||
### Android (Kotlin)
|
||||
|
||||
```kotlin
|
||||
interface CustomVectorTileProvider {
|
||||
suspend fun fetchTile(z: Int, x: Int, y: Int): TileData
|
||||
}
|
||||
|
||||
sealed class TileData {
|
||||
class Mvt(val data: ByteArray) : TileData()
|
||||
}
|
||||
|
||||
class CustomVectorSource(
|
||||
id: String,
|
||||
provider: CustomVectorTileProvider,
|
||||
scope: CoroutineScope,
|
||||
minZoom: Int = 0,
|
||||
maxZoom: Int = 18
|
||||
) : Source()
|
||||
```
|
||||
|
||||
The Android API uses Kotlin coroutines for async tile fetching. The `CoroutineScope` is caller-provided. Meaning
|
||||
`CustomVectorSource` can run on a threadpool but not limited to a threadpool. `CoroutineScope` abstracts it away.
|
||||
|
||||
### iOS / macOS
|
||||
|
||||
Not included in this initial implementation. The core C++ API is platform-agnostic and can be wrapped in Swift/Obj-C
|
||||
following the same pattern.
|
||||
|
||||
## Migration Plan and Compatibility
|
||||
|
||||
All changes are **additive**. No existing APIs are modified or removed. The new source type is opt-in — applications
|
||||
that don't use it are unaffected.
|
||||
|
||||
- A new `SourceType::CustomMVTVector` enum value is added to the core.
|
||||
- Existing `CustomGeometrySource` remains unchanged and is not deprecated.
|
||||
|
||||
## Rejected Alternatives
|
||||
|
||||
### Extend CustomGeometrySource to accept binary data
|
||||
|
||||
`CustomGeometrySource` is designed around GeoJSON features and internally manages geometry encoding. Bolting binary tile
|
||||
support onto it would conflate two different data models and complicate its already non-trivial implementation.
|
||||
|
||||
### Use a local file source with a custom URL scheme
|
||||
|
||||
This approach (e.g., `mbtiles://` or `custom://`) requires the application to write tile data to disk or implement a
|
||||
custom `FileSource`. It adds I/O overhead, doesn't support cooperative cancellation, and is harder to integrate with
|
||||
structured concurrency frameworks like Kotlin coroutines.
|
||||
152
docs/20_调查/iOS地图点击重叠Source触发MLNStyle空Peer崩溃调查_v1.md
Normal file
152
docs/20_调查/iOS地图点击重叠Source触发MLNStyle空Peer崩溃调查_v1.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# iOS 地图点击重叠 Source 触发 MLNStyle 空 Peer 崩溃调查 v1
|
||||
|
||||
- 日期:2026-10-09(Asia/Tokyo)
|
||||
- 状态:**问题已复现 / 原生崩溃堆栈已确认 / 修复与回归未执行**
|
||||
- 分类:Particle iOS Native / MapLibre Darwin Style API 与 maplibre-react-native 点击兼容
|
||||
- 严重程度:高;普通用户点击海图物体可使 NavSea 直接退出
|
||||
- 本文件性质:跨项目缺陷移交与定位证据,**不是已实施修复、测试 PASS 或新版本发行结论**。
|
||||
|
||||
## 1. 用户复现现象
|
||||
|
||||
在 iOS NavSea 正常启动并显示地图后:
|
||||
|
||||
1. 直接点击地图上的「唐津ヨット ハーバ」位置点,App 异常退出。
|
||||
2. 点击其他普通地图物体,未观察到同样问题。
|
||||
3. 打开「+键盘」(十字光标)后,将光标移动到该港湾位置,查询/选取正常,不退出。
|
||||
|
||||
因此该问题优先定位 **地图直接 Tap 的原生可点击 Source 命中/图层排序链路**,而不是仅根据地点名称推断港湾数据损坏、JS 详情渲染异常或粒子 GPU 绘制故障。
|
||||
|
||||
## 2. 实际环境与 Git 事实
|
||||
|
||||
| 项目 | 本次调查事实 |
|
||||
| --- | --- |
|
||||
| iOS 设备 | Pleiades,iPad mini(第 5 代,iPad11,2) |
|
||||
| iOS 崩溃日志声明的系统 | iPhone OS 26.5.2 (23F84) |
|
||||
| App | NavSea,bundleID `com.navsea.app` |
|
||||
| App 调查工作树 | `/Users/tei/dev/NavSea-release-v22` |
|
||||
| App 调查 HEAD | `4bfe5257`(`release/particle-v22-android-debug-20261009`) |
|
||||
| Particle 本次核对仓库 | `/Users/tei/dev/MapLibreParticleLab`,`particle/main` |
|
||||
| Particle 调查起点 HEAD | `6df21dac38f072c5ad35b8dfc7ec5217509602bc` |
|
||||
| 崩溃时间 | 2026-10-09 20:22:40 +0900 |
|
||||
| 崩溃日志 | 设备端 `NavSea-2026-10-09-202240.ips`(调查时只读复制到 Mac `/tmp/`) |
|
||||
|
||||
设备还存在多份同日晚间 NavSea 崩溃报告,本次详细分析的证据为上述 **20:22:40** 报告。请不要把其余报告自动认定为相同堆栈,除非逐份核查。
|
||||
|
||||
Particle 工作区在调查前已有其他未跟踪文档,均不属于本问题,不得顺手删除、覆盖或纳入本次提交。
|
||||
|
||||
## 3. 崩溃证据(直接来自 iPad .ips)
|
||||
|
||||
```text
|
||||
exception: EXC_CRASH / SIGABRT
|
||||
exceptionReason.name: NSInvalidArgumentException
|
||||
exceptionReason.composed_message:
|
||||
*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
|
||||
faultingThread: 0 (com.apple.main-thread)
|
||||
|
||||
-[MLRNMapView didTapMap:]
|
||||
-> -[MLRNMapView handleTapAtPoint:]
|
||||
-> -[MLRNMapView getTouchableSourceWithHighestZIndex:]
|
||||
-> -[MLNStyle layers]
|
||||
-> -[__NSArrayM insertObject:atIndex:]
|
||||
-> NSInvalidArgumentException / abort()
|
||||
```
|
||||
|
||||
上述调用栈直接证明 **崩溃发生在地图原生 Tap 处理访问 Style Layer 列表时,且 Objective-C 数组插入了 `nil`**。它并不证明具体是哪一个 Style Layer 的 Peer 为 `nil`;这一点需要后续补充定位日志或调试证据。
|
||||
|
||||
## 4. 已核实的对应代码
|
||||
|
||||
### 4.1 Darwin Style 列表 getter:空对象缺少防护
|
||||
|
||||
文件:`platform/darwin/src/MLNStyle.mm`,调查时约第 285–293 行。
|
||||
|
||||
```objc
|
||||
- (NSArray<__kindof MLNStyleLayer *> *)layers {
|
||||
auto layers = self.rawStyle->getLayers();
|
||||
NSMutableArray<__kindof MLNStyleLayer *> *styleLayers =
|
||||
[NSMutableArray arrayWithCapacity:layers.size()];
|
||||
for (auto layer : layers) {
|
||||
MLNStyleLayer *styleLayer = [self layerFromMBGLLayer:layer];
|
||||
[styleLayers addObject:styleLayer];
|
||||
}
|
||||
return styleLayers;
|
||||
}
|
||||
```
|
||||
|
||||
`layerFromMBGLLayer:` 位于同一文件约第 376 行。该方法在已有 Peer 缺失时调用 `LayerManagerDarwin::createPeer(rawLayer)`;若工厂无法产生 Objective-C Peer,返回值可能为 `nil`,随后无条件 `addObject` 会直接触发本次异常。
|
||||
|
||||
### 4.2 部分 Particle/Weather Layer 仅注册为 CoreOnly
|
||||
|
||||
文件:`platform/darwin/src/MLNStyleLayerManager.mm`。
|
||||
|
||||
```cpp
|
||||
addLayerTypeCoreOnly(std::make_unique<ParticleValidationLayerFactory>());
|
||||
addLayerTypeCoreOnly(std::make_unique<RasterParticleLayerFactory>());
|
||||
addLayerTypeCoreOnly(std::make_unique<WeatherColorLayerFactory>());
|
||||
```
|
||||
|
||||
同文件的 `LayerManagerDarwin::createPeer`:当 `getPeerFactory(layer->getTypeInfo())` 不存在时返回 `nullptr`。因此以上 CoreOnly Layer **是造成空 Peer 的高优先级怀疑对象**,但需要定位日志确认实际 layer id/type,不能将具体类型预写为已证实。
|
||||
|
||||
### 4.3 RN MapView:多 Source 命中触发列表遍历
|
||||
|
||||
NavSea 当前安装依赖源码:
|
||||
`node_modules/@maplibre/maplibre-react-native/ios/components/map-view/MLRNMapView.m`。
|
||||
|
||||
- `handleTapAtPoint:` 查询所有可点击 Source 的命中;存在命中时调用 `getTouchableSourceWithHighestZIndex:`。
|
||||
- `getTouchableSourceWithHighestZIndex:` 在 `touchableSources.count == 1` 时直接返回唯一 Source。
|
||||
- 在 **同时命中两个或更多可点击 Source** 时,方法读取 `self.style.layers` 并逆序遍历,决定顶部 Source;因此会进入第 4.1 节的危险路径。
|
||||
|
||||
崩溃堆栈已进入 `getTouchableSourceWithHighestZIndex:` 的 `self.style.layers`,符合多 Source 命中逻辑。需要现场记录所命中的具体 Source / layer IDs,以确认唐津位置的重叠对象组成。
|
||||
|
||||
### 4.4 NavSea 点击与十字光标是不同路径
|
||||
|
||||
- 直接点击地图:`src/map/MapScreen.tsx` 的 `MapLibreMap onPress`,以及 `src/map/layers/MooringSource.tsx` 的 `GeoJSONSource onPress`。
|
||||
- 港湾点直点 Host 回调:`src/map/cursor/crossCursorEngine.ts` 的 `handleMooringPress`。
|
||||
- 「+键盘」选取:`crossCursorEngine.ts` 中的 `queryRenderedFeaturesAtPointCompat` / `queryRenderedFeaturesInRectCompat` 查询。
|
||||
|
||||
本次异常在原生触摸处理阶段已发生;**即使 JS 侧在 `onPress` 增加 try/catch,也无法覆盖此 Objective-C SIGABRT**。
|
||||
|
||||
## 5. 修复方向(待 Particle iOS 实施者决定)
|
||||
|
||||
1. **首先精确定位**:在不改变业务和地图 Style 行为的前提下,记录 `layerFromMBGLLayer:` 转换失败的 raw layer id/type、Peer Factory 类型及命中 Source / Layer 列表,确认 CoreOnly Layer 是否为实际来源。
|
||||
2. **修复 Darwin 公共访问契约**:`MLNStyle.layers` 不得把 `nil` 加入 `NSMutableArray`;优先设计与现有 CoreOnly Layer 共存的稳定方案。可评估安全过滤不可桥接 Layer,或补齐对应的 Peer/排序能力,但不可仅凭猜测引入无意义的 ObjC wrapper。
|
||||
3. **保持集合访问一致性**:若采取过滤不可桥接 Layer 的方式,须同时检查 `countOfLayers`、`objectInLayersAtIndex:`、`getLayers:range:`、KVC/KVO 以及插入/移除行为,避免 getter 屏蔽后出现数量/索引语义不一致或再次写入 `nil`。
|
||||
4. **保持点击 z-order 正确性**:RN 的多 Source 命中不能因为跳过 CoreOnly Layer 而改变真实可点击 Layer 的前后顺序;必要时直接在 Native 查询层顺序而不是依赖不完整 ObjC Peer 列表。
|
||||
5. **限定修改范围**:优先在 Particle iOS Native / MapLibre 层完成,不通过 NavSea JS 屏蔽唐津地点、删除天气层或建立私有桥接来回避崩溃。若确实需要改 RN 公共接口或跨项目契约,应返回 Integration 项目协调。
|
||||
|
||||
**切勿直接删除 Particle、WeatherColor 或 Validation 的 Core Layer 来“消除异常”**;它们是正式渲染能力。
|
||||
|
||||
## 6. 修复后必须验证的场景
|
||||
|
||||
| 场景 | 期望 |
|
||||
| --- | --- |
|
||||
| 同位置只命中一个可点击 Source | 正常选取,无崩溃 |
|
||||
| 两个及以上可点击 Source 重叠(重点复现) | 正确选中 z-order 最高且有效的 Source,无崩溃 |
|
||||
| 唐津ヨット ハーバ 直接点击 | 不退出,港湾选取/摘要功能正常 |
|
||||
| 「+键盘」移动到同一港湾 | 行为与修复前保持一致 |
|
||||
| 其他海图对象直接点击 | 继续正常,无点击回归 |
|
||||
| Style 含 RasterParticleLayer / WeatherColorLayer / ParticleValidationLayer 组合 | Style introspection 稳定,不向数组插入 nil |
|
||||
| 天气/粒子图层启用与关闭后重复点击 | 无崩溃、无源层级混乱、无隐藏的点击遮挡 |
|
||||
| `layers` getter、KVC 索引 getter、层增删 | 不出现 nil/越界,计数与索引契约保持一致 |
|
||||
|
||||
最少应使用 **Mac 构建出的实际 iOS Native 二进制 + iPad 真机** 做点击复现/回归。仅能编译或仅有单元测试通过,不等于用户场景已修复。
|
||||
|
||||
## 7. 责任、验收与完成条件
|
||||
|
||||
- **Particle iOS**:调查具体 nil layer、修复 Darwin Style API/多 Source 点击兼容、实施 iOS 构建与真机验证。
|
||||
- **Particle Shared Core**:仅在确认是通用 Layer/Peer 协议缺陷时参与;不得未经证据改变 Android 行为。
|
||||
- **NavSea**:在收到经过验证的新 iOS 发行后进行最小消费端验收;业务层不承担原生崩溃掩盖责任。
|
||||
- **Integration 项目**:若涉及公共 API、跨平台协议、消费版本协调,则在现有 COORD/RFC/ADR/Contract/Status 框架内正式记录。
|
||||
|
||||
修复完成报告应写明:引发空 Peer 的真实 layer id/type、实际改动文件、验证命令及结果、真机版本和复现结果、Git commit/分支,以及正式发行时遵照 GSRL 的 Source Lock/获取方式/校验材料。**本调查报告本身不构成新发行,也不授权覆盖现有版本。**
|
||||
|
||||
## 8. 当前未完成事项
|
||||
|
||||
- [x] 找到 iPad NavSea 原生崩溃日志,确认主线程异常及调用栈
|
||||
- [x] 核对 Particle `MLNStyle.mm`、`MLNStyleLayerManager.mm` 与 RN `MLRNMapView.m` 源码
|
||||
- [x] 说明直接点击与十字光标查询的不同调用路径
|
||||
- [ ] 获取本次返回 `nil` 的具体 Style Layer id/type
|
||||
- [ ] 编写并执行 Native 修复及目标回归
|
||||
- [ ] 重新构建 iOS、在实际 iPad 复现原场景并确认不再退出
|
||||
- [ ] 按 GSRL 验证新版本消费与正式发行(如进入发行)
|
||||
|
||||
**结论:高可信度机制为 Native Style CoreOnly/缺失 Peer 与 RN 多 Source hit-test 排序不兼容;异常位置已由 .ips 确认,具体 nil Layer 身份与最终修复仍待 Particle iOS 验证。**
|
||||
43
docs/40_任务/STEP-104_官方Native13.6.1升级阶段A_Codex任务_v1.md
Normal file
43
docs/40_任务/STEP-104_官方Native13.6.1升级阶段A_Codex任务_v1.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# STEP-104 官方 MapLibre Native Android 13.6.1 迁移:第一阶段 Codex 任务 v1
|
||||
|
||||
## 1. 基线与职责
|
||||
- 用户授权 **GPT-6.1 Sol / High** 实施官方跟进,使用 Mac 固定 GNU Screen 会话 `20825.7445.codex`,不要自行切换模型和推理档位。
|
||||
- 项目独立 worktree:`/Users/tei/dev/MapLibreParticleLab-upgrade-android-1361`,分支 `upgrade/android-native-13.6.1-20261009`。
|
||||
- 当前第一父基线:**官方 Android Native 13.6.1** peeled commit `c7506d6aff3800e946f89e1a51432fc22d1a6534`;原有自研稳定版本(.21)HEAD `630ec657687bad4200c059bbccbb950d9c6f7ce9`,审计与报告闭环 HEAD `b433775348373b10fba02dc0e1f728bacd72f9e7`。
|
||||
- Integrated repo Linux 远端 `main` 已同步至 `80667d6c343411d03a760425438e3d292f452118`;当前遵守 C-001/C-002、RFC-004、ADR-001,不得擅自改公开 API 或将 Android 新行为写进跨平台 contract。
|
||||
- 先读原工作树 `/Users/tei/dev/MapLibreParticleLab/AGENTS.md`、`PARTICLE_BASELINE.md`、`docs/00_项目规范/`、`docs/00_项目总则/README.md` 与四份有效总则,再读现有审计报告 `/Users/tei/dev/MapLibreParticleLab-upstream-audit-20261009/docs/报告/UPSTREAM-001_MapLibre官方升级兼容性架构审计_Codex完成报告_v1.md`、近期 STEP-100/101/102 记录以及本任务。
|
||||
- 另一个 Mac `particle/main` 工作树有用户未跟踪文件且落后远端,禁止修改;历史 release/STEP-103 工作树均不可改。
|
||||
|
||||
## 2. 本轮的工程目标和停点
|
||||
目标是形成一个**可测试的 Android Native 13.6.1 官方底座候选**,继续保留自研 Field/QBIN/Particle/WeatherColor/RenderSegment/Retained 功能,不重写、不扩大功能。当前不是新版发行。
|
||||
- A:在本分支以官方 13.6.1 为第一父,安全合入 `b433775348...` 自研历史的有效差异。优先使用 `git merge --no-commit --no-ff b433775348...`;解决全部 rename/content/modify-delete 冲突,不允许选择整文件 `ours/theirs` 丢失官方修复或自己的功能。核实 `git diff --check`、冲突标记和完整树,再创建明确 merge commit。可启用 rerere。
|
||||
- B:适配官方 `mbgl→mln` 命名空间、include、Layer/Source/Shader factory、`RenderLayer::update(PaintParameters)`、`RenderStaticData::backendSize` 移除、Renderer lifecycle、RenderSegment 和 GL 粒子后端。只修改当前升级必要的官方接入点,保留现有 fail-closed、source/placement/revision/fast-path gate、map Style 顺序、stencil/target 安全。
|
||||
- C:源码修改完成后,列出**精确可执行**的 Android Native C++/OpenGL 编译与定向测试命令,让 RDC 在 Mac 或 Linux 执行;Codex 自身不得进行耗时 build、link、codegen、打包或 Jest。可以执行 `git diff --check`、少量静态检查。
|
||||
- D:若完整迁移无法在本轮完成,优先形成单独的、可复现且可回退的 Git checkpoint、明确残留冲突/失败清单;未清除 Git 冲突不得提交伪造的成功 merge。发生公共 API/Contract 变化或 iOS 专属需求立即停下来报告,不自行扩大跨团队范围。
|
||||
|
||||
## 3. 必须保留的现有行为
|
||||
- C-002 QBIN V4 单帧 exact match、双帧合法插值、每 fieldKey 八帧和原子拒绝语义不变;不同 reference/dataset/profile 不混用;RN Host 负责加载、requestedForecastTime,Native submit 不调整时间。
|
||||
- WeatherColorLayer 与 RasterParticleLayer 独立;粒子 GPU ping-pong、trail 和 RenderSegment 局部缓存存在;不允许用 CPU 动画替代、不允许关闭关键保护逻辑使其编译通过。
|
||||
- Retained 保留 Z-order、opaque/translucent 绘制语义与 segment 索引;Source/layer/style/context/placement 变更失效安全、销毁不泄漏或使用陈旧 texture。
|
||||
- 官方新版 Feature State 接口不得被自研逻辑覆盖或静默禁用;只记录 Native 后续 RN 11.5 测试 Gate,不升级 RN 包本轮版本锁。
|
||||
|
||||
## 4. 范围
|
||||
- 允许:升级分支中的官方 Native Core/Shader/CMake、必要的 Android Native/JNI 接入、粒子模块源码、测试代码的机械迁移与必要接口适配,以及必要记录。
|
||||
- 禁止:修改 `particle/main`、`release/particle.21`、STEP-103 工作树、NavSea、Integration 合同、iOS 专属 Metal/Bridge 功能实现、官方仓库、Node/Gradle/NDK 工具链;禁止发布 AAR/npm、build APK、改 public API/ABI 语义。
|
||||
- 旧 .21 所有发布坐标保持冻结。iOS 旧实现应尽可能保留源码,但本轮只允许写 **NOT VERIFIED**,不允许声称 Metal/Swift/XCFramework PASS。
|
||||
|
||||
## 5. 记录和 Git:强制多次小提交
|
||||
- 在仓库**根目录的 `recoder_step.md`** 追加每项实质进展,简明中文且 append-only,记录日期、基线、当前变化、已完成、剩余问题、下一步、关联 commit。还需追加 `粒子开发记录.md`(合入后存在),同步更新 `docs/50_Step记录/STEP-104_官方Native13.6.1升级阶段A_v1.md`。
|
||||
- 本任务已有独立启动 checkpoint 提交。后续**至少尝试**按合并/结构迁移/接口修复/文档三个功能批次提交。每次提交限定本主题的文件并有清晰中英 commit message。不允许为了凑提交提交空文件或破坏历史;若阻塞,就如实说明只完成哪些。
|
||||
- **仅 push 本次升级分支**到 `origin/upgrade/android-native-13.6.1-20261009`;切勿 push `particle/main`、force push、合并回主线、push upstream。需等 RDC 独立编译验收后再由 RDC 最终执行 push;Codex 此轮只 commit,不负责最终远端验收。
|
||||
- 用户正式要求阶段记录必须叫 `recoder_step.md`,**不可擅自纠正拼写或用其它文件代替**。
|
||||
- 工作期间若发现现存不相关改动,不能纳入任何提交。
|
||||
|
||||
## 6. 完成报告与检查
|
||||
- 完成报告固定 `docs/报告/STEP-104_官方Native13.6.1升级阶段A_Codex完成报告_v1.md`,必须记录:实际模型与推理档位、原始 SHA 和候选 SHA、每个 commit 与变更范围、merge 冲突解决的准确状态、迁移清单、具体核心 API/行为检查、无 build 时 NOT RUN、给 RDC 的精确构建命令、剩余问题、Android/iOS/RN 明确边界、下一 Gate。
|
||||
- 命名绝对不能自称正式 SDK PASS;如只完成局部迁移标 PARTIAL / BLOCKED。Codex 结束前检查 `git status --short`、`git diff --check`、阶段日志存在,任务范围与 commit 对得上。
|
||||
- 对用户的最终下一停点是 Android 官方 13.6.1 候选的 Core/Android OpenGL 精确编译 Gate;RN 11.5/iOS/发布留后续。
|
||||
- 若需要新增跨平台语义/接口必须暂停并记录 Integration 协调所需证据,而不是自行做新合同。
|
||||
|
||||
## 7. 本阶段特殊实施规则
|
||||
按现有项目 `AGENTS.md`:**Codex 写代码,RDC 负责独立编译和验收**。仅在完成局部代码和提交后提供精确编译命令,等待 RDC 结果,如失败再进入下一轮修复。不要自行执行长时间构建。
|
||||
28
docs/50_Step记录/STEP-104_官方Native13.6.1升级阶段A_v1.md
Normal file
28
docs/50_Step记录/STEP-104_官方Native13.6.1升级阶段A_v1.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# STEP-104 官方 Native 13.6.1 升级阶段 A
|
||||
|
||||
- 状态:进行中。
|
||||
- 当前基线:官方 Android Native `c7506d6aff3800e946f89e1a51432fc22d1a6534`;自研旧版本 .21 `630ec657687bad4200c059bbccbb950d9c6f7ce9`。
|
||||
- 目标:把现有 Particle、WeatherColor、RasterArray、RenderSegment/Retained 与 Android Native 接口移植到官方 13.6.1,保持原语义;形成能进行精确编译验证的候选代码。
|
||||
- 必做:合并/冲突、代码边界适配、append-only `recoder_step.md`、多提交、完成报告、RDC 静态及精确编译。
|
||||
- 允许:本分支 Core/Android Native/构建配置/必要测试/记录。
|
||||
- 禁止:NavSea、其他 worktree、主线和正式发行、未经协调的公共合同变化。
|
||||
- 构建与测试:暂未运行;由 RDC 独立执行,不因任务书生成而记 PASS。
|
||||
- 本轮输出:`docs/40_任务/STEP-104_官方Native13.6.1升级阶段A_Codex任务_v1.md`、`docs/报告/STEP-104_官方Native13.6.1升级阶段A_Codex完成报告_v1.md`、`recoder_step.md`、阶段代码 Git checkpoints。
|
||||
- 当前结果:Gate 0 官方第一父基线检出;自研合并未开始。
|
||||
- 阻塞:尚无;旧/新版差异已在 UPSTREAM-001 审计,需逐项移植。
|
||||
- 下一步:Codex 迁移,RDC 独立编译,失败反馈给 Codex;未获得真实编译/设备结果不得宣称发布成功。
|
||||
|
||||
## Gate 1 实际进展(2026-10-09)
|
||||
|
||||
- 官方为第一父的 Git merge commit:`f8378fd7113c4d230500f0b82902d2356907f4a9`。
|
||||
- 76 个冲突路径已处理、没有未合并 index 条目;RDC 已检查 Git history 和 Native 代码空白格式。
|
||||
- 与旧发布的 Particle/QBIN/RenderSegment 功能是否能够完整编译、正确渲染仍未验证。本任务目标保持进行中;下一 Gate 为 Android Native 精确编译。
|
||||
- 本检查点只能称为 `SOURCE_MERGED / BUILD_NOT_RUN`,不是 Android/iOS SDK PASS。
|
||||
|
||||
## Gate 2 / 2026-10-09 / RDC Native 编译实际结果
|
||||
|
||||
- 结果:Android x86_64 OpenGL Native **PASS**(Gradle `BUILD SUCCESSFUL in 22m 24s`;进程退出码 0),编译提交 `a4b5f4eaa0eccb734e00d67adb5e750bba320404`。
|
||||
- 产物:`MapLibreAndroid/build/intermediates/cmake/openglDebug/obj/x86_64/libmaplibre.so`,`377246848` bytes,SHA-256 `ff5a5eb45f84ff633a87fe385fb04ee39ba63ed3bc486003408e02cea78c8907`。
|
||||
- 已排除的构建阻塞:新 worktree 的 cheap-ruler-cpp、tile-spec/earcut、supercluster LICENSE 依赖检出缺失;按 Git 固定提交恢复,无需修改产品源码。
|
||||
- 未完成项:其余 ABI、Android 安装/真机 GPU、Vulkan、RN 11.5.0、iOS Metal、发布均 NOT RUN;STEP-104 为 **PARTIAL**(阶段 A Native 编译 Gate 通过,产品发行 Gate 未开始)。
|
||||
- 下一步:Android 多 ABI + 真实 GPU/Style/RenderSegment 功能验收,再进入 RN 11.5.0 公共桥接联调。
|
||||
11
docs/50_Step记录/STEP-105_FZG1-2_MapLibre13.6.1打包安装记录_v1.md
Normal file
11
docs/50_Step记录/STEP-105_FZG1-2_MapLibre13.6.1打包安装记录_v1.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# STEP-105 FZG1-2 MapLibre Native 13.6.1 Validation APK 安装记录
|
||||
|
||||
- 日期:2026-10-09(JST)
|
||||
- 代码来源:官方 Native Android 13.6.1 + Particle .21 迁移候选,分支 `upgrade/android-native-13.6.1-20261009`,构建源提交 `30d0e6665e`。
|
||||
- 构建与目标:Mac,`MapLibreAndroidTestApp`、OpenGL Debug、Native x86_64,Gradle 6m48s 初次完成;因 Sentry 辅助库多 ABI 被旧检查规则拒绝;修订验证规则后增量 Gradle 10s,ZIP/ABI/体积检查 PASS。
|
||||
- 脚本修改:`tools/particle_android_validation/build_validation_apk.sh` 仅允许非目标 ABI 中已确认的 Sentry 库;`libmaplibre.so` 与 Custom Layer 必须仍为 x86_64;独立提交 `73db0356ac5860366f314ddba23b716220e7c16a`。
|
||||
- APK:`artifacts/maplibre-particle/step105-native1361-fzg/MapLibreAndroidTestApp-validation-opengl-debug-x86_64.apk`,66,505,502 字节,SHA-256 `77bc0b238fb476494410a603443030b104d78f97a737307be52460bf5a68f5aa`。
|
||||
- 设备:FZG1-2 / Android 13 / ADB `192.168.200.139:5555`。覆盖安装 `adb install -r` **Success**;设备实际版本 `13.6.1`,签名一致、首次安装日期不变,设备文件 SHA 与 Mac 完全一致。
|
||||
- NavSea 仍为前台 App,未主动启动测试 App;运行、GPU 绘制、RenderSegment 等仍 **NOT RUN**,不可写成已通过。
|
||||
- 回退:旧版 13.4.1-particle.21 APK 已独立保存于忽略目录 `artifacts/.../rollback/`,未纳入 Git。
|
||||
- Gate:本阶段 **APK_BUILD_AND_INSTALL_PASS**;下一阶段是 FZG 可视运行及完整功能回归。
|
||||
13
docs/50_Step记录/STEP-105_FZG1-2_MapLibre13.6.1运行验收记录_v1.md
Normal file
13
docs/50_Step记录/STEP-105_FZG1-2_MapLibre13.6.1运行验收记录_v1.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# STEP-105 / FZG1-2 MapLibre Native 13.6.1 实机运行记录 v1
|
||||
|
||||
- 日期:2026-10-09 JST。
|
||||
- 设备:FZG1-2 Android 13 x86_64,ADB 192.168.200.139:5555。源码:upgrade/android-native-13.6.1-20261009 / c30add4d335c5c02aadac5756c1606b5bc497269。
|
||||
- PASS:粒子页面启动和用户观察、Cache 开关、Pan/双击 Zoom 后存活与缓存边界失效、STEP-101 单次重建、STEP-101 流式 Logcat 20 次 Native reset 完整配对、STEP-099 R-C-R 底层复用、QBIN V4 Golden 时间控制六项、STEP-102 T1 Symbol 安全回退、默认界面恢复。
|
||||
- STEP-101 T2 证据:20 请求、20 Native reset enter/complete、40 Renderer reset enter/complete、21 ready、crash buffer 0;最初的环形缓冲被覆盖测试不计正式 PASS。
|
||||
- STEP-099 T4:动态 GeoJSON 71 次更新,R0 buildDelta=0、reuseDelta=3677、invalidationDelta=0。
|
||||
- STEP-102 T1:R0 buildDelta=0、reuseDelta=3683、invalidationDelta=0;R1 包含 Symbol,gate=false、Live/Fallback,符合预期。
|
||||
- FAIL:STEP-102 T2_TWO_FREE 的 R1 持续 placementCapable=true、gate=false、Live/Fallback,reuse=0、invalidation 增加 3682;按 fixture R1 为 Fill,理应支持 retained;R0 reuseDelta=3682、buildDelta=0、invalidationDelta=0。无 crash,不证明错绘或确定回归起点。
|
||||
- 疑点:运行时注入的 Annotation Symbol、真实 Style Layer Index 或 Segment 范围;应先提取完整诊断和旧 .21 对照,保留 fail-closed,不直接改 Core 公共语义。
|
||||
- 证据目录(不提交 Git):artifacts/maplibre-particle/step105-fzg-runtime-20261009/。截图、UI XML、Logcat、crash buffer 齐备。
|
||||
- 恢复:ADB 冷启动默认粒子页 GLOBAL/ACTIVE/EAST/MIX0%/256,当前 FZG 前台 Test App 13.6.1,Crash Buffer 0。
|
||||
- 状态:PARTIAL / T2 EXPECTATION FAIL。未编译、未执行 Jest、未更改源码或 NavSea,下一 Gate 是 T2 定向调查修正后回归。
|
||||
48
docs/50_Step记录/STEP-106_STEP102_T2_Placement边界修正_v1.md
Normal file
48
docs/50_Step记录/STEP-106_STEP102_T2_Placement边界修正_v1.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# STEP-106 STEP-102 T2 自动 Annotation 层边界修正记录 v1
|
||||
|
||||
日期:2026-10-09(JST)
|
||||
|
||||
**状态:SOURCE_FIXED / STATIC_PASS / ANDROID_BUILD_NOT_RUN / DEVICE_RETEST_NOT_RUN**
|
||||
|
||||
## 事实
|
||||
|
||||
- 旧版 13.4.1-particle.21 在 FZG 同样复现 T2 R1 placementCapable=true/gate=false/live/static-placement/reuse0,已保存同场景旧版日志。新版 13.6.1 在比较结束后成功恢复,设备 APK SHA 正确。
|
||||
- 两版 AnnotationManager 会自动在 Style 末尾插入 Symbol Layer org.maplibre.annotations.points。T2 测试 Fixture 的上层自身为 Fill,但原 R-C-R Plan 的 R1 从 step102-upper 延续至最后一层,把该内部 Symbol 也算进去。
|
||||
- 不允许修改或跳过 Shared Core/Renderer Placement 安全 Gate。此次只改两个 Android Test App Kotlin 文件;新增 C2 live 尾部区段,单独承载 MapLibre Annotation Symbol,从而使 T2 的 R1 仅含 Fill;T1 R1 仍含自身 Symbol。
|
||||
- 为 tick8 新增 STEP102_STYLE_LAYER_LAYOUT 日志,供下次实际 APK 验证真实 Style Layer 顺序、分段边界。
|
||||
- 代码 Git 提交:86906c8a6af474a8d064c6f6d7d431e2a7e3efe6;静态检查 PASS,没有执行 Gradle、ADB 修正版验证、Jest。
|
||||
|
||||
## 需用户手工编译
|
||||
|
||||
在 Mac 终端:
|
||||
|
||||
```bash
|
||||
cd /Users/tei/dev/MapLibreParticleLab-upgrade-android-1361
|
||||
export JAVA_HOME=/usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
|
||||
export ANDROID_HOME=/Users/tei/Library/Android/sdk
|
||||
export ANDROID_SDK_ROOT="$ANDROID_HOME"
|
||||
export PATH="$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$PATH"
|
||||
export MAPLIBRE_VALIDATION_OUT_DIR="$PWD/artifacts/maplibre-particle/step106-t2-fix"
|
||||
./tools/particle_android_validation/build_validation_apk.sh
|
||||
```
|
||||
|
||||
脚本内部使用 Gradle `--console=plain`。请保留 BUILD SUCCESS 和 build-info.txt,APK 生成后再由 RDC 安装到 FZG。不得把目前设备上的 13.6.1 旧 APK 当成包含本修复的版本。
|
||||
|
||||
## 复测门槛
|
||||
|
||||
- APK 完整性、包名、版本、Native x86_64、哈希校验;签名不符禁止卸载重装。
|
||||
- 新版 STEP102_STYLE_LAYER_LAYOUT 必须显示自动 Annotation Symbol 在最后的独立 Continuous C2;Plan valid、segments=4。
|
||||
- T1_FREE_SYMBOL:R0 continued Composite/Reuse、R1 placementCapable=true 且需要时 Live、C2 包含 Annotation;不崩溃。
|
||||
- T2_TWO_FREE:R0 和 R1 均 placementCapable=false、gate=true、actualExecution=composite;tick8→130 的 buildDelta=0、invalidationDelta=0、reuseDelta>0;C2 Live;不崩溃。
|
||||
- 复测 STEP-099 T4 R-C-R R0 locality,STEP-101 单次/20次 Native Reset(日志须持续采集),V4 Golden 最小烟测。保留失败路径及原始日志。
|
||||
- 修正作用域限定 Test App 分段验证,不等同生产快帧性能达标。若仍 fallback,应保留 Placement fail-closed,重新诊断而非强制 PASS。
|
||||
|
||||
## 2026-10-09 手工边界获用户明确授权后的 RDC 编译与 FZG 闭环
|
||||
|
||||
- 本轮用户明确要求“你编译和验证吧”。在 Mac 执行 Android Test App Gradle,源码 HEAD 23f7b8a4d7、干净;Gradle/Validation PASS。新版 APK SHA256=0ef3b033cd33139db07258745e9cd9d023170ce69767e3f8a5159821776ec9ef,66,505,495 字节,x86_64 MapLibre Native。
|
||||
- FZG1-2 签名检查一致,adb install -r Success;设备 base.apk SHA 与 Mac 相同、versionName=13.6.1。
|
||||
- T1_FREE_SYMBOL(两窗口):Style 实际 5 层/4 段;R0 reuseΔ+3682、buildΔ0、invalidΔ0;R1 Symbol 继续保守 live/static-placement,PASS。
|
||||
- T2_TWO_FREE(两窗口):R0、R1 均 placementCapable=false/gate=true/composite;两段各 reuseΔ+3683、buildΔ0、invalidΔ0;尾部 Annotation Symbol C2 live,PASS,原 T2 阻塞正式解除。
|
||||
- STEP099 T4:R0 reuseΔ+3675、build/invalidΔ0,PASS。STEP101 T1:1 个 nativeReset 完成,PASS;T2:20 Native reset 完整配对、21 ready、40 Render reset enter/complete,PASS。
|
||||
- QBIN V4 Golden t0/t1 插入、Runtime V4 READY 最小烟测 PASS。Crash Buffer 均无故障记录。FZG 已恢复默认 GLOBAL/ACTIVE/EAST/MIX0%/256,修正版 APK 哈希再次核对一致。
|
||||
- 状态更新:**STEP-106 CLOSED/PASS(FZG Android x86_64/OpenGL 定向问题及回归)**。不代表 ARM64、RN、iOS、Vulkan、全链发行通过。原始日志保存在 Git 忽略的 artifacts/maplibre-particle/step106-t2-fix/。
|
||||
48
docs/50_Step记录/STEP-107_iOS_StyleCoreOnlyPeer集合修复_v1.md
Normal file
48
docs/50_Step记录/STEP-107_iOS_StyleCoreOnlyPeer集合修复_v1.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# STEP-107 iOS Style CoreOnly Peer 集合一致性修复 v1
|
||||
|
||||
- 日期:2026-10-09(JST)
|
||||
- 状态:**进行中 / iOS Native 构建 PASS / XCTest 与 iPad 实机回归未执行**
|
||||
- 机器:Mac.lan;源码:`/Users/tei/dev/MapLibreParticleLab`;分支:`particle/main`
|
||||
- 开工 HEAD:`24105b1be7a2c8bd3a547117a30887fbaa0a308b`
|
||||
- 对应调查:`docs/20_调查/iOS地图点击重叠Source触发MLNStyle空Peer崩溃调查_v1.md`
|
||||
- 涉及的已正式发行基线:`maplibre-particle/rn/13.6.1-particle.22`(不修改原 Tag / Source Lock)。
|
||||
|
||||
## 目标与边界
|
||||
|
||||
消除 Darwin `MLNStyle.layers` 因 CoreOnly Layer 没有 ObjC Peer 而插入 nil 引发的 NSInvalidArgumentException;统一 `layers`、KVC 数量/索引/区间访问与增删位置语义,保持 C++ 原始 Style 的 CoreOnly 渲染能力以及可点击 ObjC 层的可见 Z-order。
|
||||
|
||||
只允许修复 Darwin `MLNStyle.mm`、对应 iOS XCTest、Step 与报告;不得修改 NavSea、RN 11.5.0 依赖、Android、Shared Core、粒子 Shader/Renderer、V22 已发布内容或已有工作树。不得新建 worktree,禁用 Jest;不把编译通过等同 iPad 修复验收。
|
||||
|
||||
## 本轮实施
|
||||
|
||||
- [x] 检查实际 Native `MLNStyle.layers` 中未判空的 `addObject:`,及 `LayerManagerDarwin::createPeer` 对 CoreOnly 类型返回空的现状。
|
||||
- [x] getter 仅暴露有效 ObjC Peer,跳过无 Peer CoreOnly Layer;DEBUG 日志包含不可桥接 Layer ID/类型,以便后续现场确认触发者。
|
||||
- [x] `countOfLayers`、`objectInLayersAtIndex:`、`getLayers:range:` 统一使用 ObjC 可见集;修正原区间 getter 的反向遍历顺序。
|
||||
- [x] ObjC 可见索引用于 `insertObject:inLayersAtIndex:`、`removeObjectFromLayersAtIndex:`;`insertLayer:aboveLayer:` 使用下一个可见 sibling,防止隐藏 CoreOnly 层造成 nil。
|
||||
- [x] 补充 `MLNStyleTests.mm` 定向 XCTest,构造 Native-only Layer 与普通 Layer 混合、索引/顺序/增删场景。
|
||||
- [x] `git diff --check` PASS。
|
||||
- [x] RDC 在 Mac 执行 `bazel build //platform/ios:MapLibre.dynamic --color=no --curses=no --show_progress_rate_limit=15`,exit 0,Build completed successfully(982.084 秒)。
|
||||
- [x] XCFramework ZIP 存在、`unzip -tqq` PASS,SHA-256:`f16b7f2be761a101bb4b906b900175b95412abfeef09d715e2c9321b300a7b8a`。
|
||||
- [ ] 运行新增 `MLNStyleTests` XCTest,包括 KVC 索引与 CoreOnly 层回归。
|
||||
- [ ] 使用实际 iPad 和此修复构建的 Native 验证「唐津ヨット ハーバ」直接点击、多 Source 重叠、十字光标、天气开关及粒子渲染。
|
||||
- [ ] 从真实日志确认当次缺失 Peer 的具体 Layer ID/type;若原因超出 CoreOnly 假设,应补充分析。
|
||||
- [ ] 如进入正式发行,按 GSRL 创建**新版本**、独立构建与 Source Lock,并做公网校验;不得改写 V22。
|
||||
|
||||
## 事实与遗留
|
||||
|
||||
新增 XCTest 源码已编写,但本轮 Bazel XCFramework 构建目标不包含 Darwin XCTest,故不能声称测试 PASS;实际 iPad 未测试。编译日志路径:`/tmp/maplibre_v22_ios_style_fix_bazel_20261009.log`。编译警告仅见无效搜索路径 `/opt/homebrew/lib`,不影响构建。构建产物为未发行验证 ZIP,不是 V22 原版或正式新版本。
|
||||
|
||||
原本就存在的 `vendor/expected-lite` 子模块本地状态与两份未跟踪文档必须保持原状。
|
||||
|
||||
## 下一步
|
||||
|
||||
由 Particle-iOS 在 Mac 真正执行 Darwin XCTest,必要时改正测试编译接口,再由用户将包含本次修复的 iOS Native 安装到 iPad 重放现场;上述验收未完成前仅按 PARTIAL / 待实机验收处理。不得转 NavSea JS workaround 或修改跨平台业务契约。
|
||||
|
||||
报告:`docs/报告/STEP-107_iOS_StyleCoreOnlyPeer集合修复_RDC实施报告_v1.md`。
|
||||
|
||||
## 代码交付 Git 核验(2026-10-09)
|
||||
|
||||
- Scoped 修复提交:`016bf5ad93e0fdd625034b29fedd150ea6af3943`,包含 iOS 实现、XCTest 源码、本 Step、实施报告和开发日志,共五个文件。
|
||||
- 已 push 至 `origin/particle/main`;远端 `refs/heads/particle/main` 回读等于提交完整 SHA。
|
||||
- 这是**尚未完成 XCTest / iPad 事故复测的代码交付**,不是 GSRL 正式发行;原 V22 Tag/Source Lock 不动。
|
||||
- 原有 `vendor/expected-lite` 本地状态与两份未跟踪文档未触碰;未创建新 worktree。
|
||||
20
docs/50_Step记录/STEP-108_V23统一正式发行_v1.md
Normal file
20
docs/50_Step记录/STEP-108_V23统一正式发行_v1.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# STEP-108 V23 同源统一正式发行 v1
|
||||
|
||||
- 日期:2026-10-09(JST)
|
||||
- 状态:**构建 PASS / 六项公网回读 PASS / GSRL 锁与 Tag 收尾中**
|
||||
- 冻结源码提交:`87f3d1c59a52581fb8339f0ea7d106b9f4b94fef`
|
||||
- 主目录:`/Users/tei/dev/MapLibreParticleLab`,分支 `particle/main`
|
||||
- 版本:Android/RN `13.6.1-particle.23`,iOS Metal `6.29.0-particle.23`
|
||||
- 前序修复:STEP-107 Darwin Style CoreOnly Peer 防崩溃代码已纳入。
|
||||
|
||||
## 分阶段事实
|
||||
1. Prepare:冻结并 push 源码版本,commit `87f3d1c59a52581fb8339f0ea7d106b9f4b94fef`,版本互锁正确。
|
||||
2. Build:`tools/particle_release_pipeline/release.sh 23 build`,exit 0;Android OpenGL 四 ABI Release、Maven Local、iOS Metal Bazel opt 与 RN tgz 均 PASS。日志:`/tmp/maplibre_v23_unified_release_build_20261009.log`。
|
||||
3. Publish:`tools/particle_release_pipeline/release.sh 23 publish`,exit 0;六文件 NAS 公网逐字节回读 PASS,SwiftPM `6.29.0-particle.23` Tag 可取。日志:`/tmp/maplibre_v23_unified_release_publish_20261009.log`。
|
||||
4. GSRL:六项文件实际 SHA-256 与下载地址见 `release/maplibre-particle/13.6.1-particle.23/SOURCE_LOCK.json`。
|
||||
5. Finalize:正式源码 Tag `maplibre-particle/rn/13.6.1-particle.23` 及最终远端核验执行后记录。
|
||||
|
||||
## 未验收及禁区
|
||||
- STEP-107 XCTest 与 iPad 直接点击崩溃场景尚未运行;不得宣称已实机修复。
|
||||
- V23 Android 实机、React Native 宿主整体集成、iOS Metal 真机 NOT_TESTED。
|
||||
- 原 V22 Tag/Source Lock 与发行制品不覆盖;禁止新建 worktree、擅自纳入无关 dirty 文件。
|
||||
@@ -4,12 +4,15 @@ The rendering backend is selected at build time through Gradle product flavors.
|
||||
|
||||
## Available backends
|
||||
|
||||
| Flavor | Backend | Status | Notes |
|
||||
|---|---|---|---|
|
||||
| `opengl` | OpenGL ES | Stable | Default, widest device compatibility |
|
||||
| `vulkan` | Vulkan | Stable | Better performance on modern devices |
|
||||
| `webgpuDawn` | WebGPU (Dawn) | Experimental | Uses Vulkan internally, see [WebGPU](./android-webgpu.md) |
|
||||
| `webgpuWgpu` | WebGPU (wgpu-native) | Experimental | Uses Vulkan internally, arm64-v8a only, see [WebGPU](./android-webgpu.md) |
|
||||
| Flavor | Backend | Status | Maven Central artifact | Notes |
|
||||
|---|---|---|---|---|
|
||||
| `opengl` | OpenGL ES | Stable | `org.maplibre.gl:android-sdk-opengl` | Default, widest device compatibility |
|
||||
| `vulkan` | Vulkan | Stable | `org.maplibre.gl:android-sdk-vulkan` | Better performance on modern devices |
|
||||
| `webgpuDawn` | WebGPU (Dawn) | Experimental | not published | Uses Vulkan internally, see [WebGPU](./android-webgpu.md) |
|
||||
| `webgpuWgpu` | WebGPU (wgpu-native) | Experimental | not published | Uses Vulkan internally, arm64-v8a only, see [WebGPU](./android-webgpu.md) |
|
||||
| `multiBackend` | OpenGL ES + Vulkan | Experimental | `org.maplibre.gl:android-sdk-vulkan-opengl` | Both backends in one AAR, chosen at runtime |
|
||||
|
||||
`org.maplibre.gl:android-sdk` is also published and currently maps to the `vulkan` flavor's release build. `-debug` suffixed artifact (e.g. `android-sdk-vulkan-debug`) is published for each flavor as well.
|
||||
|
||||
## Building with a specific backend
|
||||
|
||||
@@ -29,6 +32,9 @@ cd platform/android
|
||||
|
||||
# WebGPU (wgpu-native)
|
||||
./gradlew :MapLibreAndroidTestApp:installWebgpuWgpuDebug
|
||||
|
||||
# Both OpenGL ES and Vulkan, backend chosen at runtime
|
||||
./gradlew :MapLibreAndroidTestApp:installMultiBackendDebug
|
||||
```
|
||||
|
||||
The same pattern applies to the library module (`MapLibreAndroid`):
|
||||
@@ -49,5 +55,8 @@ Each flavor sets different CMake arguments:
|
||||
- `vulkan`: `-DMLN_WITH_VULKAN=ON`
|
||||
- `webgpuDawn`: `-DMLN_WITH_WEBGPU=ON`, `-DMLN_WEBGPU_IMPL_DAWN=ON`
|
||||
- `webgpuWgpu`: `-DMLN_WITH_WEBGPU=ON`, `-DMLN_WEBGPU_IMPL_WGPU=ON`
|
||||
- `multiBackend`: `-DMLN_ANDROID_MULTI_BACKEND=ON`
|
||||
|
||||
Only one backend is active per build. Renderer-specific Java code lives in `src/opengl/`, `src/vulkan/`, or `src/webgpu/` source sets.
|
||||
For `opengl`, `vulkan`, and the WebGPU flavors, only one backend is compiled in and it's fixed for the lifetime of the app. `multiBackend` is the exception - it ships both the OpenGL ES and Vulkan native libraries and picks one at runtime.
|
||||
|
||||
Renderer-specific Java code is split between flavor-specific source sets (`src/opengl/`, `src/vulkan/`, `src/multiBackend/`) and shared per-backend code in `src/sharedRenderer/opengl/` and `src/sharedRenderer/vulkan/`.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# WebGPU on Android
|
||||
|
||||
Two WebGPU implementations are supported: **Dawn** (Google, C++) and **wgpu-native** (Rust). Both use Vulkan internally on Android. The Gradle product flavors are `webgpuDawn` and `webgpuWgpu`, sharing the `src/webgpu/` Java source set.
|
||||
Two WebGPU implementations are supported: **Dawn** (Google, C++) and **wgpu-native** (Rust). Both use Vulkan internally on Android. The Gradle product flavors are `webgpuDawn` and `webgpuWgpu`, sharing the `src/vulkan/` and `src/sharedRenderer/vulkan/` Java source sets.
|
||||
|
||||
## Building with Dawn
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ git clone --recurse-submodules git@github.com:maplibre/maplibre-native.git
|
||||
Make sure the following Homebrew packages are installed:
|
||||
|
||||
```sh
|
||||
brew install bazelisk webp libuv webp icu4c jpeg-turbo glfw libuv
|
||||
brew install bazelisk webp libuv icu4c jpeg-turbo glfw
|
||||
brew link icu4c --force
|
||||
```
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ Tracy computational overhead is very low but by default it keeps all instrumenta
|
||||
|
||||
#### Instrumentation in MapLibre
|
||||
|
||||
The file `include/mbgl/util/instrumentation.hpp` defines the following instrumentation macros:
|
||||
The file `include/mln/util/instrumentation.hpp` defines the following instrumentation macros:
|
||||
|
||||
##### `MLN_TRACE_ZONE(label)`
|
||||
The macro records the timestamps at the start and end of the code scope. The parameter label is a user defined name for the zone. Example:
|
||||
|
||||
@@ -55,22 +55,22 @@ To create a new module:
|
||||
|
||||
1. Add a new source file to `rustutils/src/example.rs`.
|
||||
2. Implement it, see the [CXX documentation](https://cxx.rs/index.html) or see `rustutils/src/color.rs` for an example.
|
||||
3. Create a C++ source file that will use the generated C++ header. See `src/mbgl/util/color.rs.cpp` for an example. Import the generated header with
|
||||
3. Create a C++ source file that will use the generated C++ header. See `src/mln/util/color.rs.cpp` for an example. Import the generated header with
|
||||
```cpp
|
||||
#include <rustutils/example.hpp>
|
||||
```
|
||||
4. Conditionally include either the `*.rs.cpp` file or the `*.cpp` file it replaces in CMake and Bazel. Here is what it looks like for CMake:
|
||||
```cmake
|
||||
${PROJECT_SOURCE_DIR}/src/mbgl/util/color$<IF:$<BOOL:${MLN_USE_RUST}>,.rs.cpp,.cpp>
|
||||
${PROJECT_SOURCE_DIR}/src/mln/util/color$<IF:$<BOOL:${MLN_USE_RUST}>,.rs.cpp,.cpp>
|
||||
```
|
||||
And here for Bazel:
|
||||
```bazel
|
||||
select({
|
||||
"//:rust": [
|
||||
"src/mbgl/util/color.rs.cpp",
|
||||
"src/mln/util/color.rs.cpp",
|
||||
],
|
||||
"//conditions:default": [
|
||||
"src/mbgl/util/color.cpp",
|
||||
"src/mln/util/color.cpp",
|
||||
],
|
||||
})
|
||||
```
|
||||
|
||||
64
docs/报告/STEP-104_官方Native13.6.1升级阶段A_Codex完成报告_v1.md
Normal file
64
docs/报告/STEP-104_官方Native13.6.1升级阶段A_Codex完成报告_v1.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# STEP-104 官方 Native 13.6.1 升级阶段 A — Codex 完成报告 v1
|
||||
|
||||
## 1. 执行结论
|
||||
**PARTIAL:官方 Native 13.6.1 + Particle .21 源码移植已完成三方合并,Android x86_64 OpenGL Native 编译链接 PASS;其他 ABI、GPU 视觉/行为、RN 与 iOS 未验收。** 不是正式发布结论。
|
||||
|
||||
## 2. 执行模型与人员分工
|
||||
- Codex:`gpt-6.1-sol`,`high`,真实会话 `turn_context` 已由 RDC 独立核对。
|
||||
- Codex 负责源码冲突、接口调整和静态核对;RDC 负责 Git 真实合并/index/commit、submodule 和 Native 构建;未切换其他模型。
|
||||
- 所有操作在隔离工作树 `/Users/tei/dev/MapLibreParticleLab-upgrade-android-1361`,branch `upgrade/android-native-13.6.1-20261009`;未修改 NavSea、正式 .21、Integration 合同或 iOS 专用行为。
|
||||
|
||||
## 3. Git 基线与多个提交
|
||||
- 官方新底座:Android Native 13.6.1,`c7506d6aff3800e946f89e1a51432fc22d1a6534`。
|
||||
- 旧自研扩展:发布 .21 `630ec657687bad4200c059bbccbb950d9c6f7ce9`,完整历史及审计闭环 `b433775348373b10fba02dc0e1f728bacd72f9e7`。
|
||||
- `e4c7af7c401aebc0fdb9d85309ad781e328baff4`:升级任务与根目录 `recoder_step.md` 的启动检查点。
|
||||
- `f8378fd7113c4d230500f0b82902d2356907f4a9`:两父三方合并,将自研 Particle 与 RenderSegment 移植至官方 13.6.1(提交时未编译)。
|
||||
- `a4b5f4eaa0eccb734e00d67adb5e750bba320404`:补充真实合并进度与风险记录。
|
||||
- 本报告对应的构建发生在 `a4b5f4eaa0` 上。本文及后续 Gate 记录另作独立收尾 commit,不修改已验证的 Native 产品代码;最终 HEAD 和远端结果以实际 Git 命令回填。
|
||||
|
||||
## 4. 主要源码调整
|
||||
- 自研 Field、Ingress、QBIN、WeatherColor、RasterParticle 代码迁移到官方 `include/mln`、`src/mln` 路径,不恢复旧 `mbgl` 产品目录。
|
||||
- 合并官方与 .21 的 Source/Layer Factory、Shader manifest 与 OpenGL 建置注册,保留官方 CustomMVTVector 和现有 RasterArray。
|
||||
- 适配 RenderLayer 新 `PaintParameters` 参数和 `renderableSize`,同步保留 RenderSegment/Retained、fast-path、revision、source-scoped fail-closed、observer 与资源清理。
|
||||
- Android JNI 自研入口及官方 Feature State 入口的静态声明/注册核对,未重新定义 RN 公共 API。
|
||||
|
||||
## 5. 冲突与格式检查
|
||||
- `git merge --no-ff --no-commit` 初始 76 个未合并路径;Codex 清除冲突标记,RDC 确认 `git ls-files -u` 为 0 后完成合并提交。
|
||||
- 新版 Native 源码范围的 `git diff --check` PASS。整体 merge 中有 3 份历史文档保留自旧版的尾随空格,逐字节确认来自 .21 源提交,未篡改历史文档。
|
||||
- 源码状态以本次 Git branch 和原生编译证据为准,静态检查不替代行为验收。
|
||||
|
||||
## 6. Native 构建记录
|
||||
- 环境:Mac,Homebrew OpenJDK 17,Android SDK/NDK `28.2.13676358`,SDK CMake 3.31.6;ABI=`x86_64`,Renderer=OpenGL,BuildType=Debug。
|
||||
- 标准命令(`platform/android`;先 export JAVA_HOME/ANDROID_HOME/ANDROID_SDK_ROOT):
|
||||
|
||||
```bash
|
||||
./gradlew --no-daemon --max-workers=3 --console=plain -Pmaplibre.abis=x86_64 :MapLibreAndroid:externalNativeBuildOpenglDebug
|
||||
```
|
||||
|
||||
- 首轮:CMake 因缺少 `vendor/maplibre-native-base/deps/cheap-ruler-cpp/include` 失败(新 worktree submodule 未初始化)。
|
||||
- 第二轮:CMake 因 `maplibre-tile-spec/cpp/vendor/earcut/CMakeLists.txt` 和 `mbgl-vendor-supercluster` license 缺失失败。
|
||||
- RDC 校验 top-level Native submodules 固定提交,恢复中断克隆导致的残缺 vendor 工作树;第三轮命令成功,Gradle `BUILD SUCCESSFUL in 22m 24s`,退出码 **0**。已执行真实 NDK 编译与动态库链接。
|
||||
- 第三轮原始构建日志保存于 Mac `/tmp/step104_android_native_opengl_gradle_third.log`;前两轮错误日志保存于同目录对应 `gradle.log` 与 `gradle_retry.log` 文件。
|
||||
|
||||
## 7. 产物证据
|
||||
- 完整路径:`/Users/tei/dev/MapLibreParticleLab-upgrade-android-1361/platform/android/MapLibreAndroid/build/intermediates/cmake/openglDebug/obj/x86_64/libmaplibre.so`。
|
||||
- 文件类型:ELF 64-bit LSB shared object、x86-64、dynamically linked、with debug_info、not stripped。
|
||||
- 大小:`377246848` bytes。
|
||||
- SHA-256:`ff5a5eb45f84ff633a87fe385fb04ee39ba63ed3bc486003408e02cea78c8907`。
|
||||
- 此产物未签名、未公开发布,不应作为 NavSea 正式依赖或全 ABI 发布件。
|
||||
|
||||
## 8. 实际测试与未测试范围
|
||||
- PASS:三方合并无未解决冲突、Native 编译器完成 x86_64 OpenGL 工程构建、最终 libmaplibre.so 链接。
|
||||
- NOT RUN:ARMv7、ARM64、其余 Android ABI、Android APK/实体机/虚拟机 GPU 视觉、QBIN/T0/T1 运行态、Pan/Zoom/Rotate、Style reset、RenderSegment retained 行为、Vulkan、RN 11.5.0 Feature State 联调、iOS Metal/XCFramework。
|
||||
- 未执行 Jest;未以静态推断伪报运行通过。
|
||||
|
||||
## 9. 已知问题与阻塞
|
||||
- GitHub 下载曾出现间歇性 DNS/HTTPS 超时;RDC 校正必要的 submodule HEAD 后完成编译。
|
||||
- Gradle/CMake 输出 SDK XML 版本、Gradle 10 弃用提示;本轮未导致失败。长期工具链调整需单独设计,不并入当前移植 Gate。
|
||||
- iOS/shared contract 更改不属于 Android 本轮权限;涉及跨平台共同语义须回 Integration 协调。
|
||||
|
||||
## 10. 下一阶段、停点与发布边界
|
||||
建议在**Android 多 ABI(armeabi-v7a / arm64-v8a / x86 / x86_64)Native 验证 + Test Host GPU 功能回归**处设置下一 Gate。下一阶段再独立验证 RN 11.5.0 的公共桥接与 Feature State,iOS 由对应负责方验证。当前不发布 AAR、npm,不改 NavSea 主线。
|
||||
|
||||
## 11. 收尾事实
|
||||
本次更新采用根目录 `recoder_step.md` append-only,并追加 STEP-104;Git 提交、远端分支、最终 HEAD、push 结果以 RDC 后续独立回读为准。未完成项如实保留。
|
||||
59
docs/报告/STEP-105_FZG_MapLibre13.6.1测试APK打包安装_RDC执行报告_v1.md
Normal file
59
docs/报告/STEP-105_FZG_MapLibre13.6.1测试APK打包安装_RDC执行报告_v1.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# STEP-105 Android Native 13.6.1 — FZG1-2 Validation APK 打包与安装 RDC 执行报告 v1
|
||||
|
||||
## 1. 结论
|
||||
|
||||
**APK_BUILD_PASS / FZG_INSTALL_PASS / DEVICE_APK_HASH_PASS / RUNTIME_NOT_RUN**。
|
||||
|
||||
本次在 Mac 使用官方 MapLibre Native Android 13.6.1 + Particle .21 升级候选打包 `MapLibreAndroidTestApp`,通过 FZG1-2 的 ADB 覆盖安装,并在设备端核对实际版本和完整 APK SHA-256。没有安装 NavSea,也没有声明粒子运行态通过。
|
||||
|
||||
## 2. 环境与版本
|
||||
|
||||
- Mac 目录:`/Users/tei/dev/MapLibreParticleLab-upgrade-android-1361`
|
||||
- 源码分支:`upgrade/android-native-13.6.1-20261009`
|
||||
- 构建源 HEAD:`30d0e6665eb16a258e47b3a8cc0d16932e43762b`
|
||||
- 底座 Native:`android-v13.6.1`;OpenGL Debug,Native ABI `x86_64`
|
||||
- Test App 包名:`org.maplibre.android.testapp`;新版本 `13.6.1`,`versionCode=14`,`targetSdk=35`。
|
||||
- FZG:`FZG1-2` / Android 13 / `192.168.200.139:5555`,`ro.product.cpu.abi=x86_64`;另一台 Odin 不在修改范围。
|
||||
- 工具:Mac JDK17、Android SDK/NDK、Gradle `--console=plain`;缺失的 Android SDK Platform 35 已经由 Gradle 获取。
|
||||
|
||||
## 3. APK 构建与失败恢复
|
||||
|
||||
使用项目原有 `tools/particle_android_validation/build_validation_apk.sh`。
|
||||
|
||||
1. 第一轮 Gradle `:MapLibreAndroidTestApp:assembleOpenglDebug` 编译 **BUILD SUCCESSFUL in 6m 48s**,但原 Validation 脚本要求 APK 全部 ABI 集合精确为 `x86_64`。实际 APK 其他 ABI 含有 Sentry 日志库 `libsentry.so` / `libsentry-android.so`,因此脚本按照 fail-closed 策略拒绝打包,未安装。
|
||||
2. 调整 `tools/particle_android_validation/build_validation_apk.sh`:所有非目标 ABI 的文件只接受 `arm64-v8a`、`armeabi-v7a`、`x86` 下这两种 Sentry 库;其它意外 Native 库仍拒绝。额外确认 `lib/x86_64/libmaplibre.so`、`lib/x86_64/libexample-custom-layer.so` 存在;保持 APK 体积及 `libmaplibre.so` 体积上限。
|
||||
3. 脚本通过 `bash -n`、`git diff --check`;增量 Gradle **BUILD SUCCESSFUL in 10s**,脚本报告 **BUILD SUCCESS**。
|
||||
4. 修改脚本单独 Git commit:`73db0356ac5860366f314ddba23b716220e7c16a`。APK 的 `build-info.txt` 记录源码 HEAD `30d0e6665e` 且当时 `git_dirty=true`,因为脚本尚未提交;这里如实保留这一构建时事实,不能把后续 commit 当作已经编入 APK 的 C++ SHA。
|
||||
|
||||
## 4. APK 最终产物
|
||||
|
||||
- 相对路径:`artifacts/maplibre-particle/step105-native1361-fzg/MapLibreAndroidTestApp-validation-opengl-debug-x86_64.apk`
|
||||
- APK 字节数:`66,505,502`。
|
||||
- `libmaplibre.so` 在 APK 内的字节数:`39,970,088`。
|
||||
- SHA-256:`77bc0b238fb476494410a603443030b104d78f97a737307be52460bf5a68f5aa`。
|
||||
- `aapt dump badging`:`org.maplibre.android.testapp` / `versionName=13.6.1`。
|
||||
- `apksigner verify` PASS;校验日志中的非致命 META-INF 元信息警告不代表签名失败。
|
||||
- APK 同时携带三种其它 ABI 的 *Sentry 辅助库*;`libmaplibre.so` 和 Test App Custom Layer 均仅为 x86_64。产物命名中的 x86_64 指 MapLibre Native 编译目标,不表示 APK 没有任何其它架构的 Sentry 依赖。
|
||||
|
||||
## 5. FZG 安装与设备端回读
|
||||
|
||||
- 安装前原版:`13.4.1-particle.21`,包名相同。
|
||||
- 从设备拉取旧 APK,`apksigner verify --print-certs` 核对新旧证书 SHA-256 均为 `e3f8fae6451ed6322259d090dd8e8788df554ab25ed89a01c78014f1d5ef8236`,允许正常覆盖。
|
||||
- 安装命令:`adb -s 192.168.200.139:5555 install -r <APK>`。
|
||||
- ADB 明确返回 **Success**,完成时间 **2026-10-09 12:03:06 JST**。
|
||||
- `dumpsys package`:`versionName=13.6.1`,`lastUpdateTime=2026-10-09 12:03:06`,`firstInstallTime=2026-09-22 07:34:56`,未卸载重装。
|
||||
- `adb shell sha256sum /data/app/.../base.apk` 返回 `77bc0b238fb476494410a603443030b104d78f97a737307be52460bf5a68f5aa`,与 Mac 本地 APK 字节级一致。
|
||||
- 安装后 FZG 前台仍是 `com.navsea.app/.MainActivity`。这不是 NavSea 更换 Native AAR/npm,也未更改 NavSea 本身。
|
||||
|
||||
## 6. 回退与未完成内容
|
||||
|
||||
- 安装前旧 APK 备份在(Git 忽略目录):`artifacts/maplibre-particle/step105-native1361-fzg/rollback/MapLibreAndroidTestApp-original-13.4.1-particle.21.apk`,SHA-256 `999f773276b29fffae05c1edc977e19df6cebecd94e4a4095508d0c5e97e07c2`。无需重新下载旧版 APK;尚未执行回退。
|
||||
- **NOT RUN**:Test App 前台启动、GPU 粒子动画/QBIN/T0/T1、地图 pan/zoom/rotation、RenderSegment retained、Style/layer unload/reload、崩溃/帧性能、其它 ABI、RN 11.5.0 和 iOS。
|
||||
- 下一阶段建议使用已安装的 FZG 测试 App 进行上述真实 GPU/生命周期回归,验收完成后再考虑升级分支合并或发布。
|
||||
- 本任务通过 RDC 直接构建/安装,**没有调用 Codex 模型或替换 Codex 工作**。与此前 STEP-104 的 GPT-6.1 Sol/High 实施范围不同。
|
||||
|
||||
## 7. 记录与 Git
|
||||
|
||||
- Root `recoder_step.md` 追加事实,`docs/50_Step记录/` 单独记录,完成报告写入 `docs/报告/`。
|
||||
- 脚本代码 commit `73db0356ac5860366f314ddba23b716220e7c16a`。本次文档提交与 push、远端 HEAD 由 RDC 单独验收,最终结果以实际 Git 回执为准。
|
||||
- 只推送 `upgrade/android-native-13.6.1-20261009`;正式 `particle/main` 不更新。
|
||||
57
docs/报告/STEP-105_FZG_MapLibre13.6.1运行验收_RDC执行报告_v1.md
Normal file
57
docs/报告/STEP-105_FZG_MapLibre13.6.1运行验收_RDC执行报告_v1.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# STEP-105 FZG1-2 MapLibre 13.6.1 实机 ADB 验收报告 v1
|
||||
|
||||
## 1. 结论
|
||||
|
||||
整体状态:PARTIAL。Android x86_64 OpenGL 升级候选已在 FZG 上完成多组运行验收;STEP-102 T2_TWO_FREE 仍 FAIL。不得以已安装、可显示粒子和无崩溃代表升级全部 PASS。
|
||||
|
||||
## 2. 环境和范围
|
||||
|
||||
- 2026-10-09 JST;Mac RDC/ADB;FZG1-2 Android 13,serial 192.168.200.139:5555。
|
||||
- Test App org.maplibre.android.testapp / versionName 13.6.1,已安装 APK SHA-256 为 77bc0b238fb476494410a603443030b104d78f97a737307be52460bf5a68f5aa。
|
||||
- Git 升级分支 upgrade/android-native-13.6.1-20261009,测试源码 HEAD c30add4d335c5c02aadac5756c1606b5bc497269。
|
||||
- 仅 ADB UI/手势/Intent/Logcat/截图;没有 Codex、Gradle、Jest、NavSea 修改、iOS、其他 ABI 或正式发布。
|
||||
|
||||
## 3. 验收表
|
||||
|
||||
| 实测项目 | 证据 | 结论 |
|
||||
|---|---|---|
|
||||
| 初始粒子显示 | 用户看到粒子;UI GLOBAL/ACTIVE/EAST/MIX0%/256;两帧截图 | PASS(初始显示) |
|
||||
| Cache ON→OFF→ON | 状态回读,runtime-disabled 后恢复 CACHE ON | PASS |
|
||||
| 地图平移/双击缩放 | App 存活;camera-or-boundary 缓存失效,后续复用 | PASS(基础运行) |
|
||||
| STEP-101 T1 单次重建 | destroy enter/return、Native reset、new Renderer ready、DONE | PASS |
|
||||
| STEP-101 T2 20 次重建 | 流式日志20请求、20 Native reset进入/完成、40 Render reset进入/完成、21 ready、crash buffer0 | PASS |
|
||||
| STEP-099 T4 R-C-R | 71次动态源更新,R0 build2→2、reuse5696→9373、invalidation35→35 | PASS(R0 locality) |
|
||||
| QBIN V4 Golden | T0/T1 ACCEPTED_INSERTED,6项播放控制 ACCEPTED | PASS(操作契约) |
|
||||
| STEP-102 T1_FREE_SYMBOL | R0 composite reuse +3683;R1 symbol placement gate false,Live | PASS |
|
||||
| STEP-102 T2_TWO_FREE | R0 reuse +3682;R1 placementCapable=true、Live/Fallback、reuse0 | FAIL(预期双 Retained) |
|
||||
| 最终恢复 | 默认 GLOBAL/ACTIVE/EAST/MIX0%/256;前台 Test App 13.6.1;crash buffer0 | PASS |
|
||||
|
||||
## 4. 关键数字及诊断
|
||||
|
||||
STEP-101 T2 首轮虽完成20次但设备环形 Logcat 丢失了前15次。该轮不记完整 PASS。第二轮使用 Mac 实时流式日志,从场景启动前持续记录到 DONE,完整包含:20 RESET_REQUEST、20 MapView destroy enter、20 destroy return、20 nativeReset entered、20 nativeReset completed、40 resetRenderer entered、40 completed、21 NEW_RENDERER_READY、1 SCENARIO_DONE,Crash Buffer 0。
|
||||
|
||||
STEP-099 T4 R-C-R(底层 Retained/中央粒子 Continuous/上层动态 Retained)在 tick8 至 tick130:R0 build=2→2、reuse=5696→9373(+3677)、invalidation=35→35;动态 GeoJSON 共71次更新。上层 R1 因 static-placement 保守 Live 回退。该 PASS 仅针对独立 R0 的 Source-scoped 缓存隔离。
|
||||
|
||||
QBIN V4 Golden 录得 t0=ACCEPTED_INSERTED、t1=ACCEPTED_INSERTED,后续 action=3 Seek25、4 Seek75、1 Play、5 Speed2、2 Pause、7 Clear,均 result=ACCEPTED;最终 UI 显示 V4 CLEARED。这不是天气场颜色和方向的像素级数值证明。
|
||||
|
||||
## 5. T2_TWO_FREE 阻塞事实和归因限制
|
||||
|
||||
T1:R0 placementCapable=false/gate=true/actual=composite,build1→1、reuse196→3879、invalidation6→6;带 Symbol 的 R1 placementCapable=true/gate=false/actual=live,符合保守安全设计。
|
||||
|
||||
T2:R0 placementCapable=false/gate=true/actual=composite,build1→1、reuse197→3879、invalidation5→5;R1 即使 fixture 指定 Fill,仍 placementCapable=true、gate=false、actual=live、fallback=static-placement,build0→0、reuse0→0、invalidation202→3884。最终 symbolFadeChange≈0.997、placementTransitionActive=true、crossSourceCollisions=true。两窗口 tick8/130 一致;无 FATAL/ANR,Crash Buffer 0。
|
||||
|
||||
只读源码:renderSegmentHasPlacementCapableLayer 只要分段内出现类型 symbol 即判 true,而测试 fixture T2 的自定义上层为 Fill。应调查运行时完整 Style Layer 列表、默认 Annotation Symbol 注入、segment begin/end、source/layer 归属。其它场景的 dependency 中曾出现 org.maplibre.annotations,但尚未证明在 T2 中造成该问题。缺少旧 .21 的 T2 运行对照,因此不应把该差异直接断言为 13.6.1 新引入的回归。
|
||||
|
||||
现象是保守 Live/Fallback 与复用能力未达预期,不是已证实的错绘或 GPU 资源错误。禁止为凑 PASS 关闭 Placement 安全门。需先核实是场景/区段定义问题还是实现问题,再在授权范围内修复并重新验收。
|
||||
|
||||
## 6. 原始证据、范围与收尾
|
||||
|
||||
Mac Git 忽略目录:artifacts/maplibre-particle/step105-fzg-runtime-20261009/,共含 01-baseline、02-cache、03-camera、04-teardown-t1、05-teardown-t2、06-locality-t4、07-qbin-v4、08-step102-t1、09-step102-t2、10-restored;保存截图、UI XML、原始流式 Logcat 与 crash buffer。其中 STEP-101 T2 正式证据为 05-teardown-t2/stream-complete.log。
|
||||
|
||||
本轮未做严格像素对比、长时间性能曲线、bearing/pitch 数值校验、Vulkan、RN 11.5.0、iOS、NavSea SDK 接入或正式发布。
|
||||
|
||||
结束前将 FZG 的 Test App 重新冷启动至普通粒子状态 GLOBAL / ACTIVE / EAST / MIX 0% / 256,前台运行、版本仍 13.6.1,设备 Crash Buffer 为空;NavSea 没有被安装或覆盖。
|
||||
|
||||
下一阶段:STEP-102 T2 的只读诊断与旧版 .21 对照,确定是否默认 annotation layer 被归入 R1,必要时明确修正场景/索引或源码,并在用户手工 Android 编译后由 RDC 重跑 T1/T2、T4 R-C-R 与 STEP-101 20次 reset。未完成前 Android Native 功能 Gate 保持 PARTIAL。
|
||||
|
||||
此报告没有业务代码提交。根目录 recoder_step.md 追加事实,中文阶段记录与 Git 远端状态通过 RDC 单独收尾。
|
||||
78
docs/报告/STEP-106_STEP102_T2_Placement边界修正_RDC实施报告_v1.md
Normal file
78
docs/报告/STEP-106_STEP102_T2_Placement边界修正_RDC实施报告_v1.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# STEP-106 STEP-102 T2 Placement 边界修正 — RDC 实施报告 v1
|
||||
|
||||
## 1. 当前判定
|
||||
|
||||
**源码修正已提交、静态检查通过;Android/Kotlin 编译 NOT RUN、FZG 修正版设备验证 NOT RUN。**
|
||||
|
||||
本阶段专门处理 STEP-105 的 T2_TWO_FREE 未达到预期问题。保留原 STEP-105 PARTIAL 状态直至修正版 APK 手工编译和 FZG 定向运行 Gate 全部通过。没有改动核心 Renderer 的 Placement 容错判定。
|
||||
|
||||
## 2. 旧版同设备复现
|
||||
|
||||
设备 FZG1-2,Android 13,x86_64,ADB 192.168.200.139:5555。
|
||||
|
||||
先核对旧、新 APK 的包名相同为 org.maplibre.android.testapp、versionCode 均为14、证书 SHA-256 均为 e3f8fae6451ed6322259d090dd8e8788df554ab25ed89a01c78014f1d5ef8236。旧版文件 SHA-256 为 999f773276b29fffae05c1edc977e19df6cebecd94e4a4095508d0c5e97e07c2。
|
||||
|
||||
临时 adb install -r 安装旧版 13.4.1-particle.21,运行:
|
||||
|
||||
`adb -s 192.168.200.139:5555 shell am start -W -n org.maplibre.android.testapp/.activity.particle.ParticleCoreLayerValidationActivity --es step102_scenario T2_TWO_FREE`
|
||||
|
||||
流式 Logcat 在 tick29/30 记录:R0 placementCapable=false/gate=true/composite/reuse 正常;R1 placementCapable=true/gate=false/actual=live/fallback=static-placement/build0/reuse0。因而确认该现象旧 .21 **同样存在**,不是已证明由官方 Native 13.6.1 升级新引入。
|
||||
|
||||
立即 adb install -r 恢复已签名的新 13.6.1,返回 Success;设备已安装 base.apk 的 SHA-256 为 77bc0b238fb476494410a603443030b104d78f97a737307be52460bf5a68f5aa,和 Mac 现有新 APK 完全一致。随后重新启动不带 Extra 的 Particle Core Layer Validation Activity,版本仍 13.6.1。
|
||||
|
||||
证据位于 Git 忽略目录 `artifacts/maplibre-particle/step105-fzg-t2-rootcause-20261009/old21-t2-stream.log`,以及先前 `step105-fzg-runtime-20261009/09-step102-t2/stream.log`。
|
||||
|
||||
## 3. 可核对的源级原因
|
||||
|
||||
13.6.1 的 `src/mln/annotation/annotation_manager.cpp` 中,`AnnotationManager::updateStyle()` 会创建名为 `org.maplibre.annotations.points` 的 Symbol Layer 并追加至 Style。旧 .21 的 `src/mbgl/annotation/annotation_manager.cpp` 保留同样逻辑。
|
||||
|
||||
原测试计划为 R0 RETAINED → C0 CONTINUOUS 从 `step102-particle` 开始 → R1 RETAINED 从 `step102-upper` 开始并延伸到 Style 最后一层。测试 fixture 的 T2 `step102-upper` 是 Fill,但 R1 还包含默认追加的 Annotation Symbol。RenderSegment 层级的 `renderSegmentHasPlacementCapableLayer()` 只要在范围内看到 Symbol 即正确地判 true;在 fade/placement 期间 fallback `static-placement` 是安全行为,不能绕过。
|
||||
|
||||
这是对代码结构和两版设备现象的一致解释。真实 Style 的完整 `styleLayers` 数组先前没有输出,因此最终边界还要等待修正版新增诊断进一步核对;不得在这里宣称 Pixel/GPU 原因已由运行时完整证明。
|
||||
|
||||
## 4. 修改与保护边界
|
||||
|
||||
源码分支:`upgrade/android-native-13.6.1-20261009`。
|
||||
|
||||
代码提交:`86906c8a6af474a8d064c6f6d7d431e2a7e3efe6` — `test(android): isolate internal annotation symbol from STEP-102 retained ranges`。
|
||||
|
||||
两个文件:
|
||||
1. `platform/android/MapLibreAndroidTestApp/src/main/java/org/maplibre/android/testapp/activity/particle/Step102PlacementFixture.kt`:为 T1、T2 共用计划增加最后一段 CONTINUOUS,startLayerId=`org.maplibre.annotations.points`,使原 R1 只包含自有上层。两场景保持相同边界。若默认 Layer 不存在,现有 Plan resolver 会因 boundary-layer-missing fail-closed,不会错误地忽略该层。
|
||||
2. `platform/android/MapLibreAndroidTestApp/src/main/java/org/maplibre/android/testapp/activity/particle/ParticleCoreLayerValidationActivity.kt`:在 tick8 输出一次 `STEP102_STYLE_LAYER_LAYOUT`,包含 Style Layer id/type/index 与四段 begin/end,用实际测试证据验证上层边界。
|
||||
|
||||
没有修改 `src/mln`、`include/mln`、Renderer、Shared Core、NavSea 或 iOS,也未改变任何公开 API/ABI。
|
||||
|
||||
新增 C2 使本测试由 R-C-R 变为 R-C-R-C,并可能失去“仅一个 Continuous”的 Particle fast-path 优化条件:这是仅用于证明两个 Retained 在真实内部 Annotation 层存在时安全局部复用的独立测试布局,不能当作生产性能验证或建议宿主一律使用四区段布局。
|
||||
|
||||
## 5. 当前检查结果
|
||||
|
||||
- `git diff --check` PASS。
|
||||
- 静态合成 Style 解析:T1 的 R1 为 Symbol,T2 的 R1 为 Fill,Annotation Symbol 位于 C2;模拟边界覆盖完整且无空段,PASS(**非 Kotlin 构建、非真实 Runtime**)。
|
||||
- Android Gradle/Kotlin Build:NOT RUN(用户手工编译)。
|
||||
- 更新版 Validation APK:NOT BUILT。
|
||||
- FZG 新计划的 T1/T2 tick8/130:NOT RUN。
|
||||
- 其它 ABI / iOS / NavSea / Jest:NOT RUN。
|
||||
|
||||
## 6. 用户手工编译与 RDC 验收
|
||||
|
||||
Mac 终端:
|
||||
|
||||
```bash
|
||||
cd /Users/tei/dev/MapLibreParticleLab-upgrade-android-1361
|
||||
export JAVA_HOME=/usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
|
||||
export ANDROID_HOME=/Users/tei/Library/Android/sdk
|
||||
export ANDROID_SDK_ROOT="$ANDROID_HOME"
|
||||
export PATH="$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$PATH"
|
||||
export MAPLIBRE_VALIDATION_OUT_DIR="$PWD/artifacts/maplibre-particle/step106-t2-fix"
|
||||
./tools/particle_android_validation/build_validation_apk.sh
|
||||
```
|
||||
|
||||
脚本自带 Gradle `--console=plain`、Native ABI/体积/ZIP 检查。用户编译后由 RDC 确认 Git 源码 SHA、包名、签名、APK SHA,再 adb install -r 到 FZG。
|
||||
|
||||
验收应分别运行 STEP-102 `T1_FREE_SYMBOL` 与 `T2_TWO_FREE`(明确传 `--es step102_scenario <SCENARIO>`),在 tick8 和 tick130 读取 `STEP102_STYLE_LAYER_LAYOUT` / `STEP102_SAMPLE` / `STEP102_WINDOW_MARKER`。对 T2 需要 R0 和 R1 同时 placementCapable=false、gate=true、actualExecution=composite;各自 buildDelta=0、invalidationDelta=0、reuseDelta>0;C2 live 且保持 Z-order。T1 的 R1 为 Symbol,应继续按现有安全 gate fallback;检查样本和崩溃日志。之后最小回归 STEP-099 T4、STEP-101 Native reset、QBIN V4 Golden,失败须保留现场。
|
||||
|
||||
## 7. Gate
|
||||
|
||||
**SOURCE_FIXED / STATIC_PASS / BUILD_PENDING / DEVICE_PENDING**。
|
||||
|
||||
任何未编译、未安装新版修正 APK 的设备日志不能被用来宣称 STEP-106 PASS。待 RDC 收到用户手工编译成功的制品后,才进入下一阶段设备验收和最终关闭。
|
||||
100
docs/报告/STEP-106_STEP102_T2_编译与FZG实机回归_RDC完成报告_v1.md
Normal file
100
docs/报告/STEP-106_STEP102_T2_编译与FZG实机回归_RDC完成报告_v1.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# STEP-106 STEP-102 T2 Placement 边界修正 — Mac 编译与 FZG 实机回归完成报告 v1
|
||||
|
||||
## 一、结论
|
||||
|
||||
**STEP-106 CLOSED/PASS(仅 FZG1-2 Android x86_64/OpenGL Test App 的 T2 问题及定向回归)。**
|
||||
|
||||
源码保留 RenderSegment Placement 安全规则,仅修复 STEP-102 Test App 的分段计划,将默认附加的 Annotation Symbol 从 R1 Retained 中隔离到末尾 Continuous C2。更新版经 Mac Gradle 打包、FZG 设备安装、两项 STEP-102 场景及 STEP-099/STEP-101/QBIN 回归,验收符合各自目标。
|
||||
|
||||
## 二、源码、构建、APK
|
||||
|
||||
- 工作区:/Users/tei/dev/MapLibreParticleLab-upgrade-android-1361
|
||||
- 分支:upgrade/android-native-13.6.1-20261009
|
||||
- 构建输入 HEAD:23f7b8a4d7b33d3fb63cd8691fc3a2f070936d03;构建时 git_dirty=false。
|
||||
- 上游 Integration main 已经在本轮开始前同步到 80667d6c343411d03a760425438e3d292f452118。
|
||||
- 构建:Mac,JDK 17,Android SDK/NDK,x86_64 OpenGL Debug,tools/particle_android_validation/build_validation_apk.sh(Gradle --console=plain);成功退出,BUILD SUCCESS,Kotlin/Java/Native 包装检查通过。
|
||||
- APK:artifacts/maplibre-particle/step106-t2-fix/MapLibreAndroidTestApp-validation-opengl-debug-x86_64.apk;66,505,495 bytes;lib/x86_64/libmaplibre.so=39,970,088 bytes。
|
||||
- APK SHA-256:0ef3b033cd33139db07258745e9cd9d023170ce69767e3f8a5159821776ec9ef。
|
||||
- 其它 ABI 带入的仅是 Validation 脚本明示允许的 Sentry 库;MapLibre Native 和测试 Custom Layer 是 x86_64。APK ZIP 检查、脚本 ABI/体积检查 PASS。
|
||||
- 打包日志与 source lock:artifacts/maplibre-particle/step106-t2-fix/build.log、build-info.txt。
|
||||
|
||||
## 三、FZG 安装
|
||||
|
||||
- 设备:FZG1-2 / Android 13 / ADB 192.168.200.139:5555 / x86_64。
|
||||
- 包名:org.maplibre.android.testapp;versionName=13.6.1,versionCode=14。
|
||||
- 新旧证书 SHA-256 一致:e3f8fae6451ed6322259d090dd8e8788df554ab25ed89a01c78014f1d5ef8236。
|
||||
- 2026-10-09 13:08:17 JST,adb install -r 返回 Success,保留 App 数据。
|
||||
- 完成后设备内 base.apk SHA-256 与 Mac 完全一致;最后恢复默认页面时再次独立回读核实。
|
||||
|
||||
## 四、STEP-102 T1/T2 两窗口验收
|
||||
|
||||
窗口均从 STEP102_WINDOW_MARKER baseline tick8 测至 final tick130,期间持续 ADB Logcat 收集。
|
||||
|
||||
修正后的实际 Style/Segment 层级日志(两组均在 FZG 真实记录):
|
||||
|
||||
- 层 0:step102-background(background)
|
||||
- 层 1:step102-static-fill(fill)
|
||||
- 层 2:step102-particle(raster-particle)
|
||||
- 层 3:step102-upper(T1 为 symbol,T2 为 fill)
|
||||
- 层 4:org.maplibre.annotations.points(MapLibre 内部 symbol)
|
||||
|
||||
四段为 R0 RETAINED[0,2)、C0 CONTINUOUS[2,3)、R1 RETAINED[3,4)、C2 CONTINUOUS[4,5)。
|
||||
|
||||
### T1_FREE_SYMBOL — PASS
|
||||
|
||||
- R0:placementCapable=false、gate=true、actual=composite,build 1→1、reuse 180→3862(**+3682**)、invalidation 2→2。
|
||||
- R1:placementCapable=true、gate=false、actual=live,fallback=static-placement,reuse0。这一安全退回是正确行为。
|
||||
- C2:MapLibre 内部 Annotation Symbol 持续 Live。
|
||||
- Crash Buffer=0,Style Plan 接受。
|
||||
|
||||
### T2_TWO_FREE — PASS,原阻塞解除
|
||||
|
||||
- R0:placementCapable=false、gate=true、actual=composite,build 1→1,reuse 195→3878(**+3683**)、invalidation 7→7。
|
||||
- R1:placementCapable=false、gate=true、actual=composite,build 1→1,reuse 195→3878(**+3683**)、invalidation 7→7。
|
||||
- C2:内部 Annotation Symbol 继续 Live,不破坏 Placement 安全。
|
||||
- Crash Buffer=0,Style Plan 接受。
|
||||
|
||||
原失败表现(R1 placementCapable=true/fallback=static-placement)不再存在。之前对旧 13.4.1-particle.21 的同设备对照证明原 fixture 也有相同问题,不属于 13.6.1 新增回归。
|
||||
|
||||
## 五、定向回归
|
||||
|
||||
| 回归 | 实际设备证据 | 结论 |
|
||||
|---|---|---|
|
||||
| STEP-099 T4 R-C-R | 动态 GeoJSON 更新 69 次;tick8/130 R0 build 1→1,reuse 193→3868(+3675),invalidation 13→13;crash0 | PASS |
|
||||
| STEP-101 T1 | request1、destroy enter/return1、nativeReset enter/complete1、新 Renderer ready2、DONE1;crash0 | PASS |
|
||||
| STEP-101 T2 | request20、destroy enter/return20、nativeReset enter/complete20、Renderer reset enter/complete40、newReady21、DONE1;crash0 | PASS |
|
||||
| QBIN V4 Golden | clear/color/particle/time=ACCEPTED;T0/T1 均 ACCEPTED_INSERTED,Runtime V4 READY,UI 显示 V4 GOLDEN | PASS(最小烟测) |
|
||||
| 默认画面恢复 | GLOBAL/ACTIVE/EAST/MIX0%/256,Test App 前台,13.6.1,设备 APK SHA一致,crash0 | PASS |
|
||||
|
||||
特别说明:STEP-101 T2 从场景启动前至终态使用 Mac 持续流式 Logcat,避免 Android 环形 Logcat 溢出造成的假性少计数。
|
||||
|
||||
## 六、原始证据位置
|
||||
|
||||
所有文件保存在 Mac Git 忽略目录:
|
||||
|
||||
artifacts/maplibre-particle/step106-t2-fix/
|
||||
|
||||
- build.log 与 build-info.txt
|
||||
- runtime-T1/stream.log、crash.log
|
||||
- runtime-T2/stream.log、crash.log
|
||||
- runtime-STEP099-T4/stream.log、crash.log
|
||||
- runtime-STEP101-T1/stream.log、crash.log
|
||||
- runtime-STEP101-T2/stream.log、crash.log
|
||||
- runtime-V4-smoke/load.log、v4.xml
|
||||
- runtime-restored/window.xml、frame.png、crash.log
|
||||
|
||||
未将大型原始 Logcat、截图或 APK 纳入 Git。
|
||||
|
||||
## 七、保留边界
|
||||
|
||||
本次完成的是升级候选 **Android x86_64/OpenGL Test App** 上的明确阻塞与相关回归。STEP-102 改成 R-C-R-C 的测试布局引入第二 Continuous 区段,不能用它宣称生产环境单 Continuous Particle fast-path 的性能通过。没有修改 Shared Core 的 Renderer/Placement API、NavSea Host 或 iOS。
|
||||
|
||||
Android ARM64、RN 11.5.0 接入、iOS Metal、Vulkan、AAR 发行与全链用户验收均仍需独立完成。QBIN V4 本轮仅复测 T0/T1 Golden 插入,不声称六个时间控制动作再次全部验证;上轮 STEP-105 的六项回归保持独立历史事实。
|
||||
|
||||
本轮没有运行 Jest,没有使用 Codex 模型;编译/安装按用户此轮显式授权由 RDC 在 Mac 执行。
|
||||
|
||||
## 八、阶段判定和 Git
|
||||
|
||||
**STEP-106 / Test App 修正闭环:CLOSED / PASS。**
|
||||
|
||||
代码修正提交 86906c8a6af474a8d064c6f6d7d431e2a7e3efe6,之前根因记录提交 23f7b8a4d7b33d3fb63cd8691fc3a2f070936d03。本轮追加 recoder_step.md 与中文阶段记录,报告提交/远端 Push 以实际 Git 结果为准。正式 particle/main 不修改。
|
||||
50
docs/报告/STEP-107_iOS_StyleCoreOnlyPeer集合修复_RDC实施报告_v1.md
Normal file
50
docs/报告/STEP-107_iOS_StyleCoreOnlyPeer集合修复_RDC实施报告_v1.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# STEP-107 iOS Style CoreOnly Peer 集合修复 — RDC 实施报告 v1
|
||||
|
||||
## 1. 执行结论
|
||||
|
||||
**PARTIAL(代码已实施,iOS Native 构建 PASS,XCTest 与 iPad 事故场景 NOT RUN)**。
|
||||
|
||||
2026-10-09,直接在 Mac `/Users/tei/dev/MapLibreParticleLab` 的 `particle/main` 执行;没有创建 worktree、没有运行 Codex;未触碰 NavSea / Android / Shared Core / 任何正式发行 Tag。实际仍未获知崩溃现场的具体 nil Layer id/type。
|
||||
|
||||
## 2. Git 基线与修改范围
|
||||
|
||||
- 开工 HEAD:`24105b1be7a2c8bd3a547117a30887fbaa0a308b`,对应远端 `particle/main`。
|
||||
- 修改:`platform/darwin/src/MLNStyle.mm` 与 `platform/darwin/test/MLNStyleTests.mm`。
|
||||
- 新增:本报告、`docs/50_Step记录/STEP-107_iOS_StyleCoreOnlyPeer集合修复_v1.md`,追加 `粒子开发记录.md`。
|
||||
- 与本任务无关的 `vendor/expected-lite` 子模块状态及原有两份未跟踪文档均保留。
|
||||
- 未运行 Codex,因此 Codex 模型/推理档位及 Codex 完成事件不适用。
|
||||
- 提交/PUSH 与远端校验以本报告后续 Git 核验补录为准。
|
||||
|
||||
## 3. 根因与实现
|
||||
|
||||
在 `MLNStyle.mm`,原 `layers` getter 对 `layerFromMBGLLayer:` 的 nil 返回直接调用 `addObject:`,遇到 CoreOnly Layer 则触发 Objective-C `NSInvalidArgumentException`。ParticleValidation、RasterParticle、WeatherColor 在 Darwin `MLNStyleLayerManager.mm` 仅注册 Core Factory,不具备 ObjC Peer。
|
||||
|
||||
修复后的 ObjC `layers` 只暴露有 Peer 的普通层,保留 C++ Style 内全部 CoreOnly Layer;缺失 Peer 时记录 DEBUG ID/type。KVC `countOfLayers`、单索引、range getter、插入/删除索引,以及 `aboveLayer:` 均按同一 ObjC 可见顺序处理。保持原始 C++ Style 与实际渲染的 Layer 存在及次序,不借由移除 Particle/Weather 来绕过问题。
|
||||
|
||||
新增 XCTest 用例通过 source-less `ParticleValidationLayer` 模拟夹在两个普通 Circle Layer 中间、以及位于顶部的 CoreOnly 层,验证 getter、KVC、区间读取、层标识、above/atIndex 插入和删除后 Native 层仍在。此 XCTest 尚未执行。
|
||||
|
||||
## 4. 验证记录
|
||||
|
||||
- `git diff --check`:PASS。
|
||||
- Mac Xcode 26.3 / Bazel 8.6.0:
|
||||
`bazel build //platform/ios:MapLibre.dynamic --color=no --curses=no --show_progress_rate_limit=15`:**PASS**,exit 0,耗时 982.084 秒,691 actions。
|
||||
- 构建日志:`/tmp/maplibre_v22_ios_style_fix_bazel_20261009.log`。
|
||||
- 新 XCFramework ZIP:`bazel-bin/platform/ios/MapLibre.dynamic.xcframework.zip`,SHA-256 `f16b7f2be761a101bb4b906b900175b95412abfeef09d715e2c9321b300a7b8a`;`unzip -tqq` PASS。
|
||||
- 编译警告:链接器提示 `/opt/homebrew/lib` 不存在,但整个 Build PASS。
|
||||
- `MLNStyleTests.mm` XCTest:**NOT RUN**,Bazel XCFramework 目标不包含测试文件。
|
||||
- iOS Test Host / iPad / 唐津原始点击 / 双 Source Z-order / 天气粒子组合:**NOT RUN**。
|
||||
- Android、Gradle、ADB、Jest、NavSea、正式 Release/Tag/Source Lock:**NOT RUN**。
|
||||
|
||||
## 5. 阻塞与验收边界
|
||||
|
||||
Native 编译 PASS 不代表原始崩溃完全修复。需运行 XCTest 并用包含本次改动的新 Native 二进制真机重放:普通对象、唐津港湾直接点击、两个以上可点击 Source、十字光标、天气粒子 Layer 开关和 Style 变更。需核实 DEBUG 输出实际无 Peer Layer 的 id/type,不应将 CoreOnly 推断当作唯一已证实源。
|
||||
|
||||
原 V22 正式 Tag 和分发 ZIP 未修改,当前构建仅作为本地未发行验证制品。任何正式版本迭代需新 Tag / Source Lock / SHA-256 / 远端校验,按 GSRL 执行。
|
||||
|
||||
## 6. Git 实际交付补录
|
||||
|
||||
- Scoped commit:`016bf5ad93e0fdd625034b29fedd150ea6af3943`,提交信息 `fix(ios): guard Darwin style CoreOnly layer peer access`。
|
||||
- `git push origin HEAD:refs/heads/particle/main`:PASS(fast-forward,无 force)。
|
||||
- `git ls-remote origin refs/heads/particle/main`:`016bf5ad93e0fdd625034b29fedd150ea6af3943`,和本地 HEAD 完全相同。
|
||||
- 只提交五个本次任务文件;原有 dirty 子模块及用户的两份未跟踪文档保持不变。
|
||||
- 修复状态继续为 **PARTIAL**:实际真机点击、XCTest 尚未通过,不能关闭 STEP-107 或进行新版本 GSRL 发行。
|
||||
@@ -1,13 +1,13 @@
|
||||
#include "expression_test_logger.hpp"
|
||||
#include "expression_test_runner.hpp"
|
||||
|
||||
#include <mbgl/util/io.hpp>
|
||||
#include <mbgl/util/string.hpp>
|
||||
#include <mln/util/io.hpp>
|
||||
#include <mln/util/string.hpp>
|
||||
|
||||
#include <sstream>
|
||||
#include <filesystem>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
#undef GetObject
|
||||
#endif
|
||||
|
||||
#include <mbgl/util/io.hpp>
|
||||
#include <mbgl/util/logging.hpp>
|
||||
#include <mbgl/util/variant.hpp>
|
||||
#include <mbgl/style/conversion/function.hpp>
|
||||
#include <mbgl/style/rapidjson_conversion.hpp>
|
||||
#include <mbgl/style/expression/parsing_context.hpp>
|
||||
#include <mln/util/io.hpp>
|
||||
#include <mln/util/logging.hpp>
|
||||
#include <mln/util/variant.hpp>
|
||||
#include <mln/style/conversion/function.hpp>
|
||||
#include <mln/style/rapidjson_conversion.hpp>
|
||||
#include <mln/style/expression/parsing_context.hpp>
|
||||
|
||||
#include <mapbox/geojson/rapidjson.hpp>
|
||||
#include <rapidjson/writer.h>
|
||||
@@ -20,9 +20,9 @@
|
||||
|
||||
#include <regex>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mbgl::style;
|
||||
using namespace mbgl::style::conversion;
|
||||
using namespace mln;
|
||||
using namespace mln::style;
|
||||
using namespace mln::style::conversion;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace {
|
||||
@@ -407,7 +407,7 @@ std::optional<TestData> parseTestData(const std::filesystem::path& path) {
|
||||
TestData data;
|
||||
auto maybeJson = readJson(path.string());
|
||||
if (!maybeJson.is<JSDocument>()) { // NOLINT
|
||||
mbgl::Log::Error(mbgl::Event::General, "Cannot parse test '" + path.string() + "'.");
|
||||
mln::Log::Error(mln::Event::General, "Cannot parse test '" + path.string() + "'.");
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/style/expression/expression.hpp>
|
||||
#include <mbgl/util/feature.hpp>
|
||||
#include <mbgl/util/rapidjson.hpp>
|
||||
#include <mln/style/expression/expression.hpp>
|
||||
#include <mln/util/feature.hpp>
|
||||
#include <mln/util/rapidjson.hpp>
|
||||
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <filesystem>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
struct Input {
|
||||
Input(std::optional<float> zoom_,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "expression_test_parser.hpp"
|
||||
#include "test_runner_common.hpp"
|
||||
|
||||
#include <mbgl/util/io.hpp>
|
||||
#include <mln/util/io.hpp>
|
||||
|
||||
#include <rapidjson/writer.h>
|
||||
#include <rapidjson/prettywriter.h>
|
||||
@@ -105,7 +105,7 @@ TestRunOutput runExpressionTest(TestData& data, const std::string& rootPath, con
|
||||
std::vector<Value> outputs;
|
||||
if (!data.inputs.empty()) {
|
||||
for (const auto& input : data.inputs) {
|
||||
mbgl::style::expression::EvaluationResult evaluationResult;
|
||||
mln::style::expression::EvaluationResult evaluationResult;
|
||||
if (input.canonical) {
|
||||
evaluationResult = expression->evaluate(
|
||||
input.zoom, input.feature, input.heatmapDensity, input.availableImages, *input.canonical);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "expression_test_runner.hpp"
|
||||
#include "expression_test_logger.hpp"
|
||||
|
||||
#include <mbgl/util/logging.hpp>
|
||||
#include <mln/util/logging.hpp>
|
||||
|
||||
#include <random>
|
||||
#include <iostream>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <cmath>
|
||||
#include <regex>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
// Strip precision for numbers, so that we can compare evaluated results with
|
||||
// fixtures. Copied from JS expression harness.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/util/feature.hpp>
|
||||
#include <mln/util/feature.hpp>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
using namespace mbgl;
|
||||
using namespace mln;
|
||||
|
||||
Value stripPrecision(const Value& value);
|
||||
std::vector<std::string> tokenize(std::string str);
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/gfx/renderable.hpp>
|
||||
#include <mbgl/mtl/mtl_fwd.hpp>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mtl {
|
||||
|
||||
class RendererBackend;
|
||||
|
||||
class RenderableResource : public gfx::RenderableResource {
|
||||
protected:
|
||||
explicit RenderableResource() = default;
|
||||
|
||||
public:
|
||||
virtual void swap() {
|
||||
// Renderable resources that require a swap function to be called
|
||||
// explicitly can override this method.
|
||||
}
|
||||
|
||||
virtual const mbgl::mtl::RendererBackend& getBackend() const = 0;
|
||||
virtual const mbgl::mtl::MTLCommandBufferPtr& getCommandBuffer() const = 0;
|
||||
virtual mbgl::mtl::MTLBlitPassDescriptorPtr getUploadPassDescriptor() const = 0;
|
||||
virtual const mbgl::mtl::MTLRenderPassDescriptorPtr& getRenderPassDescriptor() const = 0;
|
||||
};
|
||||
|
||||
} // namespace mtl
|
||||
} // namespace mbgl
|
||||
@@ -1,69 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/gfx/renderer_backend.hpp>
|
||||
#include <mbgl/mtl/mtl_fwd.hpp>
|
||||
#include <mbgl/util/image.hpp>
|
||||
#include <mbgl/util/size.hpp>
|
||||
#include <mbgl/util/util.hpp>
|
||||
|
||||
#include <Foundation/NSSharedPtr.hpp>
|
||||
#include <Metal/MTLDevice.hpp>
|
||||
#include <Metal/MTLCommandQueue.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
class ProgramParameters;
|
||||
|
||||
namespace mtl {
|
||||
|
||||
using ProcAddress = void (*)();
|
||||
using FramebufferID = uint32_t;
|
||||
|
||||
class RendererBackend : public gfx::RendererBackend {
|
||||
public:
|
||||
RendererBackend(gfx::ContextMode);
|
||||
~RendererBackend() override;
|
||||
|
||||
/// Called prior to rendering to update the internally assumed MetalMetal state.
|
||||
virtual void updateAssumedState() = 0;
|
||||
|
||||
/// One-time shader initialization
|
||||
void initShaders(gfx::ShaderRegistry&, const ProgramParameters& programParameters) override;
|
||||
|
||||
const MTLDevicePtr& getDevice() const { return device; }
|
||||
const MTLCommandQueuePtr& getCommandQueue() const { return commandQueue; }
|
||||
bool isBaseVertexInstanceDrawingSupported() const { return baseVertexInstanceDrawingSupported; }
|
||||
|
||||
protected:
|
||||
std::unique_ptr<gfx::Context> createContext() override;
|
||||
|
||||
/// Reads the color pixel data from the currently bound framebuffer.
|
||||
PremultipliedImage readFramebuffer(const Size&);
|
||||
|
||||
/// A constant to signal that a framebuffer is bound, but with an unknown ID.
|
||||
static constexpr const FramebufferID ImplicitFramebufferBinding = std::numeric_limits<FramebufferID>::max();
|
||||
|
||||
/// Tells the renderer that the Metal state has already been set by the windowing toolkit.
|
||||
/// It sets the internal assumed state to the supplied values.
|
||||
void assumeFramebufferBinding(FramebufferID fbo);
|
||||
void assumeViewport(int32_t x, int32_t y, const Size&);
|
||||
void assumeScissorTest(bool);
|
||||
|
||||
/// Returns true when assumed framebuffer binding hasn't changed from the implicit binding.
|
||||
bool implicitFramebufferBound();
|
||||
|
||||
public:
|
||||
/// Triggers a Metal state update if the internal assumed state doesn't
|
||||
/// match the supplied values.
|
||||
void setFramebufferBinding(FramebufferID fbo);
|
||||
void setViewport(int32_t x, int32_t y, const Size&);
|
||||
void setScissorTest(bool);
|
||||
|
||||
protected:
|
||||
MTLDevicePtr device;
|
||||
MTLCommandQueuePtr commandQueue;
|
||||
bool baseVertexInstanceDrawingSupported = false;
|
||||
};
|
||||
|
||||
} // namespace mtl
|
||||
} // namespace mbgl
|
||||
@@ -1,43 +0,0 @@
|
||||
// Generated code, do not modify this file!
|
||||
#pragma once
|
||||
#include <mbgl/shaders/shader_source.hpp>
|
||||
|
||||
#if MLN_RENDER_BACKEND_OPENGL
|
||||
#include <mbgl/shaders/gl/prelude.hpp>
|
||||
#include <mbgl/shaders/gl/clipping_mask.hpp>
|
||||
#include <mbgl/shaders/gl/background.hpp>
|
||||
#include <mbgl/shaders/gl/background_pattern.hpp>
|
||||
#include <mbgl/shaders/gl/circle.hpp>
|
||||
#include <mbgl/shaders/gl/collision_box.hpp>
|
||||
#include <mbgl/shaders/gl/collision_circle.hpp>
|
||||
#include <mbgl/shaders/gl/custom_geometry.hpp>
|
||||
#include <mbgl/shaders/gl/custom_symbol_icon.hpp>
|
||||
#include <mbgl/shaders/gl/debug.hpp>
|
||||
#include <mbgl/shaders/gl/fill.hpp>
|
||||
#include <mbgl/shaders/gl/fill_outline.hpp>
|
||||
#include <mbgl/shaders/gl/fill_pattern.hpp>
|
||||
#include <mbgl/shaders/gl/fill_outline_pattern.hpp>
|
||||
#include <mbgl/shaders/gl/fill_outline_triangulated.hpp>
|
||||
#include <mbgl/shaders/gl/fill_extrusion.hpp>
|
||||
#include <mbgl/shaders/gl/fill_extrusion_instanced.hpp>
|
||||
#include <mbgl/shaders/gl/fill_extrusion_pattern.hpp>
|
||||
#include <mbgl/shaders/gl/fill_extrusion_pattern_instanced.hpp>
|
||||
#include <mbgl/shaders/gl/heatmap.hpp>
|
||||
#include <mbgl/shaders/gl/heatmap_texture.hpp>
|
||||
#include <mbgl/shaders/gl/particle_gpu_validation.hpp>
|
||||
#include <mbgl/shaders/gl/retained_underlay_composite.hpp>
|
||||
#include <mbgl/shaders/gl/hillshade_prepare.hpp>
|
||||
#include <mbgl/shaders/gl/color_relief.hpp>
|
||||
#include <mbgl/shaders/gl/hillshade.hpp>
|
||||
#include <mbgl/shaders/gl/line.hpp>
|
||||
#include <mbgl/shaders/gl/line_gradient.hpp>
|
||||
#include <mbgl/shaders/gl/line_pattern.hpp>
|
||||
#include <mbgl/shaders/gl/location_indicator.hpp>
|
||||
#include <mbgl/shaders/gl/location_indicator_textured.hpp>
|
||||
#include <mbgl/shaders/gl/line_sdf.hpp>
|
||||
#include <mbgl/shaders/gl/raster.hpp>
|
||||
#include <mbgl/shaders/gl/symbol_icon.hpp>
|
||||
#include <mbgl/shaders/gl/symbol_sdf.hpp>
|
||||
#include <mbgl/shaders/gl/symbol_text_and_icon.hpp>
|
||||
#include <mbgl/shaders/gl/wide_vector.hpp>
|
||||
#endif
|
||||
@@ -1,30 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/style/layers/custom_layer_render_parameters.hpp>
|
||||
#include <mbgl/mtl/mtl_fwd.hpp>
|
||||
|
||||
#include <Foundation/Foundation.hpp>
|
||||
#include <Metal/Metal.hpp>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
class PaintParameters;
|
||||
|
||||
namespace style {
|
||||
|
||||
namespace mtl {
|
||||
|
||||
/**
|
||||
* Metal subclass of CustomLayerRenderParameters
|
||||
*/
|
||||
struct CustomLayerRenderParameters : mbgl::style::CustomLayerRenderParameters {
|
||||
mbgl::mtl::MTLRenderCommandEncoderPtr encoder;
|
||||
|
||||
CustomLayerRenderParameters(const PaintParameters&);
|
||||
};
|
||||
|
||||
} // namespace mtl
|
||||
} // namespace style
|
||||
} // namespace mbgl
|
||||
@@ -1,18 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/actor/aspiring_actor.hpp>
|
||||
#include <mbgl/actor/established_actor.hpp>
|
||||
#include <mbgl/actor/mailbox.hpp>
|
||||
#include <mbgl/actor/message.hpp>
|
||||
#include <mbgl/actor/actor_ref.hpp>
|
||||
#include <mbgl/util/noncopyable.hpp>
|
||||
#include <mln/actor/aspiring_actor.hpp>
|
||||
#include <mln/actor/established_actor.hpp>
|
||||
#include <mln/actor/mailbox.hpp>
|
||||
#include <mln/actor/message.hpp>
|
||||
#include <mln/actor/actor_ref.hpp>
|
||||
#include <mln/util/noncopyable.hpp>
|
||||
|
||||
#include <memory>
|
||||
#include <future>
|
||||
#include <type_traits>
|
||||
#include <cassert>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
class TaggedScheduler;
|
||||
|
||||
@@ -83,4 +83,4 @@ private:
|
||||
EstablishedActor<Object> target;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,11 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/actor/mailbox.hpp>
|
||||
#include <mbgl/actor/message.hpp>
|
||||
#include <mln/actor/mailbox.hpp>
|
||||
#include <mln/actor/message.hpp>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
/**
|
||||
An `ActorRef<O>` is a *non*-owning, weak reference to an actor of type `O`.
|
||||
@@ -57,4 +57,4 @@ private:
|
||||
std::weak_ptr<Mailbox> weakMailbox;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,15 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/actor/mailbox.hpp>
|
||||
#include <mbgl/actor/message.hpp>
|
||||
#include <mbgl/actor/actor_ref.hpp>
|
||||
#include <mln/actor/mailbox.hpp>
|
||||
#include <mln/actor/message.hpp>
|
||||
#include <mln/actor/actor_ref.hpp>
|
||||
|
||||
#include <memory>
|
||||
#include <future>
|
||||
#include <type_traits>
|
||||
#include <cassert>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
template <class Object>
|
||||
class EstablishedActor;
|
||||
@@ -56,4 +56,4 @@ private:
|
||||
friend class Actor<Object>;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,17 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/actor/aspiring_actor.hpp>
|
||||
#include <mbgl/actor/mailbox.hpp>
|
||||
#include <mbgl/actor/message.hpp>
|
||||
#include <mbgl/actor/actor_ref.hpp>
|
||||
#include <mbgl/actor/optional_actor_ref.hpp>
|
||||
#include <mln/actor/aspiring_actor.hpp>
|
||||
#include <mln/actor/mailbox.hpp>
|
||||
#include <mln/actor/message.hpp>
|
||||
#include <mln/actor/actor_ref.hpp>
|
||||
#include <mln/actor/optional_actor_ref.hpp>
|
||||
|
||||
#include <memory>
|
||||
#include <future>
|
||||
#include <type_traits>
|
||||
#include <cassert>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
/**
|
||||
An `EstablishedActor<O>` is one half of the pair of types that comprise an
|
||||
@@ -107,4 +107,4 @@ private:
|
||||
AspiringActor<Object>& parent;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -7,9 +7,9 @@
|
||||
#include <queue>
|
||||
|
||||
#include <mapbox/std/weak.hpp>
|
||||
#include <mbgl/actor/scheduler.hpp>
|
||||
#include <mln/actor/scheduler.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
class Scheduler;
|
||||
class Message;
|
||||
@@ -61,4 +61,4 @@ private:
|
||||
std::queue<std::unique_ptr<Message>> queue;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <future>
|
||||
#include <utility>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
// A movable type-erasing function wrapper. This allows to store arbitrary
|
||||
// invocable things (like std::function<>, or the result of a movable-only
|
||||
@@ -100,4 +100,4 @@ std::unique_ptr<Message> makeMessage(std::promise<ResultType>&& promise,
|
||||
}
|
||||
|
||||
} // namespace actor
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/actor/actor.hpp>
|
||||
#include <mbgl/actor/optional_actor_ref.hpp>
|
||||
#include <mln/actor/actor.hpp>
|
||||
#include <mln/actor/optional_actor_ref.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
class TaggedScheduler;
|
||||
|
||||
@@ -79,4 +79,4 @@ private:
|
||||
OptionalActorRef<Object> selfRef;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/actor/actor_ref.hpp>
|
||||
#include <mln/actor/actor_ref.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
class TaggedScheduler;
|
||||
|
||||
@@ -37,4 +37,4 @@ private:
|
||||
std::optional<ActorRef<Object>> actorRef;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/util/identity.hpp>
|
||||
#include <mln/util/identity.hpp>
|
||||
|
||||
#include <mapbox/std/weak.hpp>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
class Mailbox;
|
||||
|
||||
@@ -147,10 +147,10 @@ public:
|
||||
scheduler->scheduleAndReplyValue(tag, task, reply);
|
||||
}
|
||||
|
||||
const mbgl::util::SimpleIdentity tag;
|
||||
const mln::util::SimpleIdentity tag;
|
||||
|
||||
private:
|
||||
std::shared_ptr<Scheduler> scheduler;
|
||||
};
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
@@ -1,15 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/util/geometry.hpp>
|
||||
#include <mbgl/util/variant.hpp>
|
||||
#include <mbgl/util/color.hpp>
|
||||
#include <mbgl/style/property_value.hpp>
|
||||
#include <mln/util/geometry.hpp>
|
||||
#include <mln/util/variant.hpp>
|
||||
#include <mln/util/color.hpp>
|
||||
#include <mln/style/property_value.hpp>
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
namespace mbgl {
|
||||
namespace mln {
|
||||
|
||||
using AnnotationID = uint64_t;
|
||||
using AnnotationIDs = std::vector<AnnotationID>;
|
||||
@@ -63,4 +63,4 @@ public:
|
||||
|
||||
using Annotation = variant<SymbolAnnotation, LineAnnotation, FillAnnotation>;
|
||||
|
||||
} // namespace mbgl
|
||||
} // namespace mln
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user