linux/drivers/gpu/drm/i915
Maarten Lankhorst b208152556 drm/i915: Add plane alpha blending support, v2.
Add plane alpha blending support with the different blend modes.
This has been tested on a icl to show the correct results,
on earlier platforms small rounding errors cause issues. But this
already happens case with fully transparant or fully opaque RGB8888
fb's.

The recommended HW workaround is to disable alpha blending when the
plane alpha is 0 (transparant, hide plane) or 0xff (opaque, disable blending).
This is easy to implement on any platform, so just do that.

The tests for userspace are also available, and pass on gen11.

Changes since v1:
- Change mistaken < 0xff0 to 0xff00.
- Only set PLANE_KEYMSK_ALPHA_ENABLE when plane alpha < 0xff00, ignore blend mode.
- Rework disabling FBC when per pixel alpha is used.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
[mlankhorst: Change MISSING_CASE default to explicit alpha disable (mattrope)]
Link: https://patchwork.freedesktop.org/patch/msgid/20180815103405.22679-1-maarten.lankhorst@linux.intel.com
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
2018-10-02 12:48:16 +02:00
..
gvt Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10:00
selftests drm/i915: Reserve some priority bits for internal use 2018-10-01 15:26:19 +01:00
dvo_ch7xxx.c drm/i915/dvo: switch to kernel unsigned int types 2018-06-18 14:45:58 +03:00
dvo_ch7017.c drm/i915/dvo: switch to kernel unsigned int types 2018-06-18 14:45:58 +03:00
dvo_ivch.c drm/i915/dvo: switch to kernel unsigned int types 2018-06-18 14:45:58 +03:00
dvo_ns2501.c drm/i915/dvo: switch to kernel unsigned int types 2018-06-18 14:45:58 +03:00
dvo_sil164.c drm/i915/dvo: switch to kernel unsigned int types 2018-06-18 14:45:58 +03:00
dvo_tfp410.c drm/i915/dvo: switch to kernel unsigned int types 2018-06-18 14:45:58 +03:00
dvo.h
i915_cmd_parser.c
i915_debugfs.c drm/i915: Missed interrupt simulation is no more, tell the world 2018-09-07 14:38:48 +01:00
i915_drv.c drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
i915_drv.h drm/i915: Add plane alpha blending support, v2. 2018-10-02 12:48:16 +02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_clflush.c drm/i915: Remove unecessary dma_fence_ops 2018-08-17 11:22:15 +02:00
i915_gem_clflush.h
i915_gem_context.c drm/i915: Reserve some priority bits for internal use 2018-10-01 15:26:19 +01:00
i915_gem_context.h drm/i915: Nuke struct_mutex from context_setparam 2018-09-11 20:42:56 +01:00
i915_gem_dmabuf.c dma-buf: remove kmap_atomic interface 2018-06-20 15:59:34 +02:00
i915_gem_evict.c drm/i915: Provide a timeout to i915_gem_wait_for_idle() 2018-07-09 13:55:41 +01:00
i915_gem_execbuffer.c Merge drm/drm-next into drm-intel-next-queued 2018-09-26 11:24:04 +03:00
i915_gem_fence_reg.c
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
i915_gem_gtt.h drm/i915: Explicitly mark Global GTT address spaces 2018-09-01 10:25:38 +01:00
i915_gem_internal.c
i915_gem_object.c
i915_gem_object.h drm/i915: Mark up object tiling-and-stride getters as const 2018-07-26 12:31:02 +01:00
i915_gem_render_state.c drm/i915: Start returning an error from i915_vma_move_to_active() 2018-07-06 18:22:37 +01:00
i915_gem_render_state.h
i915_gem_shrinker.c drm/i915: Introduce i915_address_space.mutex 2018-07-11 13:56:16 +01:00
i915_gem_stolen.c drm/i915: pass dev_priv to i915_gem_cleanup_stolen 2018-09-20 16:43:17 +01:00
i915_gem_tiling.c
i915_gem_userptr.c mm, oom: distinguish blockable mode for mmu notifiers 2018-08-22 10:52:44 -07:00
i915_gem.c drm/i915: Priority boost for waiting clients 2018-10-01 20:34:24 +01:00
i915_gem.h drm/i915/execlists: Flush tasklet directly from reset-finish 2018-08-29 13:49:08 +01:00
i915_gemfs.c
i915_gemfs.h
i915_gpu_error.c drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
i915_gpu_error.h drm/i915: Track vma activity per fence.context, not per engine 2018-07-06 18:22:43 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Avoid compiler warning for maybe unused gu_misc_iir 2018-09-26 13:33:14 +01:00
i915_memcpy.c
i915_mm.c
i915_oa_bdw.c
i915_oa_bdw.h
i915_oa_bxt.c
i915_oa_bxt.h
i915_oa_cflgt2.c
i915_oa_cflgt2.h
i915_oa_cflgt3.c
i915_oa_cflgt3.h
i915_oa_chv.c
i915_oa_chv.h
i915_oa_cnl.c
i915_oa_cnl.h
i915_oa_glk.c
i915_oa_glk.h
i915_oa_hsw.c
i915_oa_hsw.h
i915_oa_icl.c
i915_oa_icl.h
i915_oa_kblgt2.c
i915_oa_kblgt2.h
i915_oa_kblgt3.c
i915_oa_kblgt3.h
i915_oa_sklgt2.c
i915_oa_sklgt2.h
i915_oa_sklgt3.c
i915_oa_sklgt3.h
i915_oa_sklgt4.c
i915_oa_sklgt4.h
i915_params.c drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
i915_params.h drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
i915_pci.c drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
i915_perf.c drm/i915/execlists: Use coherent writes into the context image 2018-09-14 14:23:34 +01:00
i915_pmu.c drm pull for 4.19-rc1 2018-08-15 17:39:07 -07:00
i915_pmu.h drm/i915/pmu: Do not assume fixed hrtimer period 2018-06-05 16:45:01 +01:00
i915_pvinfo.h - Ice Lake's display enabling patches (Jose, Mahesh, Dhinakaran, Paulo, Manasi, Anusha, Arkadiusz) 2018-06-07 10:24:50 +08:00
i915_query.c drm/i915: Convert to BITS_PER_TYPE 2018-09-26 13:32:03 +01:00
i915_query.h
i915_reg.h drm/i915: Add plane alpha blending support, v2. 2018-10-02 12:48:16 +02:00
i915_request.c drm/i915: Priority boost for waiting clients 2018-10-01 20:34:24 +01:00
i915_request.h drm/i915: Priority boost for waiting clients 2018-10-01 20:34:24 +01:00
i915_scheduler.c drm/i915: Priority boost for waiting clients 2018-10-01 20:34:24 +01:00
i915_scheduler.h drm/i915: Priority boost for waiting clients 2018-10-01 20:34:24 +01:00
i915_selftest.h drm/i915/selftests: Downgrade igt_timeout message 2018-07-16 11:23:45 +01:00
i915_suspend.c
i915_sw_fence.c drm/i915: Include fence-hint for timeout warning 2018-09-14 14:28:32 +01:00
i915_sw_fence.h
i915_syncmap.c drm/i915: Convert to BITS_PER_TYPE 2018-09-26 13:32:03 +01:00
i915_syncmap.h
i915_sysfs.c
i915_timeline.c drm/i915: Split i915_gem_timeline into individual timelines 2018-05-02 23:57:18 +01:00
i915_timeline.h drm/i915: Replace nested subclassing with explicit subclasses 2018-07-07 08:09:43 +01:00
i915_trace_points.c
i915_trace.h drm/i915/ringbuffer: Fix context restore upon reset 2018-06-11 14:03:47 +01:00
i915_utils.h drm/i915: Convert to BITS_PER_TYPE 2018-09-26 13:32:03 +01:00
i915_vgpu.c drm/i915/gtt: Rename i915_hw_ppgtt base member 2018-06-05 21:11:20 +01:00
i915_vgpu.h drm/i915: Add new vGPU cap info bit VGT_CAPS_HUGE_GTT 2018-06-05 16:57:01 +03:00
i915_vma.c drm/i915: Stop holding a ref to the ppgtt from each vma 2018-08-29 14:11:53 -07:00
i915_vma.h drm/i915: Fix gtt_view asserts 2018-08-28 18:49:33 +03:00
icl_dsi.c drm/i915/icl: Program T_INIT_MASTER registers 2018-09-24 17:20:24 +03:00
intel_acpi.c drm/i915/dsm: remove unnecessary dsm priv structure 2018-06-14 15:59:09 +03:00
intel_atomic_plane.c drm/i915: Replace call to commit_planes_on_crtc with internal update, v2. 2018-09-21 19:18:54 +02:00
intel_atomic.c drm/i915: Clean up scaler setup, v2. 2018-09-21 19:20:43 +02:00
intel_audio.c drm/i915/audio: Hook up component bindings even if displays are disabled 2018-08-29 14:11:53 -07:00
intel_bios.c drm/i915/psr: fix copy-paste error with setting of tp2_wakeup_time_us 2018-06-20 12:00:31 -07:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Pull seqno started checks together 2018-08-07 12:43:00 +01:00
intel_cdclk.c drm/i915: Mark expected switch fall-throughs 2018-07-05 16:40:51 +03:00
intel_color.c
intel_crt.c drm/i915: Enforce max hdisplay/hblank_start limits on HSW/BDW FDI 2018-06-19 17:18:24 +03:00
intel_csr.c drm/i915/csr: Added ICL Stepping info 2018-10-02 11:46:54 +03:00
intel_ddi.c drm/i915: Pass intel_encoder to infoframe functions 2018-10-01 22:17:37 +03:00
intel_device_info.c drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
intel_device_info.h drm/i915: Remove i915.enable_ppgtt override 2018-09-27 12:05:31 +01:00
intel_display.c drm/i915: Add plane alpha blending support, v2. 2018-10-02 12:48:16 +02:00
intel_display.h drm-misc-next for 4.20: 2018-09-20 10:15:05 +10:00
intel_dp_aux_backlight.c drm/i915/backlight: switch to kernel unsigned int types 2018-06-18 14:46:04 +03:00
intel_dp_link_training.c drm/i915/dp: Improve clock recovery loop limit comment 2018-07-25 09:57:25 -07:00
intel_dp_mst.c drm-misc-next for 4.20: 2018-09-20 10:15:05 +10:00
intel_dp.c drm/i915/dp: optimize eDP 1.4+ link config fast and narrow 2018-09-28 09:29:12 +03:00
intel_dpio_phy.c
intel_dpll_mgr.c drm/i915: Fix ICL+ HDMI clock readout 2018-09-04 16:15:49 +03:00
intel_dpll_mgr.h drm/i915: Fix ICL+ HDMI clock readout 2018-09-04 16:15:49 +03:00
intel_drv.h drm/i915: Pass intel_encoder to infoframe functions 2018-10-01 22:17:37 +03:00
intel_dsi_dcs_backlight.c
intel_dsi_vbt.c drm/i915/dsi: use vlv and bxt prefixes for the global DSI functions 2018-07-06 10:54:05 +03:00
intel_dsi.h drm/i915/dsi: use vlv and bxt prefixes for the global DSI functions 2018-07-06 10:54:05 +03:00
intel_dvo.c drm/i915: Allow DBLSCAN user modes with eDP/LVDS/DSI 2018-06-19 15:47:49 +03:00
intel_engine_cs.c drm/i915: Combine multiple internal plists into the same i915_priolist bucket 2018-10-01 15:26:20 +01:00
intel_fbc.c drm/i915: Add plane alpha blending support, v2. 2018-10-02 12:48:16 +02:00
intel_fbdev.c drm/i915: Store ggtt_view in plane_state 2018-09-12 17:54:21 +03:00
intel_fifo_underrun.c
intel_frontbuffer.c drm/i915/psr: Nuke PSR support for VLV and CHV 2018-05-24 16:05:19 +03:00
intel_frontbuffer.h
intel_gpu_commands.h
intel_guc_ads.c drm/i915: Pull unpin map into vma release 2018-07-24 09:55:12 +01:00
intel_guc_ads.h
intel_guc_ct.c drm/i915: Pull unpin map into vma release 2018-07-24 09:55:12 +01:00
intel_guc_ct.h
intel_guc_fw.c
intel_guc_fw.h
intel_guc_fwif.h drm/i915/selftests: ring all doorbells in igt_guc_doorbells 2018-08-28 13:41:27 +01:00
intel_guc_log.c drm/i915: Pull unpin map into vma release 2018-07-24 09:55:12 +01:00
intel_guc_log.h drm/i915/guc: Add support for define guc_log_size in megabytes. 2018-06-12 15:44:47 +01:00
intel_guc_reg.h
intel_guc_submission.c drm/i915: Combine multiple internal plists into the same i915_priolist bucket 2018-10-01 15:26:20 +01:00
intel_guc_submission.h drm/i915/selftests: ring all doorbells in igt_guc_doorbells 2018-08-28 13:41:27 +01:00
intel_guc.c drm/i915/guc: Move the pin bias value from GuC to GGTT 2018-07-27 16:03:41 +01:00
intel_guc.h drm/i915/guc: Move the pin bias value from GuC to GGTT 2018-07-27 16:03:41 +01:00
intel_gvt.c drm/i915: Unwind HW init after GVT setup failure 2018-07-10 16:46:09 +01:00
intel_gvt.h
intel_hangcheck.c drm/i915: Pull seqno started checks together 2018-08-07 12:43:00 +01:00
intel_hdcp.c drm/i915: Constify power well descriptors 2018-08-08 13:49:43 +03:00
intel_hdmi.c drm/i915: Pass intel_encoder to infoframe functions 2018-10-01 22:17:37 +03:00
intel_hotplug.c drm/i915: Pass hpd_pin to long_pulse_detect() 2018-07-13 18:22:22 +03:00
intel_huc_fw.c
intel_huc_fw.h
intel_huc.c drm/i915/guc: Move the pin bias value from GuC to GGTT 2018-07-27 16:03:41 +01:00
intel_huc.h drm/i915/uc: Fetch GuC/HuC firmwares from guc/huc specific init 2018-06-28 22:51:33 +01:00
intel_i2c.c drm/i915: remove confusing GPIO vs PCH_GPIO 2018-08-16 11:52:08 -07:00
intel_lpe_audio.c drm pull for 4.19-rc1 2018-08-15 17:39:07 -07:00
intel_lrc_reg.h drm/i915/execlists: Terminate the context image with BB_END 2018-08-01 17:03:31 +01:00
intel_lrc.c drm/i915: Pull scheduling under standalone lock 2018-10-01 20:34:21 +01:00
intel_lrc.h drm/i915: Remove superfluous GEN8_LR_CONTEXT_ALIGN 2018-07-27 11:30:42 +01:00
intel_lspcon.c drm/i915: Increase LSPCON timeout 2018-08-29 14:11:53 -07:00
intel_lvds.c On GEM side: 2018-07-20 12:29:24 +10:00
intel_mocs.c drm/i915: Remove useless error return from intel_init_mocs_engine() 2018-08-15 23:25:43 +01:00
intel_mocs.h drm/i915: Remove useless error return from intel_init_mocs_engine() 2018-08-15 23:25:43 +01:00
intel_modes.c drm: drop _mode_ from update_edit_property() 2018-07-13 18:40:27 +02:00
intel_opregion.c drm/i915/opregion: move acpi notifier to dev_priv 2018-06-14 13:48:10 +03:00
intel_opregion.h drm/i915/opregion: move acpi notifier to dev_priv 2018-06-14 13:48:10 +03:00
intel_overlay.c drm/i915/overlay: Use the ioctl parameters directly 2018-09-11 15:51:27 +01:00
intel_panel.c drm/i915: Remove intel_panel_detect() 2018-07-19 18:39:31 +03:00
intel_pipe_crc.c Merge drm/drm-next into drm-misc-next 2018-08-27 10:00:03 -04:00
intel_pm.c drm/i915: Move IPC WA #1141 to init_ipc() 2018-09-26 17:06:22 -07:00
intel_psr.c drm/i915: Pass intel_encoder to infoframe functions 2018-10-01 22:17:37 +03:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c drm/i915: Log HWS seqno consistently 2018-09-27 11:27:13 +01:00
intel_ringbuffer.h drm/i915: Pull scheduling under standalone lock 2018-10-01 20:34:21 +01:00
intel_runtime_pm.c drm/i915: Unset reset pch handshake when PCH is not present in one place 2018-09-26 17:06:09 -07:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915/sdvo: Fix multi function encoder stuff 2018-09-18 21:05:06 +03:00
intel_sideband.c
intel_sprite.c drm/i915: Add plane alpha blending support, v2. 2018-10-02 12:48:16 +02:00
intel_tv.c drm/i915/tv: fix strncpy truncation warning 2018-07-12 10:18:19 +01:00
intel_uc_fw.c drm/i915/guc: Move the pin bias value from GuC to GGTT 2018-07-27 16:03:41 +01:00
intel_uc_fw.h drm/i915/firmware: Correct URL for firmware 2018-05-02 13:40:17 -07:00
intel_uc.c drm/i915/guc: Update GuC power domain states 2018-09-10 20:31:55 +01:00
intel_uc.h
intel_uncore.c drm/i915: Pull intel_uncore_arm_unclaimed_mmio_detection() under the spinlock 2018-09-04 16:01:14 +01:00
intel_uncore.h drm/i915: Restore user forcewake domains across suspend 2018-08-15 13:41:05 -07:00
intel_vbt_defs.h drm/i915/vbt: switch to kernel unsigned int types 2018-06-18 14:44:52 +03:00
intel_wopcm.c drm/i915: Add a fault injection point to WOPCM init 2018-07-27 16:07:45 +01:00
intel_wopcm.h
intel_workarounds.c Revert "drm/i915/icl: WaEnableFloatBlendOptimization" 2018-08-06 11:18:04 -07:00
intel_workarounds.h
Kconfig - New Drivers 2018-08-20 15:38:44 -07:00
Kconfig.debug drm/i915: Verify power domains after enabling them 2018-08-20 12:13:09 +03:00
Makefile drm/i915: Pull scheduling under standalone lock 2018-10-01 20:34:21 +01:00
vlv_dsi_pll.c drm/i915/dsi: use vlv and bxt prefixes for the global DSI functions 2018-07-06 10:54:05 +03:00
vlv_dsi.c drm/i915/dsi: update some of the platform based checks 2018-07-06 10:54:10 +03:00