1 | This is a draft of drm_panic support for i915. | 1 | This is a draft of drm_panic support for i915. |
---|---|---|---|
2 | 2 | ||
3 | I've tested it on the 4 intel laptops I have at my disposal. | 3 | I've tested it on the 4 intel laptops I have at my disposal. |
4 | * Haswell with 128MB of eDRAM. | 4 | * Haswell with 128MB of eDRAM. |
5 | * Comet Lake. | 5 | * Comet Lake i7-10850H |
6 | * Alder Lake (with DPT, and Y-tiling). | 6 | * Raptor Lake i7-1370P (with DPT, and Y-tiling). |
7 | * Lunar Lake (with DPT, and 4-tiling, and using the Xe driver. | 7 | * Lunar Lake Ultra 5 228V (with DPT, and 4-tiling, and using the Xe driver. |
8 | 8 | ||
9 | I tested panic in both fbdev console and gnome desktop. | 9 | I tested panic in both fbdev console and gnome desktop. |
10 | 10 | ||
11 | Best regards, | 11 | Best regards, |
12 | 12 | ||
... | ... | ||
23 | 23 | ||
24 | v5: | 24 | v5: |
25 | * Rebase on top of git@gitlab.freedesktop.org:drm/i915/kernel.git drm-intel-next | 25 | * Rebase on top of git@gitlab.freedesktop.org:drm/i915/kernel.git drm-intel-next |
26 | * Use struct intel_display instead of drm_i915_private. | 26 | * Use struct intel_display instead of drm_i915_private. |
27 | * Use iosys_map for intel_bo_panic_map(). | 27 | * Use iosys_map for intel_bo_panic_map(). |
28 | |||
29 | v6: | ||
30 | * Rebase on top of git@gitlab.freedesktop.org:drm/i915/kernel.git drm-intel-next | ||
31 | * Use struct intel_display instead of drm_i915_private for intel_atomic_plane.c | ||
28 | 32 | ||
29 | Jocelyn Falempe (8): | 33 | Jocelyn Falempe (8): |
30 | drm/i915/fbdev: Add intel_fbdev_get_map() | 34 | drm/i915/fbdev: Add intel_fbdev_get_map() |
31 | drm/i915/display/i9xx: Add a disable_tiling() for i9xx planes | 35 | drm/i915/display/i9xx: Add a disable_tiling() for i9xx planes |
32 | drm/i915/display: Add a disable_tiling() for skl planes | 36 | drm/i915/display: Add a disable_tiling() for skl planes |
... | ... | ||
52 | drivers/gpu/drm/xe/display/intel_bo.c | 10 ++ | 56 | drivers/gpu/drm/xe/display/intel_bo.c | 10 ++ |
53 | drivers/gpu/drm/xe/display/xe_fb_pin.c | 5 + | 57 | drivers/gpu/drm/xe/display/xe_fb_pin.c | 5 + |
54 | 15 files changed, 294 insertions(+), 2 deletions(-) | 58 | 15 files changed, 294 insertions(+), 2 deletions(-) |
55 | 59 | ||
56 | 60 | ||
57 | base-commit: ac6674bc94e91c25f5919efc91721264c00ab300 | 61 | base-commit: 010363c4618920838ca8777fdabd46871d289bf9 |
58 | -- | 62 | -- |
59 | 2.47.1 | 63 | 2.49.0 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
68 | +} | 68 | +} |
69 | diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.h b/drivers/gpu/drm/i915/display/intel_fbdev.h | 69 | diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.h b/drivers/gpu/drm/i915/display/intel_fbdev.h |
70 | index XXXXXXX..XXXXXXX 100644 | 70 | index XXXXXXX..XXXXXXX 100644 |
71 | --- a/drivers/gpu/drm/i915/display/intel_fbdev.h | 71 | --- a/drivers/gpu/drm/i915/display/intel_fbdev.h |
72 | +++ b/drivers/gpu/drm/i915/display/intel_fbdev.h | 72 | +++ b/drivers/gpu/drm/i915/display/intel_fbdev.h |
73 | @@ -XXX,XX +XXX,XX @@ struct drm_device; | 73 | @@ -XXX,XX +XXX,XX @@ struct drm_fb_helper_surface_size; |
74 | struct drm_i915_private; | 74 | struct drm_i915_private; |
75 | struct intel_fbdev; | 75 | struct intel_fbdev; |
76 | struct intel_framebuffer; | 76 | struct intel_framebuffer; |
77 | +struct iosys_map; | 77 | +struct iosys_map; |
78 | 78 | ||
79 | #ifdef CONFIG_DRM_FBDEV_EMULATION | 79 | #ifdef CONFIG_DRM_FBDEV_EMULATION |
80 | int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, | ||
81 | @@ -XXX,XX +XXX,XX @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, | ||
80 | void intel_fbdev_setup(struct drm_i915_private *dev_priv); | 82 | void intel_fbdev_setup(struct drm_i915_private *dev_priv); |
81 | void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous); | ||
82 | struct intel_framebuffer *intel_fbdev_framebuffer(struct intel_fbdev *fbdev); | 83 | struct intel_framebuffer *intel_fbdev_framebuffer(struct intel_fbdev *fbdev); |
83 | struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev); | 84 | struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev); |
84 | - | 85 | - |
85 | +void intel_fbdev_get_map(struct intel_fbdev *fbdev, struct iosys_map *map); | 86 | +void intel_fbdev_get_map(struct intel_fbdev *fbdev, struct iosys_map *map); |
86 | #else | 87 | #else |
87 | static inline void intel_fbdev_setup(struct drm_i915_private *dev_priv) | 88 | #define INTEL_FBDEV_DRIVER_OPS \ |
88 | { | 89 | .fbdev_probe = NULL |
89 | @@ -XXX,XX +XXX,XX @@ static inline struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev | 90 | @@ -XXX,XX +XXX,XX @@ static inline struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev |
90 | return NULL; | 91 | return NULL; |
91 | } | 92 | } |
92 | 93 | ||
93 | +static inline void intel_fbdev_get_map(struct intel_fbdev *fbdev, struct iosys_map *map) | 94 | +static inline void intel_fbdev_get_map(struct intel_fbdev *fbdev, struct iosys_map *map) |
... | ... | ||
124 | +void intel_fb_get_map(struct i915_vma *vma, struct iosys_map *map) | 125 | +void intel_fb_get_map(struct i915_vma *vma, struct iosys_map *map) |
125 | +{ | 126 | +{ |
126 | + *map = vma->bo->vmap; | 127 | + *map = vma->bo->vmap; |
127 | +} | 128 | +} |
128 | -- | 129 | -- |
129 | 2.47.1 | 130 | 2.49.0 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
61 | + void (*disable_tiling)(struct intel_plane *plane); | 61 | + void (*disable_tiling)(struct intel_plane *plane); |
62 | }; | 62 | }; |
63 | 63 | ||
64 | #define to_intel_atomic_state(x) container_of(x, struct intel_atomic_state, base) | 64 | #define to_intel_atomic_state(x) container_of(x, struct intel_atomic_state, base) |
65 | -- | 65 | -- |
66 | 2.47.1 | 66 | 2.49.0 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
44 | + plane->disable_tiling = skl_disable_tiling; | 44 | + plane->disable_tiling = skl_disable_tiling; |
45 | 45 | ||
46 | if (DISPLAY_VER(display) >= 13) | 46 | if (DISPLAY_VER(display) >= 13) |
47 | plane->max_stride = adl_plane_max_stride; | 47 | plane->max_stride = adl_plane_max_stride; |
48 | -- | 48 | -- |
49 | 2.47.1 | 49 | 2.49.0 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
109 | + ret = ttm_bo_vmap(&bo->ttm, map); | 109 | + ret = ttm_bo_vmap(&bo->ttm, map); |
110 | + if (ret) | 110 | + if (ret) |
111 | + iosys_map_clear(map); | 111 | + iosys_map_clear(map); |
112 | +} | 112 | +} |
113 | -- | 113 | -- |
114 | 2.47.1 | 114 | 2.49.0 | diff view generated by jsdifflib |
1 | This adds drm_panic support for a wide range of Intel GPU. I've | 1 | This adds drm_panic support for a wide range of Intel GPU. I've |
---|---|---|---|
2 | tested it only on 4 laptops, Haswell (with 128MB of eDRAM), | 2 | tested it only on 4 laptops, Haswell (with 128MB of eDRAM), |
3 | Comet Lake, Alder Lake, and Lunar Lake. | 3 | Comet Lake, Raptor Lake, and Lunar Lake. |
4 | For hardware using DPT, it's not possible to disable tiling, as you | 4 | For hardware using DPT, it's not possible to disable tiling, as you |
5 | will need to reconfigure the way the GPU is accessing the | 5 | will need to reconfigure the way the GPU is accessing the |
6 | framebuffer. | 6 | framebuffer. |
7 | 7 | ||
8 | Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com> | 8 | Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com> |
9 | --- | 9 | --- |
10 | 10 | ||
11 | v4: | 11 | v4: |
12 | * Add support for Xe driver. | 12 | * Add support for Xe driver. |
13 | |||
14 | v6: | ||
15 | * Use struct intel_display instead of drm_i915_private for intel_atomic_plane.c | ||
13 | 16 | ||
14 | .../gpu/drm/i915/display/intel_atomic_plane.c | 79 ++++++++++++++++++- | 17 | .../gpu/drm/i915/display/intel_atomic_plane.c | 79 ++++++++++++++++++- |
15 | 1 file changed, 78 insertions(+), 1 deletion(-) | 18 | 1 file changed, 78 insertions(+), 1 deletion(-) |
16 | 19 | ||
17 | diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c | 20 | diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c |
... | ... | ||
24 | #include <linux/dma-resv.h> | 27 | #include <linux/dma-resv.h> |
25 | +#include <linux/iosys-map.h> | 28 | +#include <linux/iosys-map.h> |
26 | 29 | ||
27 | #include <drm/drm_atomic_helper.h> | 30 | #include <drm/drm_atomic_helper.h> |
28 | #include <drm/drm_blend.h> | 31 | #include <drm/drm_blend.h> |
32 | #include <drm/drm_damage_helper.h> | ||
29 | +#include <drm/drm_cache.h> | 33 | +#include <drm/drm_cache.h> |
30 | #include <drm/drm_fourcc.h> | 34 | #include <drm/drm_fourcc.h> |
31 | #include <drm/drm_gem.h> | 35 | #include <drm/drm_gem.h> |
32 | #include <drm/drm_gem_atomic_helper.h> | 36 | #include <drm/drm_gem_atomic_helper.h> |
33 | +#include <drm/drm_panic.h> | 37 | +#include <drm/drm_panic.h> |
34 | 38 | ||
35 | #include "i915_drv.h" | 39 | #include "gem/i915_gem_object.h" |
36 | #include "i915_config.h" | 40 | #include "i915_config.h" |
41 | @@ -XXX,XX +XXX,XX @@ | ||
42 | #include "i915_vma.h" | ||
37 | #include "i9xx_plane_regs.h" | 43 | #include "i9xx_plane_regs.h" |
38 | #include "intel_atomic_plane.h" | 44 | #include "intel_atomic_plane.h" |
39 | +#include "intel_bo.h" | 45 | +#include "intel_bo.h" |
40 | #include "intel_cdclk.h" | 46 | #include "intel_cdclk.h" |
41 | #include "intel_cursor.h" | 47 | #include "intel_cursor.h" |
... | ... | ||
44 | #include "intel_display_types.h" | 50 | #include "intel_display_types.h" |
45 | #include "intel_fb.h" | 51 | #include "intel_fb.h" |
46 | #include "intel_fb_pin.h" | 52 | #include "intel_fb_pin.h" |
47 | +#include "intel_fbdev.h" | 53 | +#include "intel_fbdev.h" |
48 | #include "skl_scaler.h" | 54 | #include "skl_scaler.h" |
55 | #include "skl_universal_plane.h" | ||
49 | #include "skl_watermark.h" | 56 | #include "skl_watermark.h" |
50 | |||
51 | @@ -XXX,XX +XXX,XX @@ intel_cleanup_plane_fb(struct drm_plane *plane, | 57 | @@ -XXX,XX +XXX,XX @@ intel_cleanup_plane_fb(struct drm_plane *plane, |
52 | intel_plane_unpin_fb(old_plane_state); | 58 | intel_plane_unpin_fb(old_plane_state); |
53 | } | 59 | } |
54 | 60 | ||
55 | +/* Only used by drm_panic get_scanout_buffer() and panic_flush(), so it is | 61 | +/* Only used by drm_panic get_scanout_buffer() and panic_flush(), so it is |
... | ... | ||
58 | +static struct iosys_map panic_map; | 64 | +static struct iosys_map panic_map; |
59 | + | 65 | + |
60 | +static void intel_panic_flush(struct drm_plane *plane) | 66 | +static void intel_panic_flush(struct drm_plane *plane) |
61 | +{ | 67 | +{ |
62 | + struct intel_plane_state *plane_state = to_intel_plane_state(plane->state); | 68 | + struct intel_plane_state *plane_state = to_intel_plane_state(plane->state); |
63 | + struct drm_i915_private *dev_priv = to_i915(plane->dev); | 69 | + struct intel_plane *iplane = to_intel_plane(plane); |
70 | + struct intel_display *display = to_intel_display(iplane); | ||
64 | + struct drm_framebuffer *fb = plane_state->hw.fb; | 71 | + struct drm_framebuffer *fb = plane_state->hw.fb; |
65 | + struct intel_plane *iplane = to_intel_plane(plane); | ||
66 | + | 72 | + |
67 | + /* Force a cache flush, otherwise the new pixels won't show up */ | 73 | + /* Force a cache flush, otherwise the new pixels won't show up */ |
68 | + drm_clflush_virt_range(panic_map.vaddr, fb->height * fb->pitches[0]); | 74 | + drm_clflush_virt_range(panic_map.vaddr, fb->height * fb->pitches[0]); |
69 | + | 75 | + |
70 | + /* Don't disable tiling if it's the fbdev framebuffer.*/ | 76 | + /* Don't disable tiling if it's the fbdev framebuffer.*/ |
71 | + if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(dev_priv->display.fbdev.fbdev)) | 77 | + if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(display->fbdev.fbdev)) { |
72 | + return; | 78 | + return; |
73 | + | 79 | + |
74 | + if (fb->modifier && iplane->disable_tiling) | 80 | + if (fb->modifier && iplane->disable_tiling) |
75 | + iplane->disable_tiling(iplane); | 81 | + iplane->disable_tiling(iplane); |
76 | +} | 82 | +} |
... | ... | ||
79 | + struct drm_scanout_buffer *sb) | 85 | + struct drm_scanout_buffer *sb) |
80 | +{ | 86 | +{ |
81 | + struct intel_plane_state *plane_state; | 87 | + struct intel_plane_state *plane_state; |
82 | + struct drm_gem_object *obj; | 88 | + struct drm_gem_object *obj; |
83 | + struct drm_framebuffer *fb; | 89 | + struct drm_framebuffer *fb; |
84 | + struct drm_i915_private *dev_priv = to_i915(plane->dev); | 90 | + struct intel_display *display = to_intel_display(plane->dev); |
85 | + | 91 | + |
86 | + if (!plane->state || !plane->state->fb || !plane->state->visible) | 92 | + if (!plane->state || !plane->state->fb || !plane->state->visible) |
87 | + return -ENODEV; | 93 | + return -ENODEV; |
88 | + | 94 | + |
89 | + plane_state = to_intel_plane_state(plane->state); | 95 | + plane_state = to_intel_plane_state(plane->state); |
90 | + fb = plane_state->hw.fb; | 96 | + fb = plane_state->hw.fb; |
91 | + obj = intel_fb_bo(fb); | 97 | + obj = intel_fb_bo(fb); |
92 | + if (!obj) | 98 | + if (!obj) |
93 | + return -ENODEV; | 99 | + return -ENODEV; |
94 | + | 100 | + |
95 | + iosys_map_clear(&panic_map); | 101 | + iosys_map_clear(&panic_map); |
96 | + if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(dev_priv->display.fbdev.fbdev)) { | 102 | + if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(display->fbdev.fbdev)) { |
97 | + intel_fbdev_get_map(dev_priv->display.fbdev.fbdev, &panic_map); | 103 | + intel_fbdev_get_map(display->fbdev.fbdev, &panic_map); |
98 | + } else { | 104 | + } else { |
99 | + /* Can't disable tiling if DPT is in use */ | 105 | + /* Can't disable tiling if DPT is in use */ |
100 | + if (intel_fb_uses_dpt(fb)) | 106 | + if (intel_fb_uses_dpt(fb)) |
101 | + return -EOPNOTSUPP; | 107 | + return -EOPNOTSUPP; |
102 | + | 108 | + |
... | ... | ||
135 | + drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs); | 141 | + drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs); |
136 | } | 142 | } |
137 | 143 | ||
138 | void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_state, | 144 | void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_state, |
139 | -- | 145 | -- |
140 | 2.47.1 | 146 | 2.49.0 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
4 | It's probably not safe to do that in the panic handler, but that's | 4 | It's probably not safe to do that in the panic handler, but that's |
5 | still better than nothing. | 5 | still better than nothing. |
6 | 6 | ||
7 | Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com> | 7 | Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com> |
8 | --- | 8 | --- |
9 | drivers/gpu/drm/i915/display/intel_atomic_plane.c | 9 ++++++++- | 9 | drivers/gpu/drm/i915/display/intel_atomic_plane.c | 7 +++++++ |
10 | 1 file changed, 8 insertions(+), 1 deletion(-) | 10 | 1 file changed, 7 insertions(+) |
11 | 11 | ||
12 | diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c | 12 | diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c |
13 | index XXXXXXX..XXXXXXX 100644 | 13 | index XXXXXXX..XXXXXXX 100644 |
14 | --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c | 14 | --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c |
15 | +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c | 15 | +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c |
16 | @@ -XXX,XX +XXX,XX @@ | 16 | @@ -XXX,XX +XXX,XX @@ |
17 | #include "intel_fb.h" | 17 | #include "intel_fb.h" |
18 | #include "intel_fb_pin.h" | 18 | #include "intel_fb_pin.h" |
19 | #include "intel_fbdev.h" | 19 | #include "intel_fbdev.h" |
20 | +#include "intel_frontbuffer.h" | 20 | +#include "intel_frontbuffer.h" |
21 | #include "skl_scaler.h" | 21 | #include "skl_scaler.h" |
22 | #include "skl_universal_plane.h" | ||
22 | #include "skl_watermark.h" | 23 | #include "skl_watermark.h" |
23 | |||
24 | @@ -XXX,XX +XXX,XX @@ static void intel_panic_flush(struct drm_plane *plane) | 24 | @@ -XXX,XX +XXX,XX @@ static void intel_panic_flush(struct drm_plane *plane) |
25 | drm_clflush_virt_range(panic_map.vaddr, fb->height * fb->pitches[0]); | ||
26 | 25 | ||
27 | /* Don't disable tiling if it's the fbdev framebuffer.*/ | 26 | /* Don't disable tiling if it's the fbdev framebuffer.*/ |
28 | - if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(dev_priv->display.fbdev.fbdev)) | 27 | if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(display->fbdev.fbdev)) { |
29 | + if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(dev_priv->display.fbdev.fbdev)) { | ||
30 | + struct intel_frontbuffer *front = to_intel_frontbuffer(fb); | 28 | + struct intel_frontbuffer *front = to_intel_frontbuffer(fb); |
31 | + struct drm_gem_object *obj = intel_fb_bo(fb); | 29 | + struct drm_gem_object *obj = intel_fb_bo(fb); |
32 | + | 30 | + |
33 | + intel_bo_flush_if_display(obj); | 31 | + intel_bo_flush_if_display(obj); |
34 | + intel_frontbuffer_flush(front, ORIGIN_DIRTYFB); | 32 | + intel_frontbuffer_flush(front, ORIGIN_DIRTYFB); |
35 | return; | 33 | return; |
36 | + } | 34 | + } |
37 | 35 | ||
38 | if (fb->modifier && iplane->disable_tiling) | 36 | if (fb->modifier && iplane->disable_tiling) |
39 | iplane->disable_tiling(iplane); | 37 | iplane->disable_tiling(iplane); |
40 | -- | 38 | -- |
41 | 2.47.1 | 39 | 2.49.0 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
81 | + | 81 | + |
82 | static int intel_get_scanout_buffer(struct drm_plane *plane, | 82 | static int intel_get_scanout_buffer(struct drm_plane *plane, |
83 | struct drm_scanout_buffer *sb) | 83 | struct drm_scanout_buffer *sb) |
84 | { | 84 | { |
85 | @@ -XXX,XX +XXX,XX @@ static int intel_get_scanout_buffer(struct drm_plane *plane, | 85 | @@ -XXX,XX +XXX,XX @@ static int intel_get_scanout_buffer(struct drm_plane *plane, |
86 | intel_fbdev_get_map(dev_priv->display.fbdev.fbdev, &panic_map); | 86 | intel_fbdev_get_map(display->fbdev.fbdev, &panic_map); |
87 | } else { | 87 | } else { |
88 | /* Can't disable tiling if DPT is in use */ | 88 | /* Can't disable tiling if DPT is in use */ |
89 | - if (intel_fb_uses_dpt(fb)) | 89 | - if (intel_fb_uses_dpt(fb)) |
90 | - return -EOPNOTSUPP; | 90 | - return -EOPNOTSUPP; |
91 | + if (intel_fb_uses_dpt(fb)) { | 91 | + if (intel_fb_uses_dpt(fb)) { |
... | ... | ||
140 | + } | 140 | + } |
141 | intel_de_write_fw(display, PLANE_CTL(plane->pipe, plane->id), plane_ctl); | 141 | intel_de_write_fw(display, PLANE_CTL(plane->pipe, plane->id), plane_ctl); |
142 | 142 | ||
143 | intel_de_write_fw(display, PLANE_SURF(plane->pipe, plane->id), | 143 | intel_de_write_fw(display, PLANE_SURF(plane->pipe, plane->id), |
144 | -- | 144 | -- |
145 | 2.47.1 | 145 | 2.49.0 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
54 | + case I915_FORMAT_MOD_X_TILED: | 54 | + case I915_FORMAT_MOD_X_TILED: |
55 | case I915_FORMAT_MOD_Yf_TILED: | 55 | case I915_FORMAT_MOD_Yf_TILED: |
56 | case I915_FORMAT_MOD_Yf_TILED_CCS: | 56 | case I915_FORMAT_MOD_Yf_TILED_CCS: |
57 | default: | 57 | default: |
58 | -- | 58 | -- |
59 | 2.47.1 | 59 | 2.49.0 | diff view generated by jsdifflib |