DrmDisplayOp
🚧 Documentation is under development
The Holoscan SDK guide is currently under active development. Some sections may be incomplete or change without notice.
Questions? Contact RidgeRun or email to support@ridgerun.com.
-
Overview
-
Build, Run, and Validate
-
Core Concepts
-
Operators and Graphs
-
Tensor Data and Memory
-
Interprocess Communication
-
-
Application and Operator Development
- Building an HSDK Application
- Writing a Minimal Operator
- Typed Parameters and Configuration
- Reading, Writing, and Forwarding Data
- Writing Tensor Operators
- Complete Operator Patterns
- Authoring Runtime Behavior
- Runtime Parameter Updates
- Lifecycle Callbacks and Restart Control
- Performance and Debugging
- SDK Source Map
-
Operator Reference
-
Core Operators
-
Holoscan Camera
-
Holoscan RidgeRun
- Overview
- Build and Installation
- ArgusCameraOp
- V4L2SourceOp
- V4L2UserPtrSourceOp
- BgraToPlanarTensorOp
- RawBayerToBgraOp
- RawBayerToYoloTensorOp
- YuyvToBgraOp
- TensorRtInferenceOp
- DrmDisplayOp
- DrmBgraDisplayOp
- X11DisplayOp
- CudaCompositorOp
- DepthColorizerOp
- FakesinkOp
- FrameSkipperOp
- InterprocessSrcOp
- TestPatternOp
-
-
Migration from Holoscan 4.x
-
Examples
-
Core
-
Holoscan Camera
-
Holoscan RidgeRun
-
-
Benchmark and Use Cases
-
Holoscan vs GStreamer
- Overview
-
Capture and Display
-
Capture and Inference
- Compare the workloads
- Implemented Applications
- Framework Selection
- Interprocess
-
DrmDisplayOp
DrmDisplayOp presents packed YUYV CUDA tensors through an exclusive DRM/KMS display. The operator performs the YUYV-to-BGRA conversion in CUDA, writes a DRM dumb framebuffer and submits page flips without using X11 or Wayland.
Input arguments
| Argument | Default and meaning |
|---|---|
width, height
|
Positive input dimensions; width must be even because YUYV stores two pixels in four bytes. |
device
|
/dev/dri/card0 by default.
|
connector_id
|
0 selects the first suitable connector; a nonzero value requests a specific connector.
|
mode
|
Empty by default; the DRM helper selects a mode unless an explicit mode string is supplied. |
Ports and data contract
| Port | Memory | Queue | Trigger | Contract |
|---|---|---|---|---|
input
|
CUDA device, contiguous | SDK default | OnEach
|
U8 tensor with shape [height, width, 2]; the final dimension contains packed YUYV bytes. Terminal display sink with no Holoscan output.
|
V4L2SourceOp -> DrmDisplayOp V4L2 source -> YuyvToBgraOp -> DrmBgraDisplayOp
Build
Follow Holoscan RidgeRun Build and Installation for the module build and installation. The operator-specific include, target, and runtime requirements are listed below.
Include drm_display/drm_display.hpp and link holoscan::drm_display. The operator requires CUDA and libdrm, and the process must have access to the DRM device.
Example
Use this operator when the upstream source provides packed YUYV bytes in CUDA memory:
auto display = graph.op<DrmDisplayOp>(
"display", width, height, "/dev/dri/card0", 0U, "1920x1080");
graph.add_flow(camera->frame, display->input);
The input width must be even. Each CUDA thread handles one two-pixel YUYV group: Y0, U, Y1 and V are converted with limited-range BT.601 coefficients into two BGRA pixels. The kernel writes directly into the current DRM framebuffer, so this operator combines format conversion and display and should not be followed by YuyvToBgraOp for the same frame.
At startup the connector and mode are validated and the current CRTC is saved. Each compute waits for the previous flip, performs the CUDA conversion, synchronizes the framebuffer write and queues the next flip. Cleanup restores the original CRTC. Any missing DRM master permission, unsupported mode, failed DMABUF import, CUDA error or page-flip error terminates the operator.