• Home
  • Raw
  • Download

Lines Matching full:for

9 support for sharing pixel-buffer allocations between processes, devices, and
12 approach this sharing for two-dimensional image data.
14 It is written with reference to the DRM subsystem for GPU and display devices,
15 V4L2 for media devices, and also to Vulkan, EGL and Wayland, for userspace
34 Synonym for row.
41 A piece of memory for storing (parts of) pixel data. Has stride and size
56 of a pixel or an image. The data for one pixel may be spread over several
64 One of the dimensions in a color model. For example, RGB model has
76 A value that denotes the color coverage in a pixel. Sometimes used for
82 pixels at the start of vertically-consecutive tiling blocks. For linear
83 layouts, the byte offset between two vertically-adjacent pixels. For
88 Synonym for stride.
95 values provided for each pixel. Although each subsystem has its own format
97 wherever possible, as they are the standard descriptions used for interchange.
102 co-ordinate in an image, and the color values for that pixel contained within
108 For example, ``DRM_FORMAT_ARGB8888`` describes a format in which each pixel has
118 sample is stored for each 2x2 pixel grouping).
121 samples, and the actual memory storage for the buffer. The most straightforward
124 This is considered the baseline interchange format, and most convenient for CPU
128 making use of tiled access and possibly also compression. For example, the
134 Some modifiers may modify the number of planes required for an image; for
141 particular generations or configurations of devices per-vendor. For this reason,
151 underlying memory storage. For example, even though a 1920x1080
152 ``DRM_FORMAT_NV12`` buffer has a luma plane containing 1920x1080 samples for the Y
153 component, and 960x540 samples for the U and V components, the overall buffer is
163 buffer; for example, ``DRM_FORMAT_NV12`` may be stored in a single memory buffer
166 beginning from the byte offset for that plane.
169 between two contiguous row. For example, a ``DRM_FORMAT_MOD_LINEAR`` buffer
171 order to allow for aligned access patterns. In this case, the buffer will still
177 larger area than would ordinarily be required. For example, many media decoders
180 described as having a height of 1080, with the memory allocation for each buffer
181 being increased to account for the extra padding.
190 the modifiers supported for each format. In userspace, this is supported through
191 the `EGL_EXT_image_dma_buf_import_modifiers`_ extension entrypoints for EGL, the
192 `VK_EXT_image_drm_format_modifier`_ extension for Vulkan, and the
193 `zwp_linux_dmabuf_v1`_ extension for Wayland.
203 combination for its usage. This is performed through a simple intersection of
204 lists. For example, if a user wants to use Vulkan to render an image to be
207 - query KMS for the ``IN_FORMATS`` property for the given plane
208 - query Vulkan for the supported formats for its physical device, making sure
212 - for this format, intersect the lists of supported modifiers for both KMS and
213 Vulkan, to obtain a final list of acceptable modifiers for that format
215 This intersection must be performed for all usages. For example, if the user
217 it intends to use for encoding for the set of modifiers it supports, and
243 it considers the 'best' modifier within the acceptable list for the requested
251 modifier selected for the buffer, as well as the per-plane offset and stride.
269 duplicated within an image. For example, a ``DRM_FORMAT_NV12`` buffer may have
272 memory. For this reason, each import and allocation API must provide a separate
273 handle for each plane.
275 Each kernel subsystem has its own types and interfaces for buffer management.
279 To address this, ``dma-buf`` handles are used as the universal interchange for
285 For example, a Wayland media player may use V4L2 to decode a video frame into a
291 descriptors as an EGLImage for use through EGL/OpenGL (ES), a VkImage for use
306 backwards compatibility, support is needed for drivers and userspace which do
309 As an example, GBM is used to allocate buffers to be shared between EGL for
310 rendering and KMS for display. It has two entrypoints for allocating buffers:
356 unknown for whatever reason; this is only acceptable when the buffer has
359 It follows from this that for any single buffer, the complete chain of operations
361 explicit. For example, if a user wishes to allocate a buffer for use between
365 allocation using implicit modifiers, or allocate the buffer for media use
369 to explicit modifiers. For example, if the buffer is allocated with
374 When allocating buffers for exchange between different users and modifiers are
376 ``DRM_FORMAT_MOD_LINEAR`` for their allocation, as this is the universal baseline
377 for exchange. However, it is not guaranteed that this will result in the correct
383 descriptors for memory planes, DRM format tokens to describe the format, DRM
384 format modifiers to describe the layout in memory, at least width and height for
385 dimensions, and at least offset and stride for each memory plane.