diff options
author | Dave Airlie <airlied@redhat.com> | 2016-02-04 23:43:35 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-02-04 23:43:35 -0500 |
commit | 87d0f93961b201997b0d2d41af259e794a4e41b9 (patch) | |
tree | 1e9d723c5c0806ac3d186a6ad40f2fcdb5034a56 | |
parent | 36f90b0a2ddd60823fe193a85e60ff1906c2a9b3 (diff) | |
parent | f2e305108faba0c85eb4ba4066599decb675117e (diff) |
Merge tag 'drm-intel-fixes-2016-02-04' of git://anongit.freedesktop.org/drm-intel into drm-fixes
misc i915 fixes.
* tag 'drm-intel-fixes-2016-02-04' of git://anongit.freedesktop.org/drm-intel:
drm/i915: refine qemu south bridge detection
drm/i915: Remove select to deleted STOP_MACHINE from Kconfig
drm/i915: Fix NULL plane->fb oops on SKL
drm/i915: Don't reject primary plane windowing with color keying enabled on SKL+
drm/i915/dp: fall back to 18 bpp when sink capability is unknown
drm/i915: Make sure DC writes are coherent on flush.
-rw-r--r-- | drivers/gpu/drm/i915/Kconfig | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 33 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_lrc.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 2 |
5 files changed, 28 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig index fcd77b27514d..051eab33e4c7 100644 --- a/drivers/gpu/drm/i915/Kconfig +++ b/drivers/gpu/drm/i915/Kconfig | |||
@@ -10,7 +10,6 @@ config DRM_I915 | |||
10 | # the shmem_readpage() which depends upon tmpfs | 10 | # the shmem_readpage() which depends upon tmpfs |
11 | select SHMEM | 11 | select SHMEM |
12 | select TMPFS | 12 | select TMPFS |
13 | select STOP_MACHINE | ||
14 | select DRM_KMS_HELPER | 13 | select DRM_KMS_HELPER |
15 | select DRM_PANEL | 14 | select DRM_PANEL |
16 | select DRM_MIPI_DSI | 15 | select DRM_MIPI_DSI |
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 3ac616d7363b..f357058c74d9 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -501,7 +501,9 @@ void intel_detect_pch(struct drm_device *dev) | |||
501 | WARN_ON(!IS_SKYLAKE(dev) && | 501 | WARN_ON(!IS_SKYLAKE(dev) && |
502 | !IS_KABYLAKE(dev)); | 502 | !IS_KABYLAKE(dev)); |
503 | } else if ((id == INTEL_PCH_P2X_DEVICE_ID_TYPE) || | 503 | } else if ((id == INTEL_PCH_P2X_DEVICE_ID_TYPE) || |
504 | (id == INTEL_PCH_QEMU_DEVICE_ID_TYPE)) { | 504 | ((id == INTEL_PCH_QEMU_DEVICE_ID_TYPE) && |
505 | pch->subsystem_vendor == 0x1af4 && | ||
506 | pch->subsystem_device == 0x1100)) { | ||
505 | dev_priv->pch_type = intel_virt_detect_pch(dev); | 507 | dev_priv->pch_type = intel_virt_detect_pch(dev); |
506 | } else | 508 | } else |
507 | continue; | 509 | continue; |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 2f00828ccc6e..5feb65725c04 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -2946,7 +2946,7 @@ u32 intel_plane_obj_offset(struct intel_plane *intel_plane, | |||
2946 | struct i915_vma *vma; | 2946 | struct i915_vma *vma; |
2947 | u64 offset; | 2947 | u64 offset; |
2948 | 2948 | ||
2949 | intel_fill_fb_ggtt_view(&view, intel_plane->base.fb, | 2949 | intel_fill_fb_ggtt_view(&view, intel_plane->base.state->fb, |
2950 | intel_plane->base.state); | 2950 | intel_plane->base.state); |
2951 | 2951 | ||
2952 | vma = i915_gem_obj_to_ggtt_view(obj, &view); | 2952 | vma = i915_gem_obj_to_ggtt_view(obj, &view); |
@@ -12075,11 +12075,21 @@ connected_sink_compute_bpp(struct intel_connector *connector, | |||
12075 | pipe_config->pipe_bpp = connector->base.display_info.bpc*3; | 12075 | pipe_config->pipe_bpp = connector->base.display_info.bpc*3; |
12076 | } | 12076 | } |
12077 | 12077 | ||
12078 | /* Clamp bpp to 8 on screens without EDID 1.4 */ | 12078 | /* Clamp bpp to default limit on screens without EDID 1.4 */ |
12079 | if (connector->base.display_info.bpc == 0 && bpp > 24) { | 12079 | if (connector->base.display_info.bpc == 0) { |
12080 | DRM_DEBUG_KMS("clamping display bpp (was %d) to default limit of 24\n", | 12080 | int type = connector->base.connector_type; |
12081 | bpp); | 12081 | int clamp_bpp = 24; |
12082 | pipe_config->pipe_bpp = 24; | 12082 | |
12083 | /* Fall back to 18 bpp when DP sink capability is unknown. */ | ||
12084 | if (type == DRM_MODE_CONNECTOR_DisplayPort || | ||
12085 | type == DRM_MODE_CONNECTOR_eDP) | ||
12086 | clamp_bpp = 18; | ||
12087 | |||
12088 | if (bpp > clamp_bpp) { | ||
12089 | DRM_DEBUG_KMS("clamping display bpp (was %d) to default limit of %d\n", | ||
12090 | bpp, clamp_bpp); | ||
12091 | pipe_config->pipe_bpp = clamp_bpp; | ||
12092 | } | ||
12083 | } | 12093 | } |
12084 | } | 12094 | } |
12085 | 12095 | ||
@@ -13883,11 +13893,12 @@ intel_check_primary_plane(struct drm_plane *plane, | |||
13883 | int max_scale = DRM_PLANE_HELPER_NO_SCALING; | 13893 | int max_scale = DRM_PLANE_HELPER_NO_SCALING; |
13884 | bool can_position = false; | 13894 | bool can_position = false; |
13885 | 13895 | ||
13886 | /* use scaler when colorkey is not required */ | 13896 | if (INTEL_INFO(plane->dev)->gen >= 9) { |
13887 | if (INTEL_INFO(plane->dev)->gen >= 9 && | 13897 | /* use scaler when colorkey is not required */ |
13888 | state->ckey.flags == I915_SET_COLORKEY_NONE) { | 13898 | if (state->ckey.flags == I915_SET_COLORKEY_NONE) { |
13889 | min_scale = 1; | 13899 | min_scale = 1; |
13890 | max_scale = skl_max_scale(to_intel_crtc(crtc), crtc_state); | 13900 | max_scale = skl_max_scale(to_intel_crtc(crtc), crtc_state); |
13901 | } | ||
13891 | can_position = true; | 13902 | can_position = true; |
13892 | } | 13903 | } |
13893 | 13904 | ||
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index 3aa614731d7e..f1fa756c5d5d 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c | |||
@@ -1707,6 +1707,7 @@ static int gen8_emit_flush_render(struct drm_i915_gem_request *request, | |||
1707 | if (flush_domains) { | 1707 | if (flush_domains) { |
1708 | flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; | 1708 | flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; |
1709 | flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; | 1709 | flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; |
1710 | flags |= PIPE_CONTROL_DC_FLUSH_ENABLE; | ||
1710 | flags |= PIPE_CONTROL_FLUSH_ENABLE; | 1711 | flags |= PIPE_CONTROL_FLUSH_ENABLE; |
1711 | } | 1712 | } |
1712 | 1713 | ||
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 339701d7a9a5..40c6aff57256 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
@@ -331,6 +331,7 @@ gen7_render_ring_flush(struct drm_i915_gem_request *req, | |||
331 | if (flush_domains) { | 331 | if (flush_domains) { |
332 | flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; | 332 | flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; |
333 | flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; | 333 | flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; |
334 | flags |= PIPE_CONTROL_DC_FLUSH_ENABLE; | ||
334 | flags |= PIPE_CONTROL_FLUSH_ENABLE; | 335 | flags |= PIPE_CONTROL_FLUSH_ENABLE; |
335 | } | 336 | } |
336 | if (invalidate_domains) { | 337 | if (invalidate_domains) { |
@@ -403,6 +404,7 @@ gen8_render_ring_flush(struct drm_i915_gem_request *req, | |||
403 | if (flush_domains) { | 404 | if (flush_domains) { |
404 | flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; | 405 | flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; |
405 | flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; | 406 | flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; |
407 | flags |= PIPE_CONTROL_DC_FLUSH_ENABLE; | ||
406 | flags |= PIPE_CONTROL_FLUSH_ENABLE; | 408 | flags |= PIPE_CONTROL_FLUSH_ENABLE; |
407 | } | 409 | } |
408 | if (invalidate_domains) { | 410 | if (invalidate_domains) { |