1/* SPDX-License-Identifier: MIT */
2/* Copyright © 2025 Intel Corporation */
3
4#ifndef __I915_GTT_VIEW_TYPES_H__
5#define __I915_GTT_VIEW_TYPES_H__
6
7#include <linux/types.h>
8
9struct intel_remapped_plane_info {
10 /* in gtt pages */
11 u32 offset:31;
12 u32 linear:1;
13 union {
14 /* in gtt pages for !linear */
15 struct {
16 u16 width;
17 u16 height;
18 u16 src_stride;
19 u16 dst_stride;
20 };
21
22 /* in gtt pages for linear */
23 u32 size;
24 };
25} __packed;
26
27struct intel_rotation_info {
28 struct intel_remapped_plane_info plane[2];
29} __packed;
30
31struct intel_partial_info {
32 u64 offset;
33 unsigned int size;
34} __packed;
35
36struct intel_remapped_info {
37 struct intel_remapped_plane_info plane[4];
38 /* in gtt pages */
39 u32 plane_alignment;
40} __packed;
41
42enum i915_gtt_view_type {
43 I915_GTT_VIEW_NORMAL = 0,
44 I915_GTT_VIEW_ROTATED = sizeof(struct intel_rotation_info),
45 I915_GTT_VIEW_PARTIAL = sizeof(struct intel_partial_info),
46 I915_GTT_VIEW_REMAPPED = sizeof(struct intel_remapped_info),
47};
48
49struct i915_gtt_view {
50 enum i915_gtt_view_type type;
51 union {
52 /* Members need to contain no holes/padding */
53 struct intel_partial_info partial;
54 struct intel_rotation_info rotated;
55 struct intel_remapped_info remapped;
56 };
57};
58
59#endif /* __I915_GTT_VIEW_TYPES_H__ */
60

source code of linux/drivers/gpu/drm/i915/i915_gtt_view_types.h