Skip to content

Commit 0fe70d9

Browse files
authored
Merge pull request #3173 from madeline-underwood/mob
Mobile metadescriptions + enhancements using copilot file
2 parents bb71a7e + c679298 commit 0fe70d9

46 files changed

Lines changed: 87 additions & 44 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

content/learning-paths/mobile-graphics-and-gaming/afrc/_index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ title: Learn about Arm Fixed Rate Compression (AFRC)
33

44
minutes_to_complete: 25
55

6+
description: Learn how to enable and verify Arm Fixed Rate Compression in Vulkan applications on Android devices to reduce memory footprint and bandwidth.
7+
68
who_is_this_for: Software developers of Android applications and mobile games who are interested in learning how to enable Arm Fixed Rate Compression (AFRC) to improve performance.
79

810
learning_objectives:

content/learning-paths/mobile-graphics-and-gaming/afrc/p1-intro.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ For example, the Sponza scene shown below, on a Google Pixel 8 shows the differe
2020
 
2121
| Memory footprint (lower is better) | Memory bandwidth (lower is better) |
2222
| ----------- | ----------- |
23-
| ![Footprint](images/sponza_footprint.png) | ![Bandwidth](images/sponza_bandwidth.png) |
23+
| ![Bar chart comparing memory footprint of uncompressed images versus AFBC and AFRC compression on Google Pixel 8, showing AFRC achieves the lowest memory footprint at approximately 48 MB compared to uncompressed at 144 MB#center](images/sponza_footprint.png "Memory footprint comparison") | ![Bar chart comparing memory bandwidth of uncompressed images versus AFBC and AFRC compression on Google Pixel 8, showing AFRC achieves the lowest bandwidth at approximately 1200 MB per second#center](images/sponza_bandwidth.png "Memory bandwidth comparison") |
2424

2525
Fixed-rate compression is lossy but, despite this, AFRC achieves high quality results even with the highest compression ratios, preserving detail in edges and high-frequency areas.
26-
So much so that, to the naked eye, the compressed and uncompressed images look the same side-by-side, so that it may be called 'visually lossless':
26+
So much so that, to the naked eye, the compressed and uncompressed images look the same side-by-side, so that it can be called 'visually lossless':
2727

2828
 
2929
| Uncompressed | AFRC 2BPC (bits per component) |
3030
| ----------- | ----------- |
31-
| ![Uncompressed](images/sponza_default.webp) | ![AFRC 2BPC](images/sponza_afrc.webp) |
31+
| ![Reference image of the Sponza scene rendered without compression, showing detailed textures and architectural elements#center](images/sponza_default.webp "Uncompressed Sponza scene") | ![Sponza scene rendered with AFRC at 2 bits per component compression, visually identical to the uncompressed version demonstrating visually lossless quality#center](images/sponza_afrc.webp "Sponza scene with AFRC 2BPC compression") |
3232

3333
More information can be found in [this blog on Arm® Immortalis™](https://developer.arm.com/community/arm-community-blogs/b/mobile-graphics-and-gaming-blog/posts/arm-immortalis-g715-developer-overview) and in [this Vulkan sample](https://github.com/KhronosGroup/Vulkan-Samples/blob/main/samples/performance/image_compression_control/README.adoc).
3434

content/learning-paths/mobile-graphics-and-gaming/afrc/p2-setup.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ layout: learningpathall
88

99
## How to run the code examples
1010

11-
This Learning Path assumes you are already familiar with the Vulkan API and have an application that uses it to create and render images on Android. If that is the case, you may skip this step.
11+
This Learning Path assumes you're already familiar with the Vulkan API and have an application that uses it to create and render images on Android. If that's the case, you can skip this step.
1212

13-
Otherwise, you may use a test application like those provided by the [Khronos Vulkan Samples repository](https://github.com/KhronosGroup/Vulkan-Samples).
13+
Otherwise, you can use a test application like those provided by the [Khronos Vulkan Samples repository](https://github.com/KhronosGroup/Vulkan-Samples).
1414

1515
{{% notice Note %}}
16-
You do not need to create a new Vulkan Sample to complete this Learning Path but you can familiarize yourself with the code examples and save them as a reference.
17-
The Vulkan Sample provided in the previous step allows you to experiment with AFRC without any coding required.
16+
You don't need to create a new Vulkan Sample to complete this Learning Path but you can familiarize yourself with the code examples and save them as a reference.
17+
The Vulkan Sample provided in further reading allows you to experiment with AFRC without any coding required.
1818
{{% /notice %}}
1919

2020
### Build Khronos' Vulkan Samples
@@ -27,16 +27,16 @@ cd vulkan-samples
2727
python ./scripts/generate.py android
2828
```
2929

30-
And follow the build instructions to run the example applications on an Android device.
30+
Follow the build instructions to run the example applications on an Android device.
3131

3232
{{% notice %}}
3333
You can use [Android Studio](https://github.com/KhronosGroup/Vulkan-Samples/blob/main/docs/build.adoc#build-with-android-studio) to build and run the samples (the build instructions explain how to do this).
3434
{{% /notice %}}
3535

3636
### Create a test sample
3737

38-
If you are coding an example, rather than following along with the existing [Image Compression Control](https://github.com/KhronosGroup/Vulkan-Samples/blob/main/samples/performance/image_compression_control/README.adoc) sample, we need to first create a test sample.
39-
We can use the default [API sample template](https://github.com/KhronosGroup/Vulkan-Samples/blob/main/scripts/README.adoc#generate-api-sample) to write and run the code snippets presented in this Learning Path.
38+
If you're coding an example, rather than following along with the existing [Image Compression Control](https://github.com/KhronosGroup/Vulkan-Samples/blob/main/samples/performance/image_compression_control/README.adoc) sample, you'll need to first create a test sample.
39+
You can use the default [API sample template](https://github.com/KhronosGroup/Vulkan-Samples/blob/main/scripts/README.adoc#generate-api-sample) to write and run the code snippets presented in this Learning Path.
4040

4141
To create a new sample:
4242

content/learning-paths/mobile-graphics-and-gaming/afrc/p3-enable-extensions.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ layout: learningpathall
88

99
## Vulkan Extensions
1010

11-
The Vulkan extension [VK_EXT_image_compression_control](https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_image_compression_control) may be used to verify if default compression (such as AFBC) was applied, and to request fixed-rate compression.
11+
The Vulkan extension [VK_EXT_image_compression_control](https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_image_compression_control) can be used to verify if default compression (such as AFBC) was applied, and to request fixed-rate compression.
1212

1313
Swapchain images are a special case, and additionally require the [VK_EXT_image_compression_control_swapchain](https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_image_compression_control_swapchain) extension.
1414

1515
### Enable VK_EXT_image_compression_control
1616

17-
In your application, you may use [vkEnumerateDeviceExtensionProperties](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkEnumerateDeviceExtensionProperties.html) to check if the device supports the extension, and, if so, include it in [VkDeviceCreateInfo](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceCreateInfo.html)'s `ppEnabledExtensionNames` before calling [vkCreateDevice](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCreateDevice.html).
17+
In your application, you can use [vkEnumerateDeviceExtensionProperties](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkEnumerateDeviceExtensionProperties.html) to check if the device supports the extension, and, if so, include it in [VkDeviceCreateInfo](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceCreateInfo.html)'s `ppEnabledExtensionNames` before calling [vkCreateDevice](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCreateDevice.html).
1818
In the Vulkan Samples framework, this can be handled in the sample's constructor with this helper function:
1919

2020
```C
@@ -24,7 +24,7 @@ afrc::afrc()
2424
}
2525
```
2626

27-
If a device supports the extension, it does not mean that it also supports fixed-rate compression of images.
28-
The extension may still be used to verify if the images use default (lossless) compression.
27+
If a device supports the extension, it doesn't mean that it also supports fixed-rate compression of images.
28+
The extension can still be used to verify if the images use default (lossless) compression.
2929

3030
Before compressing a `VkImage`, you need to use the extension to query if any given image, with its particular format and usage properties, supports fixed-rate compression, as shown in the next step.

content/learning-paths/mobile-graphics-and-gaming/afrc/p5-request-afrc.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ image_create_info.pNext = &compression_control;
1919
2020
Note that these are the same `VkImageCompressionControlEXT` and `VkImageCreateInfo` structures used in the previous step.
2121
22-
The image may then be created:
22+
You can then create the image:
2323
2424
```C
2525
VkImage image_handle;
@@ -28,9 +28,9 @@ vkCreateImage(get_device().get_handle(), &image_create_info, nullptr, &image_han
2828
```
2929

3030
This requests default fixed-rate compression (which depends on the device).
31-
On Arm GPUs, it is the highest supported bitrate that is the highest possible quality.
31+
On Arm GPUs, it's the highest supported bitrate that is the highest possible quality.
3232

33-
To request a specific bitrate (after confirming that it is supported, as shown in the previous step), you may instead use `VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT` like this:
33+
To request a specific bitrate (after confirming that it's supported, as shown in the previous step), you can instead use `VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT` like this:
3434

3535
```C
3636
VkImageCompressionFixedRateFlagsEXT fixed_rate_flags_array[1] = {VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT};

content/learning-paths/mobile-graphics-and-gaming/afrc/p6-verify-afrc.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ LOGI("Created image reports {}", compression_to_string(applied_compression_prope
3232
LOGI("Created image reports {}", fixed_rate_flags_to_string(applied_compression_properties.imageCompressionFixedRateFlags));
3333
```
3434

35-
The output may then look like this:
35+
The output might then look like this:
3636

3737
```output
3838
I/VulkanSamples: [info] Created image reports VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT

content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/_index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
---
22
title: Accelerate Denoising, Background Blur and Low-Light Camera Effects with SME2
33

4+
description: Learn how to build and optimize AI-powered camera pipeline applications on Arm Linux using KleidiAI, KleidiCV, and SME2 to accelerate denoising, background blur, and low-light effects.
5+
46
minutes_to_complete: 30
57

68
who_is_this_for: This introductory topic is for mobile and computer-vision developers, camera pipeline engineers, and performance-minded practitioners who want to optimize real-time camera effects on Arm using KleidiAI and KleidiCV.

content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/_index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
---
22
title: Analyze a frame with Frame Advisor
3+
description: Learn how to capture frame data from Android applications and analyze performance inefficiencies using Frame Advisor in Arm Performance Studio.
4+
35

46
minutes_to_complete: 10
57

content/learning-paths/mobile-graphics-and-gaming/android_halide/_index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
---
2-
title: Build high-performance image processing with Halide on Android
2+
title: Optimize image processing on Android using Halide
3+
description: Learn how to build real-time image processing pipelines using Halide on Android, combining operations for improved performance in Kotlin applications.
34

45
minutes_to_complete: 180
56

content/learning-paths/mobile-graphics-and-gaming/android_neon/_index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
---
2-
title: Get started with Neon Intrinsics on Android
2+
title: Accelerate Android applications with Neon intrinsics
3+
4+
description: Learn how to enable and implement Neon intrinsics in Android NDK applications to calculate vector operations and measure performance improvements.
35

46
draft: true
57
cascade:

0 commit comments

Comments
 (0)