1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// SPDX-FileCopyrightText: (c) 2026 Joel Winarske
// SPDX-License-Identifier: MIT
//! The seam between a renderer and the scanout path.
//!
//! Port of `src/present/scanout_producer.hpp`.
use LayerBufferSource;
/// Why a producer could not hand over a buffer.
/// Something that allocates the buffers a scanout path presents.
///
/// Two questions, asked once each when a scanout path is built: *what layouts
/// can you produce for this format*, and *give me a buffer in one of these*. The
/// backend intersects the first answer against what the CRTC's planes can scan
/// out, and the intersection is what it passes back in.
///
/// Splitting it this way is what lets a GBM, GL, or Vulkan renderer plug into
/// the same backend: each knows what it can export, none of them needs to know
/// anything about planes.