# Di chuyển sang bản phát hành Qualcomm Linux 1.4 trở lên

Cân nhắc các bản cập nhật và điểm cải tiến chính sau đây để tìm hiểu cách di chuyển từ bản phát hành Qualcomm^®^ Linux^®^ 1.3 sang bản phát hành Qualcomm Linux 1.4 trở lên.

Bản phát hành Qualcomm Linux 1.4 trở lên có phiên bản hỗ trợ dài hạn mới nhất (LTS) của Yocto 5.0, được gọi là Yocto `scarthgap`. Trình quản lý bộ nhớ dùng để quản lý buffer chung (GBM) và trình điều khiển Weston hiện đã trở thành phiên bản thượng nguồn, thay thế cho các phiên bản hạ nguồn được dùng trong phiên bản 1.3 trở xuống.

Nếu bạn mới làm quen với Qualcomm Linux và sử dụng bản phát hành 1.5 mới nhất thì không cần di chuyển phần mềm. Để biết danh sách các tính năng mới, điểm cải tiến và hạn chế của bản phát hành mới nhất, hãy xem [Qualcomm Linux 1.5 Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250630224842/).

## Các thay đổi trong Yocto

Sau đây là các thay đổi trong Yocto cho bản phát hành 1.4 trở lên:

- Đã nâng cấp bản phát hành Yocto từ `kirkstone` (v4.0.22) lên `scarthgap` (v5.0.6). Đối với các tính năng và điểm cải tiến của `scarthgap`, hãy xem [Ghi chú phát hành cho 5.0 (scarthgap)](https://docs.yoctoproject.org/5.0.6/singleindex.html#release-notes-for-5-0-scarthgap).
- Đã nâng cấp Trình biên dịch GNU Compiler Collection (GCC) lên v13.2. Để tránh gặp các vấn đề về khả năng tương thích, hãy biên dịch lại mọi ứng dụng dựng sẵn với bản phát hành Qualcomm Linux mới nhất.

## Các thay đổi trong trình quản lý bộ nhớ

Trong bản phát hành 1.4 trở lên, [`libgbm` package](https://git.openembedded.org/openembedded-core/tree/meta/recipes-graphics/mesa?h=scarthgap&amp;id=00a662c5e28235fb64348aab4ce9aeb5e7f95d06) thượng nguồn dùng để quản lý bộ nhớ sẽ thay thế cho biến thể hạ nguồn. Thay đổi này ảnh hưởng đến định dạng bộ nhớ và chức năng GBM trên các mô-đun display, đồ họa, video và camera.

Để biết danh sách các định dạng được upstream GBM hỗ trợ, hãy xem [`mesa` repository](https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/gbm/main/gbm.h).

## Các thay đổi display

Trong bản phát hành 1.4 trở lên, ngăn xếp display của nền tảng hệ thống trên chip QCS6490 và QCS5430 hiện đã trở thành phiên bản thượng nguồn, nên không cần sử dụng backend Trình quản lý display (SDM) Snapdragon^®^ độc quyền nữa. Nền tảng IQ-8275 và IQ-9075 SoC đã sử dụng một ngăn xếp display thượng nguồn.

Do sự chuyển đổi này, một số tính năng phụ thuộc vào SDM không có sẵn theo mặc định. Nếu cần dùng những tính năng này, bạn có thể chuyển display stack sang giải pháp downstream.

Để bật những tính năng này trong bản phát hành 1.4 trở lên, hãy sử dụng thông tin trong bảng sau:

| Tính năng | Bật trong bản phát hành 1.4 trở lên |
| --- | --- |
| Hỗ trợ Embedded DisplayPort (eDP) | Bật downstream path như mô tả trong [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70020-18A/configure.html#enable-display-downstream-drivers). |
| Type-C qua DisplayPort (DP) | Bật downstream path như mô tả trong [Qualcomm Linux Display Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70020-18A/configure.html#enable-display-downstream-drivers). |
| Tệp thực thi modetest biên dịch sẵn | Trong tệp `libdrm_2.4.120.bb`, hãy bật tùy chọn `install-test-programs`. Để biết thêm thông tin, hãy xem [Qualcomm Linux Display Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-18/samples.html#run-drm-mode-test). |

## Các thay đổi trong camera

Trong bản phát hành 1.4 trở lên, tiện ích quản lý buffer sử dụng thành phần GBM thượng nguồn thay cho thành phần hạ nguồn. Do đó, hãy thay đổi các lệnh Qualcomm Intelligent Multimedia (IM) gọi ra chức năng quản lý buffer camera.

Định dạng mặc định của buffer thô hiện tại là `memory:GBM`. Không chỉ định định dạng bộ nhớ trong lệnh `gst`.

**Ví dụ về Pipeline**

- Sau đây là Pipeline bản phát hành 1.3:

gst-launch-1.0 qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! waylandsink fullscreen=true async=true sync=false
        Copy to clipboard
- Sau đây là chuỗi xử lý cho bản phát hành 1.4 trở lên:

gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_1::type=preview ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! waylandsink fullscreen=true sync=false
        Copy to clipboard

Để biết thêm thông tin về các thay đổi trong plugin, hãy xem [Các thay đổi trong Qualcomm IM SDK](https://docs.qualcomm.com/doc/80-70020-150V/topic/introduction.html#qim-sdk).

## Các thay đổi trong video

Để quản lý buffer cho quá trình mã hóa hoặc giải mã video, bản phát hành 1.4 trở lên hỗ trợ chế độ Xuất (DMA) (4), chế độ Nhập DMA (5) và chế độ Bản đồ bộ nhớ (MMAP) (2) của cơ chế truy cập bộ nhớ trực tiếp. Chọn chế độ phù hợp dựa trên use case cụ thể của bạn.

**Ví dụ**

Khi bạn mã hóa trong camera, nó đã tạo buffer DMA. Trong trường hợp này, hãy làm như sau:

> 
> 
> - Đặt đầu vào trình mã hóa ở chế độ Nhập DMA (5). Chế độ này đảm bảo rằng trình mô tả tệp buffer camera (FD) được dùng trực tiếp mà không phân bổ buffer mới ở phía trình điều khiển video và sao chép nội dung.
> - Đặt đầu ra trình mã hóa ở chế độ Nhập DMA (5). Chế độ này đảm bảo rằng video driver phân bổ buffer đầu ra.

Sau đây là ví dụ cho video pipeline:

gst-launch-1.0 qtiqmmfsrc ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc output-io-mode=5 capture-io-mode=4 ! h264parse ! mp4mux ! filesink location=/opt/cam_enc.mp4
    Copy to clipboard

Trong pipeline này, `output-io-mode` là chế độ Nhập DMA (5), biểu thị đầu vào trình mã hóa và `capture-io-mode` là chế độ Xuất DMA (4), biểu thị đầu ra trình mã hóa.

## Các thay đổi trong Qualcomm IM SDK

Trong các bản phát hành Qualcomm IM SDK 1.4 trở lên, hành vi của các plugin `waylandsink`, `qtiqmmfsrc`, `v4l2h264dec` và `v4l2h264enc` đã thay đổi do sự di chuyển lên thượng nguồn của thành phần trình quản lý bộ nhớ. Để biết thêm chi tiết, hãy xem [Các thay đổi trong trình quản lý bộ nhớ](https://docs.qualcomm.com/doc/80-70020-150V/topic/introduction.html#memory-manager).

Để phản ánh sự thay đổi trong các plugin của Qualcomm IM SDK và việc căn chỉnh theo GBM thượng nguồn, hãy cập nhật các ứng dụng mẫu như sau.

### waylandsink plugin

Các phiên bản trước đây của Qualcomm IM SDK đã dùng phiên bản hạ nguồn của plugin `waylandsink` có chứa tọa độ `x,y,width,height` làm đối số bổ sung. Trong các bản phát hành sau này, chức năng này không hoạt động do việc chuyển đổi sang plugin `waylandsink` thượng nguồn. Hãy dùng plugin `qtivcomposer` cho chức năng này.

Sau đây là các thay đổi plugin và thay đổi tương ứng mà bạn phải thực hiện:

| Thay đổi | Thay đổi | Hành động |
| --- | --- | --- |
| 1,3 | Bản phát hành 1.4 trở lên | Hành động |
| Có tọa độ `x,y,width,height`. | Cung cấp chức năng thông qua plugin `qtivcomposer`. | Sử dụng plugin `qtivcomposer` cho composition. |
|  |  |  |

**Ví dụ về Pipeline**

- Sau đây là Pipeline bản phát hành 1.3:

gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink enable-last-sample=false sync=true fullscreen=true filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! mixer. filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! mixer.
        Copy to clipboard
- Sau đây là chuỗi xử lý cho bản phát hành 1.4 trở lên:

gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink fullscreen=true filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mixer. filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mixer.
        Copy to clipboard

### qtiqmmfsrc plugin

Trong bản phát hành 1.4 trở lên, plugin `qtiqmmfsrc` không hỗ trợ trường nén cho NV12 được nén băng thông phổ dụng (UBWC). Thay vào đó, hãy dùng định dạng mới được thiết kế riêng cho ảnh NV12 được nén UBWC.

Sau đây là các thay đổi plugin và thay đổi tương ứng mà bạn phải thực hiện:

| Thay đổi | Thay đổi | Hành động |
| --- | --- | --- |
| 1,3 | Bản phát hành 1.4 trở lên | Hành động |
| `format=NV12`<br><br><br>`compression=ubwc` | Đã thêm `format=NV12_Q08C` | <ul class="simple"><br><li><p>Thay đổi định dạng từ <code class="docutils literal notranslate"><span class="pre">format=NV12</span></code> thành <code class="docutils literal notranslate"><span class="pre">format=NV12_Q08C</span></code>.</p></li><br><li><p>Xóa tham số <code class="docutils literal notranslate"><span class="pre">compression=ubwc</span></code>.</p></li><br></ul> |
|  |  |  |

**Ví dụ về Pipeline**

- Sau đây là Pipeline bản phát hành 1.3:

gst-launch-1.0 qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! v4l2h264enc output-io-mode=5 capture-io-mode=5 ! h264parse ! filesink location=/opt/video.h264
        Copy to clipboard
- Sau đây là chuỗi xử lý cho bản phát hành 1.4 trở lên:

gst-launch-1.0 -ev qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1 ! queue ! v4l2h264enc output-io-mode=5 capture-io-mode=4 ! h264parse ! filesink location=/opt/video.h264
        Copy to clipboard

### v4l2h264enc and v4l2h264dec plugins

Trong các phiên bản trước đây, khuôn khổ GST quản lý các buffer ứng dụng. Trong bản phát hành 1.4 trở lên, trình điều khiển `v4l2` hỗ trợ quản lý buffer nội bộ.

Để thêm điểm cải tiến này vào driver, hãy làm như sau:

- Đối với ứng dụng dùng nguồn camera với plugin `v4l2h264enc`, hãy thay đổi cấu hình pipeline  từ `output-io-mode=5`/ `capture-io-mode=5` thành `output-io-mode=5`/ `capture-io-mode=4`.
- Đối với ứng dụng dùng nguồn tệp với plugin `v4l2h264dec`, hãy thay đổi cấu hình pipeline từ `output-io-mode=5`/ `capture-io-mode=5` thành `output-io-mode=4`/ `capture-io-mode=4`.

Sau đây là các thay đổi plugin và thay đổi tương ứng mà bạn phải thực hiện:

| Use case | Thay đổi | Thay đổi | Hành động |
| --- | --- | --- | --- |
| Use case | 1,3 | Bản phát hành 1.4 trở lên | Hành động |
| Mã hóa video | `format=NV12`<br><br><br>`compression=ubwc` | Đã thêm `format=NV12_Q08C` | <ul class="simple"><br><li><p>Thay đổi định dạng từ <code class="docutils literal notranslate"><span class="pre">format=NV12</span></code> thành <code class="docutils literal notranslate"><span class="pre">format=NV12_Q08C</span></code>.</p></li><br><li><p>Xóa tham số <code class="docutils literal notranslate"><span class="pre">compression=ubwc</span></code>.</p></li><br></ul> |
| Mã hóa video | `output-io-mode=5` và `capture-io-mode=5` | Đã cập nhật `output-io-mode=5` và `capture-io-mode=4` | Thay đổi các chế độ thành `output-io-mode=5` và `capture-io-mode=4`. |
| Giải mã video | `output-io-mode=5` và `capture-io-mode=5` | <ul class="simple"><br><li><p>Đã thêm caps và <code class="docutils literal notranslate"><span class="pre">format=NV12</span></code></p></li><br><li><p>Đã cập nhật <code class="docutils literal notranslate"><span class="pre">output-io-mode=4</span></code> và <code class="docutils literal notranslate"><span class="pre">capture-io-mode=4</span></code></p></li><br></ul> | <ul class="simple"><br><li><p>Thêm <code class="docutils literal notranslate"><span class="pre">video/x-raw,format=NV12</span></code>.</p></li><br><li><p>Thay đổi các chế độ thành <code class="docutils literal notranslate"><span class="pre">output-io-mode=4</span></code> và <code class="docutils literal notranslate"><span class="pre">capture-io-mode=4</span></code>.</p></li><br></ul> |
|  |  |  |  |

**Ví dụ về Pipeline**

- Sau đây là pipeline trình giải mã video cho bản phát hành 1.3:

gst-launch-1.0 -e filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 !  waylandsink fullscreen=true
        Copy to clipboard
- Sau đây là chuỗi xử lý trình giải mã video cho bản phát hành 1.4 trở lên:

gst-launch-1.0 -e filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! waylandsink fullscreen=true
        Copy to clipboard
- Sau đây là pipeline trình mã hóa video cho bản phát hành 1.3:

gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=30/1,compression=ubwc,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=5 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4"
        Copy to clipboard
- Sau đây là chuỗi xử lý trình mã hóa video cho bản phát hành 1.4 trở lên:

gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=3840,height=2160,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4"
        Copy to clipboard

## Các bước tiếp theo

- Để cập nhật qua mạng (OTA) cho Qualcomm Linux, hãy xem [Qualcomm Linux Yocto Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-27/ota_update_for_qualcomm_linux.html#ota-update-for-qualcomm-linux).
- Để tìm hiểu thêm về các tính năng mới, điểm cải tiến và hạn chế của Qualcomm Intelligent Multimedia (IM) SDK, hãy xem [Qualcomm Intelligent Multimedia (IM) SDK Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-52/qim-sdk-release-1-5.html).
- Để tìm hiểu thêm về các tính năng mới, điểm cải tiến và hạn chế của bản phát hành mới nhất, hãy xem [Qualcomm Linux 1.5 Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250630224842/).

Last Published: Dec 23, 2025

[Next Topic
Tham khảo](https://docs.qualcomm.com/bundle/publicresource/80-70020-150V/topics/references.md)

Source: [https://docs.qualcomm.com/doc/80-70020-150V/topic/introduction.html](https://docs.qualcomm.com/doc/80-70020-150V/topic/introduction.html)