diff options
author | Dave Airlie <airlied@redhat.com> | 2018-09-27 19:37:51 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-09-27 19:37:55 -0400 |
commit | db9825c95498280718c4687fcf712016f5b6f5f6 (patch) | |
tree | 01661a811bcd16a7b6f3ee9790e77da75fd178b0 /drivers/gpu/drm/i915/intel_atomic_plane.c | |
parent | 156e60bc71aa31a3b42b1d66a822c2999bd0994c (diff) | |
parent | 448626103dad54ec5d06722e955586b5d557625d (diff) |
Merge tag 'drm-intel-next-2018-09-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
Driver Changes:
- Bugzilla 107600: Fix stuttering video playback on MythTV on old hardware (Chris)
- Avoid black screen when using CSC coefficient matrix (Raviraj)
- Hammer PDs on Baytrail to make sure they reload (Chris)
- Capture some objects if unable to capture all, on error (Chris)
- Add W/A for 16 GB DIMMs on SKL+ (Mahesh)
- Only enable IPC for symmetric memory configurations on KBL+ (Mahesh)
- Assume pipe A to have maximum stride limits (Ville)
- Always update update OA contexts via context image (Tvrtko)
- Icelake enabling patches (Madhav, Dhinakaran)
- Add Icelake DMC firmware (Anusha)
- Fixes for CI found corner cases (Chris)
- Limit the backpressure for request allocation (Chris)
- Park GPU on module load so usage starts from known state (Chris)
- Flush tasklet when checking for idle (Chris)
- Use coherent write into the context image on BSW+ (Chris)
- Fix possible integer overflow for framebuffers that get aligned past 4GiB (Ville)
- Downgrade fence timeout from warn to notice and add debug hint (Chris)
- Fixes to multi function encoder code (Ville)
- Fix sprite plane check logic (Dan, Ville)
- PAGE_SIZE vs. I915_GTT_PAGE_SIZE fixes (Ville)
- Decode memory bandwidth and parameters for BXT and SKL+ (Mahesh)
- Overwrite BIOS set IPC value from KMS (Mahesh)
- Multiple pipe handling code cleanups/restructurings/optimizations (Ville)
- Spare low 4G address for non-48bit objects (Chris)
- Free context_setparam of struct_mutex (Chris)
- Delay updating ring register state on resume (Chris)
- Avoid unnecessarily copying overlay IOCTL parameters (Chris)
- Update GuC power domain states even without submission (Michal)
- Restore GuC preempt-context across S3/S4 (Chris)
- Add kernel selftest for rapid context switching (Chris)
- Keep runtime power management ref for live selftests (Chris)
- GEM code cleanups (Matt)
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180927095933.GA11458@jlahtine-desk.ger.corp.intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_atomic_plane.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_atomic_plane.c | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c index fa7df5fe154b..aabebe0d2e9b 100644 --- a/drivers/gpu/drm/i915/intel_atomic_plane.c +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c | |||
@@ -113,71 +113,18 @@ int intel_plane_atomic_check_with_state(const struct intel_crtc_state *old_crtc_ | |||
113 | struct intel_plane_state *intel_state) | 113 | struct intel_plane_state *intel_state) |
114 | { | 114 | { |
115 | struct drm_plane *plane = intel_state->base.plane; | 115 | struct drm_plane *plane = intel_state->base.plane; |
116 | struct drm_i915_private *dev_priv = to_i915(plane->dev); | ||
117 | struct drm_plane_state *state = &intel_state->base; | 116 | struct drm_plane_state *state = &intel_state->base; |
118 | struct intel_plane *intel_plane = to_intel_plane(plane); | 117 | struct intel_plane *intel_plane = to_intel_plane(plane); |
119 | const struct drm_display_mode *adjusted_mode = | ||
120 | &crtc_state->base.adjusted_mode; | ||
121 | int ret; | 118 | int ret; |
122 | 119 | ||
123 | if (!intel_state->base.crtc && !old_plane_state->base.crtc) | 120 | if (!intel_state->base.crtc && !old_plane_state->base.crtc) |
124 | return 0; | 121 | return 0; |
125 | 122 | ||
126 | if (state->fb && drm_rotation_90_or_270(state->rotation)) { | ||
127 | struct drm_format_name_buf format_name; | ||
128 | |||
129 | if (state->fb->modifier != I915_FORMAT_MOD_Y_TILED && | ||
130 | state->fb->modifier != I915_FORMAT_MOD_Yf_TILED) { | ||
131 | DRM_DEBUG_KMS("Y/Yf tiling required for 90/270!\n"); | ||
132 | return -EINVAL; | ||
133 | } | ||
134 | |||
135 | /* | ||
136 | * 90/270 is not allowed with RGB64 16:16:16:16, | ||
137 | * RGB 16-bit 5:6:5, and Indexed 8-bit. | ||
138 | * TBD: Add RGB64 case once its added in supported format list. | ||
139 | */ | ||
140 | switch (state->fb->format->format) { | ||
141 | case DRM_FORMAT_C8: | ||
142 | case DRM_FORMAT_RGB565: | ||
143 | DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", | ||
144 | drm_get_format_name(state->fb->format->format, | ||
145 | &format_name)); | ||
146 | return -EINVAL; | ||
147 | |||
148 | default: | ||
149 | break; | ||
150 | } | ||
151 | } | ||
152 | |||
153 | /* CHV ignores the mirror bit when the rotate bit is set :( */ | ||
154 | if (IS_CHERRYVIEW(dev_priv) && | ||
155 | state->rotation & DRM_MODE_ROTATE_180 && | ||
156 | state->rotation & DRM_MODE_REFLECT_X) { | ||
157 | DRM_DEBUG_KMS("Cannot rotate and reflect at the same time\n"); | ||
158 | return -EINVAL; | ||
159 | } | ||
160 | |||
161 | intel_state->base.visible = false; | 123 | intel_state->base.visible = false; |
162 | ret = intel_plane->check_plane(crtc_state, intel_state); | 124 | ret = intel_plane->check_plane(crtc_state, intel_state); |
163 | if (ret) | 125 | if (ret) |
164 | return ret; | 126 | return ret; |
165 | 127 | ||
166 | /* | ||
167 | * Y-tiling is not supported in IF-ID Interlace mode in | ||
168 | * GEN9 and above. | ||
169 | */ | ||
170 | if (state->fb && INTEL_GEN(dev_priv) >= 9 && crtc_state->base.enable && | ||
171 | adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) { | ||
172 | if (state->fb->modifier == I915_FORMAT_MOD_Y_TILED || | ||
173 | state->fb->modifier == I915_FORMAT_MOD_Yf_TILED || | ||
174 | state->fb->modifier == I915_FORMAT_MOD_Y_TILED_CCS || | ||
175 | state->fb->modifier == I915_FORMAT_MOD_Yf_TILED_CCS) { | ||
176 | DRM_DEBUG_KMS("Y/Yf tiling not supported in IF-ID mode\n"); | ||
177 | return -EINVAL; | ||
178 | } | ||
179 | } | ||
180 | |||
181 | /* FIXME pre-g4x don't work like this */ | 128 | /* FIXME pre-g4x don't work like this */ |
182 | if (state->visible) | 129 | if (state->visible) |
183 | crtc_state->active_planes |= BIT(intel_plane->id); | 130 | crtc_state->active_planes |= BIT(intel_plane->id); |