Lines Matching +full:sub +full:- +full:components
1 .. SPDX-License-Identifier: GPL-2.0
16 functional pipeline stages called components, and every component has some
20 Typical D71 components:
23 -----
30 ------
39 -------------------
47 --------------------------
52 -----------------------------
57 --------------------------------
62 ------
72 --------
83 - Dual display mode
86 - Single display mode
95 -------------------------
97 .. kernel-render:: DOT
114 "Scaler-0";
115 "Scaler-1";
116 "Scaler-0/1"
120 "Layer-0" -> "Scaler-0"
121 "Layer-1" -> "Scaler-0"
122 "Layer-2" -> "Scaler-1"
123 "Layer-3" -> "Scaler-1"
125 "Layer-0" -> "Compiz"
126 "Layer-1" -> "Compiz"
127 "Layer-2" -> "Compiz"
128 "Layer-3" -> "Compiz"
129 "Scaler-0" -> "Compiz"
130 "Scaler-1" -> "Compiz"
132 "Compiz" -> "Scaler-0/1" -> "Wb_layer"
133 "Compiz" -> "Improc" -> "Timing Controller"
136 "Wb_layer" -> "Memory"
137 "Timing Controller" -> "Monitor"
141 --------------------------------
143 .. kernel-render:: DOT
161 "Slave.Scaler-0";
162 "Slave.Scaler-1";
166 "Slave.Layer-0" -> "Slave.Scaler-0"
167 "Slave.Layer-1" -> "Slave.Scaler-0"
168 "Slave.Layer-2" -> "Slave.Scaler-1"
169 "Slave.Layer-3" -> "Slave.Scaler-1"
171 "Slave.Layer-0" -> "Slave.Compiz"
172 "Slave.Layer-1" -> "Slave.Compiz"
173 "Slave.Layer-2" -> "Slave.Compiz"
174 "Slave.Layer-3" -> "Slave.Compiz"
175 "Slave.Scaler-0" -> "Slave.Compiz"
176 "Slave.Scaler-1" -> "Slave.Compiz"
185 "Scaler-0";
186 "Scaler-1";
187 "Scaler-0/1"
191 "Layer-0" -> "Scaler-0"
192 "Layer-1" -> "Scaler-0"
193 "Layer-2" -> "Scaler-1"
194 "Layer-3" -> "Scaler-1"
196 "Slave.Compiz" -> "Compiz"
197 "Layer-0" -> "Compiz"
198 "Layer-1" -> "Compiz"
199 "Layer-2" -> "Compiz"
200 "Layer-3" -> "Compiz"
201 "Scaler-0" -> "Compiz"
202 "Scaler-1" -> "Compiz"
204 "Compiz" -> "Scaler-0/1" -> "Wb_layer"
205 "Compiz" -> "Improc" -> "Timing Controller"
208 "Wb_layer" -> "Memory"
209 "Timing Controller" -> "Monitor"
212 Sub-pipelines for input and output
213 ----------------------------------
215 A complete display pipeline can be easily divided into three sub-pipelines
221 .. kernel-render:: DOT
231 "Scaler-n";
234 "Layer-n" -> "Scaler-n" -> "Compiz"
237 .. kernel-render:: DOT
245 "Layer-0/1" -> "Scaler-0" -> "Merger"
246 "Layer-2/3" -> "Scaler-1" -> "Merger"
247 "Merger" -> "Compiz"
252 .. kernel-render:: DOT
262 "Scaler-n";
265 "Compiz" -> "Scaler-n" -> "Wb_layer"
268 .. kernel-render:: DOT
276 "Compiz" -> "Splitter"
277 "Splitter" -> "Scaler-0" -> "Merger"
278 "Splitter" -> "Scaler-1" -> "Merger"
279 "Merger" -> "Wb_layer"
284 .. kernel-render:: DOT
292 "Compiz" -> "Improc" -> "Timing Controller"
295 In the following section we'll see these three sub-pipelines will be handled
296 by KMS-plane/wb_conn/crtc respectively.
302 --------------------------------
308 - Data flow controlling.
309 - Specific component capabilities and features.
312 data flow control and all specific components are a subclass of this base
315 .. kernel-doc:: drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
323 the control-abilites of device.
330 - CORE: for common features and capabilities handling.
331 - CHIP: for register programming and HW specific feature (limitation) handling.
335 - struct komeda_dev_funcs
336 - struct komeda_pipeline_funcs
337 - struct komeda_component_funcs
339 .. kernel-doc:: drivers/gpu/drm/arm/display/komeda/komeda_dev.h
345 .. kernel-doc:: drivers/gpu/drm/arm/display/komeda/komeda_format_caps.h
347 .. kernel-doc:: drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.h
350 Attach komeda_dev to DRM-KMS
353 Komeda abstracts resources by pipeline/component, but DRM-KMS uses
354 crtc/plane/connector. One KMS-obj cannot represent only one single component,
356 single component, usually that needs multiple components to fit the requirement.
357 Like set mode, gamma, ctm for KMS all target on CRTC-obj, but komeda needs
359 And a KMS-Plane may require multiple komeda resources: layer/scaler/compiz.
361 So, one KMS-Obj represents a sub-pipeline of komeda resources.
363 - Plane: `Layer(input) pipeline`_
364 - Wb_connector: `Writeback(output) pipeline`_
365 - Crtc: `Display output pipeline`_
369 user. And pipeline/component will be treated as private object of DRM-KMS; the
373 -----------------------------------------
376 - `Single pipeline data flow`_
377 - `Dual pipeline with Slave enabled`_
382 - Layer Split, See `Layer(input) pipeline`_
391 - Slave pipeline, See `Dual pipeline with Slave enabled`_
396 Layer according to plane_state->zpos.
398 So for komeda, the KMS-plane doesn't represent a fixed komeda layer pipeline,
400 Layers to fit the requirement of one KMS-plane.
403 ---------------------------------------------
407 .. code-block:: c
420 -----------------------------------------------------------
425 .. code-block:: c
440 ---------------------------
442 Komeda has multiple types of components, but the process of validation are
445 .. code-block:: c
466 ----------------------
468 .. kernel-doc:: drivers/gpu/drm/arm/display/komeda/komeda_kms.h
472 -------------------
473 .. kernel-doc:: drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
475 .. kernel-doc:: drivers/gpu/drm/arm/display/komeda/komeda_plane.c
483 - komeda_dev: describes the real display hardware.
484 - komeda_kms_dev: attaches or connects komeda_dev to DRM-KMS.