Rendering statistics view (#3322)

Co-authored-by: Bart Louwers <bart@emeel.net>
This commit is contained in:
Adrian Cojocaru
2025-06-03 18:59:51 +03:00
committed by GitHub
parent 3c07cacc4d
commit 2a7249a3b0
81 changed files with 1271 additions and 128 deletions

View File

@@ -60,7 +60,7 @@ class RemoveUnusedImagesTest : AppCenter() {
mapView.addOnCanRemoveUnusedStyleImageListener {
callbackLatch.countDown()
maplibreMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 120.0), 8.0))
mapView.addOnDidFinishRenderingFrameListener{ _, _, _ ->
mapView.addOnDidFinishRenderingFrameListener{ _, _ ->
assertNotNull(maplibreMap.style!!.getImage("small"))
assertNotNull(maplibreMap.style!!.getImage("large"))
latch.countDown()
@@ -89,7 +89,7 @@ class RemoveUnusedImagesTest : AppCenter() {
maplibreMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 120.0), 8.0))
// Wait for the next frame and check that images were removed from the style.
mapView.addOnDidFinishRenderingFrameListener { _, _, _ ->
mapView.addOnDidFinishRenderingFrameListener { _, _ ->
if (maplibreMap.style!!.getImage("small") == null && maplibreMap.style!!.getImage("large") == null) {
latch.countDown()
}

View File

@@ -917,6 +917,19 @@ public class SymbolLayerTest extends BaseLayerTest {
assertEquals(layer.getTextOptional().getValue(), propertyValue);
}
@Test
@UiThreadTest
public void testSymbolScreenSpaceAsConstant() {
Timber.i("symbol-screen-space");
assertNotNull(layer);
assertNull(layer.getSymbolScreenSpace().getValue());
// Set and Get
Boolean propertyValue = true;
layer.setProperties(symbolScreenSpace(propertyValue));
assertEquals(layer.getSymbolScreenSpace().getValue(), propertyValue);
}
@Test
@UiThreadTest
public void testIconOpacityTransition() {

View File

@@ -27,6 +27,7 @@ import org.maplibre.android.log.Logger.INFO
import org.maplibre.android.maps.MapLibreMap
import org.maplibre.android.maps.MapLibreMap.CancelableCallback
import org.maplibre.android.maps.MapView
import org.maplibre.android.maps.RenderingStats
import org.maplibre.android.testapp.R
import org.maplibre.android.testapp.styles.TestStyles
import org.maplibre.android.testapp.utils.BenchmarkInputData
@@ -250,9 +251,9 @@ class BenchmarkActivity : AppCompatActivity() {
maplibreMap.setSwapBehaviorFlush(benchmarkRun.syncRendering)
val listener = MapView.OnDidFinishRenderingFrameListener { _: Boolean, frameEncodingTime: Double, frameRenderingTime: Double ->
encodingTimeStore.add(frameEncodingTime * 1e3)
renderingTimeStore.add(frameRenderingTime * 1e3)
val listener = MapView.OnDidFinishRenderingFrameWithStatsListener { _: Boolean, stats: RenderingStats ->
encodingTimeStore.add(stats.encodingTime * 1e3)
renderingTimeStore.add(stats.renderingTime * 1e3)
numFrames++;
}
mapView.addOnDidFinishRenderingFrameListener(listener)

View File

@@ -19,10 +19,10 @@ import kotlin.time.TimeSource
import kotlin.time.TimeSource.Monotonic
import org.maplibre.android.log.Logger
import org.maplibre.android.log.Logger.INFO
import org.maplibre.android.maps.RenderingStats
import org.maplibre.android.maps.MapLibreMap
// # --8<-- [start:ObserverActivity]
/**
* Test activity showcasing logging observer actions from the core
@@ -34,7 +34,8 @@ class ObserverActivity : AppCompatActivity(),
MapView.OnGlyphsLoadedListener,
MapView.OnGlyphsRequestedListener,
MapView.OnSpriteLoadedListener,
MapView.OnSpriteRequestedListener {
MapView.OnSpriteRequestedListener,
MapView.OnDidFinishRenderingFrameWithStatsListener {
// # --8<-- [end:ObserverActivity]
private lateinit var mapView: MapView
@@ -57,12 +58,14 @@ class ObserverActivity : AppCompatActivity(),
mapView.addOnGlyphsRequestedListener(this)
mapView.addOnSpriteLoadedListener(this)
mapView.addOnSpriteRequestedListener(this)
mapView.addOnDidFinishRenderingFrameListener(this)
// # --8<-- [end:addListeners]
mapView.getMapAsync {
it.setStyle(
Style.Builder().fromUri(TestStyles.DEMOTILES)
)
it.enableRenderingStatsView(true)
}
// print and clear action journal
@@ -131,6 +134,10 @@ class ObserverActivity : AppCompatActivity(),
TileOperation.NullOp -> Logger.e(TAG, "An unknown tile operation was emitted for tile ${tile}")
}
}
override fun onDidFinishRenderingFrame(fully: Boolean, stats: RenderingStats) {
}
// # --8<-- [end:mapEvents]
override fun onStart() {

View File

@@ -6,6 +6,7 @@ import org.maplibre.android.log.Logger
import org.maplibre.android.maps.MapView
import org.maplibre.android.maps.MapLibreMap
import org.maplibre.android.maps.OnMapReadyCallback
import org.maplibre.android.maps.RenderingStats
import org.maplibre.android.maps.Style
import org.maplibre.android.testapp.databinding.ActivitySnapshotBinding
import org.maplibre.android.testapp.styles.TestStyles

View File

@@ -59,7 +59,7 @@ class MapChangeActivity : AppCompatActivity() {
mapView.addOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener { Timber.v("OnDidFinishLoadingMap") })
mapView.addOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener { Timber.v("OnDidFinishLoadingStyle") })
mapView.addOnDidFinishRenderingFrameListener(
OnDidFinishRenderingFrameListener { fully: Boolean, frameEncodingTime: Double, frameRenderingTime: Double ->
OnDidFinishRenderingFrameListener { fully: Boolean, _: Double, _: Double ->
Timber.v(
"OnDidFinishRenderingFrame: fully: %s",
fully