WSL2-Linux-Kernel/drivers/gpu/drm/i915
Ville Syrjälä 8d970654b7 drm/i915: Deal with NV12 CbCr plane AUX surface on SKL+
With NV12 we have two color planes to deal with so we must compute the
surface and x/y offsets for the second plane as well.

What makes this a bit nasty is that the hardware expects the surface
offset to be specified as a distance from the main surface offset.
What's worse, the distance must be non-negative (no neat wraparound or
anything). So we must make sure that the main surface offset is always
less or equal to the AUX surface offset. We do that by computing the AUX
offset first and the main surface offset second. If the main surface
offset ends up being above the AUX offset, we just push it down as far
as is required while still maintaining the required alignment etc.

Fortunately the AUX offset only reuqires 4K alignment, so we don't need
to do any of the backwards searching for an acceptable offset that we
must do for the main surface. And X tiled + NV12 isn't a supported
combination anyway.

Note that this just computes aux surface offsets, we do not yet program
them into the actual hardware registers, and hence we can't yet expose
NV12.

v2: Rebase due to drm_plane_state src/dst rects
    s/TODO.../something else/ in the commit message/ (Daniel)

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470821001-25272-12-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-08-11 18:35:23 +03:00
..
gvt drm/i915: gvt: Introduce the basic architecture of GVT-g 2016-06-17 20:35:06 +01:00
Kconfig drm/i915: gvt: Introduce the basic architecture of GVT-g 2016-06-17 20:35:06 +01:00
Kconfig.debug drm/i915: Select DRM_VGEM for igt 2016-07-10 13:22:39 +01:00
Makefile drm/i915: Refactor activity tracking for requests 2016-08-04 08:09:25 +01:00
dvo.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915/cmdparser: Remove stray intel_engine_cs *ring 2016-07-27 16:23:05 +01:00
i915_debugfs.c drm/i915: Store number of active engines in device info 2016-08-11 11:33:10 +01:00
i915_drv.c drm/i915: Apply the PPS register unlock workaround more consistently 2016-08-10 16:01:42 +03:00
i915_drv.h drm/i915: Store number of active engines in device info 2016-08-11 11:33:10 +01:00
i915_gem.c drm/i915: Move missed interrupt detection from hangcheck to breadcrumbs 2016-08-10 10:37:35 +01:00
i915_gem.h
i915_gem_batch_pool.c drm/i915: Double check the active status on the batch pool 2016-08-04 20:19:50 +01:00
i915_gem_batch_pool.h drm/i915: Double check the active status on the batch pool 2016-08-04 20:19:50 +01:00
i915_gem_context.c drm/i915: Store number of active engines in device info 2016-08-11 11:33:10 +01:00
i915_gem_dmabuf.c drm/i915: Export our request as a dma-buf fence on the reservation object 2016-08-04 20:20:06 +01:00
i915_gem_dmabuf.h drm/i915: Serialise presentation with imported dmabufs 2016-06-17 10:32:26 +01:00
i915_gem_evict.c drm/i915: Enable i915_gem_wait_for_idle() without holding struct_mutex 2016-08-05 10:54:37 +01:00
i915_gem_execbuffer.c drm/i915: Move setting of request->batch into its single callsite 2016-08-10 16:07:52 +01:00
i915_gem_fence.c drm/i915: Repack fence tiling mode and stride into a single integer 2016-08-05 10:54:43 +01:00
i915_gem_gtt.c drm/i915: Rewrite fb rotation GTT handling 2016-08-11 18:32:46 +03:00
i915_gem_gtt.h drm/i915: Rewrite fb rotation GTT handling 2016-08-11 18:32:46 +03:00
i915_gem_render_state.c drm/i915: Remove highly confusing i915_gem_obj_ggtt_pin() 2016-08-04 20:20:00 +01:00
i915_gem_render_state.h drm/i915: Remove duplicate golden render state init from execlists 2016-08-02 22:58:30 +01:00
i915_gem_request.c drm/i915: Move setting of request->batch into its single callsite 2016-08-10 16:07:52 +01:00
i915_gem_request.h drm/i915: Move setting of request->batch into its single callsite 2016-08-10 16:07:52 +01:00
i915_gem_shrinker.c drm/i915: Remove unused no-shrinker-steal 2016-08-05 10:54:39 +01:00
i915_gem_stolen.c drm/i915: Account for TSEG size when determining 865G stolen base 2016-08-11 17:20:42 +03:00
i915_gem_tiling.c drm/i915: Repack fence tiling mode and stride into a single integer 2016-08-05 10:54:43 +01:00
i915_gem_userptr.c drm/i915/userptr: Remove superfluous interruptible=false on waiting 2016-08-05 10:54:36 +01:00
i915_gpu_error.c drm/i915: Repack fence tiling mode and stride into a single integer 2016-08-05 10:54:43 +01:00
i915_guc_reg.h
i915_guc_submission.c drm/i915/guc: use for_each_engine_id() where appropriate 2016-08-10 10:40:05 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Move missed interrupt detection from hangcheck to breadcrumbs 2016-08-10 10:37:35 +01:00
i915_params.c drm/i915: Add a way to test the modeset done during gpu reset, v3. 2016-08-05 23:28:28 +03:00
i915_params.h drm/i915: Add a way to test the modeset done during gpu reset, v3. 2016-08-05 23:28:28 +03:00
i915_pci.c drm/i915: Add missing ring_mask to Pineview 2016-07-29 16:22:42 +01:00
i915_pvinfo.h drm/i915: Use offsetof() to calculate the offset of members in PVINFO page 2016-06-17 19:44:25 +01:00
i915_reg.h drm/i915/lvds: Restore initial HW state during encoder enabling 2016-08-10 16:00:47 +03:00
i915_suspend.c drm/i915: Remove LVDS and PPS suspend time save/restore 2016-08-10 16:02:14 +03:00
i915_sysfs.c drm/i915: Fix up some stray to_i915(dev) after a recent merge 2016-07-28 07:28:17 +01:00
i915_trace.h drm/i915: Remove surplus drm_device parameter to i915_gem_evict_something() 2016-08-04 20:19:50 +01:00
i915_trace_points.c
i915_vgpu.c drm/i915: Update missing kerneldoc 2016-07-19 10:34:24 +02:00
i915_vgpu.h drm/i915: Fold vGPU active check into inner functions 2016-06-17 19:44:29 +01:00
intel_acpi.c
intel_atomic.c
intel_atomic_plane.c
intel_audio.c drm/i915: Acquire audio powerwell for HD-Audio registers 2016-08-04 18:17:20 +01:00
intel_bios.c drm/i915: Convert dev_priv->dev backpointers to dev_priv->drm 2016-07-05 11:58:45 +01:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Use RCU to annotate and enforce protection for breadcrumb's bh 2016-08-10 10:37:49 +01:00
intel_color.c drm/i915: Kill has_dsi_encoder 2016-07-07 13:10:20 +03:00
intel_crt.c drm/i915/vlv: Disable HPD in valleyview_crt_detect_hotplug() 2016-07-19 09:17:09 +02:00
intel_csr.c Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next-queued 2016-08-05 10:36:15 +02:00
intel_ddi.c Revert "drm/i915: Track active streams also for DP SST" 2016-08-05 19:20:31 +03:00
intel_device_info.c drm/i915: Split out runtime configuration of device info to its own file 2016-07-05 11:53:27 +01:00
intel_display.c drm/i915: Deal with NV12 CbCr plane AUX surface on SKL+ 2016-08-11 18:35:23 +03:00
intel_dp.c drm/i915: Apply the PPS register unlock workaround more consistently 2016-08-10 16:01:42 +03:00
intel_dp_aux_backlight.c
intel_dp_link_training.c drm/i915: Revert DisplayPort fast link training feature 2016-06-21 19:45:03 +03:00
intel_dp_mst.c Revert "drm/i915: Track active streams also for DP SST" 2016-08-05 19:20:31 +03:00
intel_dpio_phy.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_dpll_mgr.c drm/i915: s/INTEL_OUTPUT_DISPLAYPORT/INTEL_OUTPUT_DP/ 2016-07-07 13:10:16 +03:00
intel_dpll_mgr.h
intel_drv.h drm/i915: Deal with NV12 CbCr plane AUX surface on SKL+ 2016-08-11 18:35:23 +03:00
intel_dsi.c drm/i915: Kill has_dsi_encoder 2016-07-07 13:10:20 +03:00
intel_dsi.h
intel_dsi_dcs_backlight.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_dsi_panel_vbt.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_dsi_pll.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_dvo.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_engine_cs.c drm/i915: Store number of active engines in device info 2016-08-11 11:33:10 +01:00
intel_fbc.c drm/i915: Repack fence tiling mode and stride into a single integer 2016-08-05 10:54:43 +01:00
intel_fbdev.c drm/i915: Separate intel_frontbuffer into its own header 2016-08-04 20:20:01 +01:00
intel_fifo_underrun.c drm/i915: Convert dev_priv->dev backpointers to dev_priv->drm 2016-07-05 11:58:45 +01:00
intel_frontbuffer.c drm/i915: Use dev_priv consistently through the intel_frontbuffer interface 2016-08-04 20:20:03 +01:00
intel_frontbuffer.h drm/i915: Use dev_priv consistently through the intel_frontbuffer interface 2016-08-04 20:20:03 +01:00
intel_guc.h drm/i915/guc: re-optimise i915_guc_client layout 2016-08-10 10:40:05 +01:00
intel_guc_fwif.h
intel_guc_loader.c drm/i915/guc: Consolidate firmware major-minor to one place 2016-08-11 11:34:04 +01:00
intel_gvt.c drm/i915/gvt: Mark i915.enable_gvt as false if loading fails 2016-06-21 12:40:13 +01:00
intel_gvt.h drm/i915: gvt: Introduce the basic architecture of GVT-g 2016-06-17 20:35:06 +01:00
intel_hdmi.c drm/i915: Simplify hdmi_12bpc_possible() 2016-07-07 13:10:24 +03:00
intel_hotplug.c drm/i915: Update missing kerneldoc 2016-07-19 10:34:24 +02:00
intel_i2c.c drm/i915: Convert dev_priv->dev backpointers to dev_priv->drm 2016-07-05 11:58:45 +01:00
intel_lrc.c drm/i915: Mark unmappable GGTT entries as PIN_HIGH 2016-08-10 16:07:51 +01:00
intel_lrc.h drm/i915: Unify legacy/execlists submit_execbuf callbacks 2016-08-02 22:58:31 +01:00
intel_lvds.c drm/i915: Apply the PPS register unlock workaround more consistently 2016-08-10 16:01:42 +03:00
intel_mocs.c drm/i915: Rename struct intel_ringbuffer to struct intel_ring 2016-08-02 22:58:16 +01:00
intel_mocs.h drm/i915: rename 'ring' where it refers to an engine or engine_id 2016-07-21 09:59:41 +01:00
intel_modes.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_opregion.c Linux 4.7 2016-07-26 17:26:29 +10:00
intel_overlay.c drm/i915: Repack fence tiling mode and stride into a single integer 2016-08-05 10:54:43 +01:00
intel_panel.c drm/i915: Introduce Kabypoint PCH for Kabylake H/DT. 2016-07-15 15:51:30 +03:00
intel_pm.c drm/i915: Fix nesting of rps.mutex and struct_mutex during powersave init 2016-08-10 16:07:36 +01:00
intel_psr.c drm/i915: Use dev_priv consistently through the intel_frontbuffer interface 2016-08-04 20:20:03 +01:00
intel_renderstate.h drm/i915: Remove duplicate golden render state init from execlists 2016-08-02 22:58:30 +01:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Store number of active engines in device info 2016-08-11 11:33:10 +01:00
intel_ringbuffer.h drm/i915: Use RCU to annotate and enforce protection for breadcrumb's bh 2016-08-10 10:37:49 +01:00
intel_runtime_pm.c drm/i915: Apply the PPS register unlock workaround more consistently 2016-08-10 16:01:42 +03:00
intel_sdvo.c drm/i915: Convert dev_priv->dev backpointers to dev_priv->drm 2016-07-05 11:58:45 +01:00
intel_sdvo_regs.h
intel_sideband.c drm/i915: Convert wait_for(I915_READ(reg)) to intel_wait_for_register() 2016-06-30 15:42:33 +01:00
intel_sprite.c drm/i915: Compute display surface offset in the plane check hook for SKL+ 2016-08-11 18:35:10 +03:00
intel_tv.c drm/i915: Mass convert dev->dev_private to to_i915(dev) 2016-07-04 12:54:07 +01:00
intel_uncore.c Revert "drm/i915: Enable RC6 immediately" 2016-07-21 21:43:19 +01:00
intel_vbt_defs.h drm/i915: Extract physical display dimensions from VBT 2016-06-10 10:41:15 +03:00