mirror_ubuntu-kernels/drivers/gpu/drm
Igor Torrente bbdf7b2a0b drm: vkms: Add fb information to vkms_writeback_job
This commit is the groundwork to introduce new formats to the planes and
writeback buffer. As part of it, a new buffer metadata field is added to
`vkms_writeback_job`, this metadata is represented by the `vkms_frame_info`
struct.

Also adds two new function pointers (`line_to_frame_func` and
`frame_to_line_func`) are defined to handle format conversion
from/to internal format.

A new internal format(`struct pixel_argb_u16`) is introduced to deal with
all possible inputs. It consists of 16 bits fields that represent each of
the channels.

These things will allow us, in the future, to have different compositing
and wb format types.

V2: Change the code to get the drm_framebuffer reference and not copy its
    contents (Thomas Zimmermann).
V3: Drop the refcount in the wb code (Thomas Zimmermann).
V5: Add {wb,plane}_format_transform_func to vkms_writeback_job
    and vkms_plane_state (Pekka Paalanen)
V6: Improvements to some struct/struct members names (Pekka Paalanen).
    Splits this patch in two (Pekka Paalanen).
V7: Replace line_to_frame_func and frame_to_line_func typedefs
   with the function signature and void* (Melissa Wen).

Reviewed-by: Melissa Wen <mwen@igalia.com>
Signed-off-by: Igor Torrente <igormtorrente@gmail.com>
Signed-off-by: Melissa Wen <melissa.srw@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220905190811.25024-6-igormtorrente@gmail.com
2022-09-05 20:12:18 -01:00
..
amd drm/display/dp_mst: Move all payload info into the atomic state 2022-08-23 16:54:09 -04:00
arm drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
armada drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
aspeed drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
ast drm/atomic-helper: Remove _HELPER_ infix from DRM_PLANE_HELPER_NO_SCALING 2022-07-26 18:42:00 +02:00
atmel-hlcdc drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
bridge drm/bridge: chrontel-ch7033: Add byteswap order setting 2022-09-02 18:21:23 +02:00
display drm/dp: add drm_dp_phy_name() for getting DP PHY name 2022-08-30 11:02:42 +03:00
etnaviv Merge branch 'etnaviv/next' of https://git.pengutronix.de/git/lst/linux into drm-next 2022-05-17 12:20:04 +10:00
exynos drm: Remove unnecessary include statements of drm_plane_helper.h 2022-07-26 18:42:04 +02:00
fsl-dcu drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
gma500 drm/gma500: Fix comment typo 2022-08-29 09:44:12 +02:00
gud drm/format-helper: Rework XRGB8888-to-GRAY8 conversion 2022-08-10 09:18:49 +02:00
hisilicon drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
hyperv drm/format-helper: Merge drm_fb_memcpy() and drm_fb_memcpy_toio() 2022-08-10 09:15:51 +02:00
i2c drm: Remove linux/i2c.h from drm_crtc.h 2022-07-05 21:15:23 +03:00
i810
i915 drm/i915/dp_mst: Fix mst_mgr lookup during atomic check 2022-09-02 16:30:57 +03:00
imx drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
ingenic drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
kmb drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
lib
lima dma-buf: specify usage while adding fences to dma_resv obj v7 2022-04-07 12:53:53 +02:00
logicvc drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
mcde drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
mediatek drm/mediatek: dp: Audio support for MT8195 2022-09-04 15:32:42 +03:00
meson drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
mga
mgag200 drm/format-helper: Merge drm_fb_memcpy() and drm_fb_memcpy_toio() 2022-08-10 09:15:51 +02:00
msm drm/msm: Make .remove and .shutdown HW shutdown consistent 2022-08-22 05:13:55 +02:00
mxsfb drm/lcdif: switch to devm_drm_of_get_bridge 2022-08-22 16:53:31 +02:00
nouveau drm/display/dp_mst: Move all payload info into the atomic state 2022-08-23 16:54:09 -04:00
omapdrm drm: Remove unnecessary include statements of drm_plane_helper.h 2022-07-26 18:42:04 +02:00
panel drm/panel: use 'select' for Ili9341 panel driver helpers 2022-08-26 13:40:47 +02:00
panfrost drm/panfrost: Update io-pgtable API 2022-09-01 11:18:57 +01:00
pl111 drm:pl111: Add of_node_put() when breaking out of for_each_available_child_of_node() 2022-08-11 18:13:31 +02:00
qxl drm/plane-helper: Export individual helpers 2022-07-26 18:42:07 +02:00
r128 drm/r128: Fix undefined behavior due to shift overflowing the constant 2022-05-21 18:02:47 +02:00
radeon drm/radeon: Drop legacy MST support 2022-08-23 16:53:43 -04:00
rcar-du drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
rockchip drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
savage
scheduler drm/sched: move calling drm_sched_entity_select_rq 2022-07-19 17:22:25 +02:00
shmobile drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
sis drm/sis: use idr_init_base() to initialize dev_priv->object_idr 2022-07-28 15:35:56 +01:00
solomon drm/format-helper: Rework XRGB8888-to-MONO conversion 2022-08-10 09:18:53 +02:00
sprd drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
sti drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
stm drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
sun4i drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
tdfx
tegra drm/fb: rename FB CMA helpers to FB DMA helpers 2022-08-03 18:30:55 +02:00
tests drm/cmdline-parser: Use assert when needed 2022-09-01 08:45:24 -03:00
tidss drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
tilcdc drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
tiny drm/format-helper: Rework XRGB8888-to-MONO conversion 2022-08-10 09:18:53 +02:00
ttm drm/ttm: Switch to using the new res callback 2022-08-22 15:36:29 +02:00
tve200 drm/tve200: Fix smatch warning 2022-08-26 14:22:59 +02:00
udl drm/udl: Replace BUG_ON() with WARN_ON() 2022-08-10 10:07:05 +02:00
v3d drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00
vboxvideo drm/plane-helper: Export individual helpers 2022-07-26 18:42:07 +02:00
vc4 drm/vc4: hvs: protect drm_print_regset32() 2022-08-25 09:44:26 +02:00
vgem dma-buf: specify usage while adding fences to dma_resv obj v7 2022-04-07 12:53:53 +02:00
via drm/via: use idr_init_base() to initialize dev_priv->object_idr 2022-07-28 16:36:49 +02:00
virtio drm/virtio: Fix same-context optimization 2022-08-25 11:56:22 +02:00
vkms drm: vkms: Add fb information to vkms_writeback_job 2022-09-05 20:12:18 -01:00
vmwgfx drm/vmwgfx: Remove unused hugepage support 2022-08-04 11:39:26 -04:00
xen Linux 5.19-rc6 2022-07-13 10:54:56 +10:00
xlnx drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
drm_agpsupport.c
drm_aperture.c drm/aperture: Run fbdev removal before internal helpers 2022-07-09 11:12:05 -07:00
drm_atomic_helper.c drm: drm_atomic_helper: Add a new helper to deal with the writeback connector validation 2022-09-05 20:12:16 -01:00
drm_atomic_state_helper.c drm: Drop drm_blend.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
drm_atomic_uapi.c drm: Drop drm_framebuffer.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
drm_atomic.c drm: Drop drm_blend.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
drm_auth.c drm: use idr_init_base() to initialize master->lessee_idr 2022-07-28 15:35:55 +01:00
drm_blend.c drm/doc: Fix comment typo 2022-06-28 07:56:32 +02:00
drm_bridge_connector.c drm: Config orientation property if panel provides it 2022-06-21 08:52:59 -07:00
drm_bridge.c drm/bridge: Avoid uninitialized variable warning 2022-07-08 13:41:28 +02:00
drm_buddy.c drm: add a check to verify the size alignment 2022-04-11 15:35:47 +02:00
drm_bufs.c
drm_cache.c
drm_client_modeset.c drm: Drop drm_edid.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
drm_client.c drm/client: Use actual bpp when allocating frame buffers 2022-07-09 15:00:52 +02:00
drm_color_mgmt.c drm: fix whitespace in drm_plane_create_color_properties() 2022-08-04 15:24:46 +02:00
drm_connector.c drm/connector: Introduce drmm_connector_init 2022-07-13 10:46:06 +02:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c drm: Remove unnecessary include statements of drm_plane_helper.h 2022-07-26 18:42:04 +02:00
drm_crtc_internal.h drm/edid: abstract debugfs override EDID set/reset 2022-06-30 10:50:59 +03:00
drm_crtc.c drm/crtc: Introduce drmm_crtc_init_with_planes 2022-07-13 10:46:05 +02:00
drm_damage_helper.c drm: Drop drm_framebuffer.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
drm_debugfs_crc.c
drm_debugfs.c drm/edid: abstract debugfs override EDID set/reset 2022-06-30 10:50:59 +03:00
drm_displayid.c drm/displayid: convert to drm_edid 2022-05-13 18:55:13 +03:00
drm_dma.c
drm_drv.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm: New function to get luminance range based on static hdr metadata 2022-08-11 22:10:04 +03:00
drm_encoder_slave.c
drm_encoder.c drm/encoder: Introduce drmm_encoder_init 2022-07-13 10:46:05 +02:00
drm_fb_dma_helper.c drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
drm_fb_helper.c drm/fb-helper: Add support for DRM_FORMAT_C[124] 2022-07-09 15:07:09 +02:00
drm_file.c drm: Remove the drm_get_unmapped_area() helper 2022-08-04 11:39:27 -04:00
drm_flip_work.c
drm_format_helper.c drm/format-helper: Rename parameter vmap to src 2022-08-10 09:18:56 +02:00
drm_fourcc.c drm/fourcc: Add DRM_FORMAT_D[1248] 2022-07-09 15:36:07 +02:00
drm_framebuffer.c drm:remove rebundant word "in" in comments 2022-07-19 09:03:24 +02:00
drm_gem_atomic_helper.c drm: Drop drm_framebuffer.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
drm_gem_dma_helper.c drm/gem: rename struct drm_gem_dma_object.{paddr => dma_addr} 2022-08-03 18:32:27 +02:00
drm_gem_framebuffer_helper.c drm/gem-fb-helper: Use actual bpp for size calculations 2022-07-09 15:08:16 +02:00
drm_gem_shmem_helper.c drm: correct comments 2022-07-21 12:16:10 +02:00
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm/ttm: rename and cleanup ttm_bo_init 2022-07-11 10:53:13 +02:00
drm_gem.c dma-buf: add enum dma_resv_usage v4 2022-04-07 12:53:53 +02:00
drm_hashtab.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c drm: Prevent drm_copy_field() to attempt copying a NULL pointer 2022-07-15 10:25:36 +02:00
drm_irq.c
drm_kms_helper_common.c drm: Drop drm_edid.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
drm_lease.c
drm_legacy_misc.c
drm_legacy.h
drm_lock.c
drm_managed.c drm: Add DRM-managed mutex_init() 2022-05-05 09:04:10 +02:00
drm_memory.c
drm_mipi_dbi.c drm/format-helper: Rework XRGB8888-to-RGBG565 conversion 2022-08-10 09:18:45 +02:00
drm_mipi_dsi.c drm/mipi-dsi: Detach devices when removing the host 2022-07-13 10:46:05 +02:00
drm_mm.c
drm_mode_config.c drm: hide unregistered connectors from GETCONNECTOR IOCTL 2022-09-05 12:59:53 +02:00
drm_mode_object.c
drm_modes.c drm: Remove linux/fb.h from drm_crtc.h 2022-07-05 21:14:02 +03:00
drm_modeset_helper.c drm/plane-helper: Export individual helpers 2022-07-26 18:42:07 +02:00
drm_modeset_lock.c
drm_nomodeset.c
drm_of.c drm: Remove linux/media-bus-format.h from drm_crtc.h 2022-07-05 21:15:13 +03:00
drm_panel_orientation_quirks.c Linux 5.19-rc6 2022-07-13 10:54:56 +10:00
drm_panel.c
drm_pci.c
drm_plane_helper.c drm/plane-helper: Export individual helpers 2022-07-26 18:42:07 +02:00
drm_plane.c drm/plane: Move range check for format_count earlier 2022-04-28 16:13:04 +01:00
drm_prime.c drm/prime: drop unexpected word "the" in the comments 2022-06-22 09:22:05 +02:00
drm_print.c
drm_privacy_screen_x86.c
drm_privacy_screen.c
drm_probe_helper.c drm/probe-helper: add drm_connector_helper_get_modes() 2022-06-30 10:51:03 +03:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c drm/atomic-helper: Remove _HELPER_ infix from DRM_PLANE_HELPER_NO_SCALING 2022-07-26 18:42:00 +02:00
drm_syncobj.c drm/syncobj: add missing error return code in drm_syncobj_transfer_to_timeline() 2022-06-13 08:54:16 +02:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank_work.c
drm_vblank.c drm: Use drm_mode_copy() 2022-04-12 09:27:20 +03:00
drm_vm.c LoongArch: Add writecombine support for drm 2022-06-03 20:09:27 +08:00
drm_vma_manager.c
drm_writeback.c drm: Drop drm_framebuffer.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
Kconfig drm: fix drm_mipi_dbi build errors 2022-08-26 13:41:33 +02:00
Makefile drm/gem: rename GEM CMA helpers to GEM DMA helpers 2022-08-03 18:31:49 +02:00