drm/i915: split out i915_gtt_view_types.h from i915_vma_types.h
authorJani Nikula <jani.nikula@intel.com>
Mon, 24 Feb 2025 16:00:49 +0000 (18:00 +0200)
committerJani Nikula <jani.nikula@intel.com>
Mon, 3 Mar 2025 11:44:53 +0000 (13:44 +0200)
In the interest of limiting the display dependencies on i915 core
headers, split out i915_gtt_view_types.h from i915_vma_types.h, and only
include the new header from intel_display_types.h.

Reuse the new header from xe compat code too, failing build if partial
view is used in display code.

Side note: Why would we ever have set enum i915_gtt_view_type values to
size of each type?! What an insane hack.

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/bb31885c32dbddad76d634c6fdb98a73b546b42e.1740412806.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_display_types.h
drivers/gpu/drm/i915/i915_gtt_view_types.h [new file with mode: 0644]
drivers/gpu/drm/i915/i915_vma_types.h
drivers/gpu/drm/xe/compat-i915-headers/i915_gtt_view_types.h [new file with mode: 0644]
drivers/gpu/drm/xe/compat-i915-headers/i915_vma_types.h [deleted file]

index 259cc20c5233908d6a8b4c9000bd04ec103b4e47..ffa311845d0536eedaaf0f25e2eb41195b640ca8 100644 (file)
@@ -42,7 +42,7 @@
 #include <drm/intel/i915_hdcp_interface.h>
 #include <uapi/drm/i915_drm.h>
 
-#include "i915_vma_types.h"
+#include "i915_gtt_view_types.h"
 #include "intel_bios.h"
 #include "intel_display.h"
 #include "intel_display_conversion.h"
diff --git a/drivers/gpu/drm/i915/i915_gtt_view_types.h b/drivers/gpu/drm/i915/i915_gtt_view_types.h
new file mode 100644 (file)
index 0000000..c084f67
--- /dev/null
@@ -0,0 +1,59 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2025 Intel Corporation */
+
+#ifndef __I915_GTT_VIEW_TYPES_H__
+#define __I915_GTT_VIEW_TYPES_H__
+
+#include <linux/types.h>
+
+struct intel_remapped_plane_info {
+       /* in gtt pages */
+       u32 offset:31;
+       u32 linear:1;
+       union {
+               /* in gtt pages for !linear */
+               struct {
+                       u16 width;
+                       u16 height;
+                       u16 src_stride;
+                       u16 dst_stride;
+               };
+
+               /* in gtt pages for linear */
+               u32 size;
+       };
+} __packed;
+
+struct intel_rotation_info {
+       struct intel_remapped_plane_info plane[2];
+} __packed;
+
+struct intel_partial_info {
+       u64 offset;
+       unsigned int size;
+} __packed;
+
+struct intel_remapped_info {
+       struct intel_remapped_plane_info plane[4];
+       /* in gtt pages */
+       u32 plane_alignment;
+} __packed;
+
+enum i915_gtt_view_type {
+       I915_GTT_VIEW_NORMAL = 0,
+       I915_GTT_VIEW_ROTATED = sizeof(struct intel_rotation_info),
+       I915_GTT_VIEW_PARTIAL = sizeof(struct intel_partial_info),
+       I915_GTT_VIEW_REMAPPED = sizeof(struct intel_remapped_info),
+};
+
+struct i915_gtt_view {
+       enum i915_gtt_view_type type;
+       union {
+               /* Members need to contain no holes/padding */
+               struct intel_partial_info partial;
+               struct intel_rotation_info rotated;
+               struct intel_remapped_info remapped;
+       };
+};
+
+#endif /* __I915_GTT_VIEW_TYPES_H__ */
index 559de74d0b114bc4d20bd560e110bd3645502f2b..a499a3bea87402501857ffef848cf632320920a3 100644 (file)
@@ -32,6 +32,8 @@
 
 #include "gem/i915_gem_object_types.h"
 
+#include "i915_gtt_view_types.h"
+
 /**
  * DOC: Global GTT views
  *
 
 struct i915_vma_resource;
 
-struct intel_remapped_plane_info {
-       /* in gtt pages */
-       u32 offset:31;
-       u32 linear:1;
-       union {
-               /* in gtt pages for !linear */
-               struct {
-                       u16 width;
-                       u16 height;
-                       u16 src_stride;
-                       u16 dst_stride;
-               };
-
-               /* in gtt pages for linear */
-               u32 size;
-       };
-} __packed;
-
-struct intel_remapped_info {
-       struct intel_remapped_plane_info plane[4];
-       /* in gtt pages */
-       u32 plane_alignment;
-} __packed;
-
-struct intel_rotation_info {
-       struct intel_remapped_plane_info plane[2];
-} __packed;
-
-struct intel_partial_info {
-       u64 offset;
-       unsigned int size;
-} __packed;
-
-enum i915_gtt_view_type {
-       I915_GTT_VIEW_NORMAL = 0,
-       I915_GTT_VIEW_ROTATED = sizeof(struct intel_rotation_info),
-       I915_GTT_VIEW_PARTIAL = sizeof(struct intel_partial_info),
-       I915_GTT_VIEW_REMAPPED = sizeof(struct intel_remapped_info),
-};
-
 static inline void assert_i915_gem_gtt_types(void)
 {
        BUILD_BUG_ON(sizeof(struct intel_rotation_info) != 2 * sizeof(u32) + 8 * sizeof(u16));
@@ -160,16 +122,6 @@ static inline void assert_i915_gem_gtt_types(void)
        }
 }
 
-struct i915_gtt_view {
-       enum i915_gtt_view_type type;
-       union {
-               /* Members need to contain no holes/padding */
-               struct intel_partial_info partial;
-               struct intel_rotation_info rotated;
-               struct intel_remapped_info remapped;
-       };
-};
-
 /**
  * DOC: Virtual Memory Address
  *
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_gtt_view_types.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_gtt_view_types.h
new file mode 100644 (file)
index 0000000..b261910
--- /dev/null
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2025 Intel Corporation */
+
+#include "../../i915/i915_gtt_view_types.h"
+
+/* Partial view not supported in xe, fail build if used. */
+#define I915_GTT_VIEW_PARTIAL
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma_types.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma_types.h
deleted file mode 100644 (file)
index e7aaf50..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2023 Intel Corporation
- */
-
-#include <linux/types.h>
-#include <linux/build_bug.h>
-
-/* XX: Figure out how to handle this vma mapping in xe */
-struct intel_remapped_plane_info {
-       /* in gtt pages */
-       u32 offset:31;
-       u32 linear:1;
-       union {
-               /* in gtt pages for !linear */
-               struct {
-                       u16 width;
-                       u16 height;
-                       u16 src_stride;
-                       u16 dst_stride;
-               };
-
-               /* in gtt pages for linear */
-               u32 size;
-       };
-} __packed;
-
-struct intel_remapped_info {
-       struct intel_remapped_plane_info plane[4];
-       /* in gtt pages */
-       u32 plane_alignment;
-} __packed;
-
-struct intel_rotation_info {
-       struct intel_remapped_plane_info plane[2];
-} __packed;
-
-enum i915_gtt_view_type {
-       I915_GTT_VIEW_NORMAL = 0,
-       I915_GTT_VIEW_ROTATED = sizeof(struct intel_rotation_info),
-       I915_GTT_VIEW_REMAPPED = sizeof(struct intel_remapped_info),
-};
-
-static inline void assert_i915_gem_gtt_types(void)
-{
-       BUILD_BUG_ON(sizeof(struct intel_rotation_info) != 2 * sizeof(u32) + 8 * sizeof(u16));
-       BUILD_BUG_ON(sizeof(struct intel_remapped_info) != 5 * sizeof(u32) + 16 * sizeof(u16));
-
-       /* Check that rotation/remapped shares offsets for simplicity */
-       BUILD_BUG_ON(offsetof(struct intel_remapped_info, plane[0]) !=
-                    offsetof(struct intel_rotation_info, plane[0]));
-       BUILD_BUG_ON(offsetofend(struct intel_remapped_info, plane[1]) !=
-                    offsetofend(struct intel_rotation_info, plane[1]));
-
-       /* As we encode the size of each branch inside the union into its type,
-        * we have to be careful that each branch has a unique size.
-        */
-       switch ((enum i915_gtt_view_type)0) {
-       case I915_GTT_VIEW_NORMAL:
-       case I915_GTT_VIEW_ROTATED:
-       case I915_GTT_VIEW_REMAPPED:
-               /* gcc complains if these are identical cases */
-               break;
-       }
-}
-
-struct i915_gtt_view {
-       enum i915_gtt_view_type type;
-       union {
-               /* Members need to contain no holes/padding */
-               struct intel_rotation_info rotated;
-               struct intel_remapped_info remapped;
-       };
-};