linux/drivers/gpu/drm/vmwgfx
Maxime Ripard e05162c017
drm: Store new plane state in a variable for atomic_update and disable
In order to store the new plane state in a subsequent helper, let's move
the plane->state dereferences into a variable.

This was done using the following coccinelle script, plus some hand
changes for vmwgfx:

@ plane_atomic_func @
identifier helpers;
identifier func;
@@

(
 static const struct drm_plane_helper_funcs helpers = {
 	...,
 	.atomic_disable = func,
	...,
 };
|
 static const struct drm_plane_helper_funcs helpers = {
 	...,
 	.atomic_update = func,
	...,
 };
)

@ has_new_state_old_state @
identifier plane_atomic_func.func;
identifier plane;
identifier new_state;
symbol old_state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_state)
 {
 	...
 	struct drm_plane_state *new_state = plane->state;
	...
 }

@ depends on !has_new_state_old_state @
identifier plane_atomic_func.func;
identifier plane;
symbol old_state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_state)
 {
+	struct drm_plane_state *new_state = plane->state;
 	<+...
-	plane->state
+	new_state
	...+>
 }

@ has_new_state_state @
identifier plane_atomic_func.func;
identifier plane;
identifier new_state;
symbol state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *state)
 {
 	...
 	struct drm_plane_state *new_state = plane->state;
	...
 }

@ depends on !has_new_state_state @
identifier plane_atomic_func.func;
identifier plane;
symbol state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *state)
 {
+	struct drm_plane_state *new_plane_state = plane->state;
 	<+...
-	plane->state
+	new_plane_state
	...+>
 }

@ has_new_state_old_s @
identifier plane_atomic_func.func;
identifier plane;
identifier new_state;
symbol old_s;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_s)
 {
 	...
 	struct drm_plane_state *new_state = plane->state;
	...
 }

@ depends on !has_new_state_old_s @
identifier plane_atomic_func.func;
identifier plane;
symbol old_s;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_s)
 {
+	struct drm_plane_state *new_s = plane->state;
 	<+...
-	plane->state
+	new_s
	...+>
 }

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20210219120032.260676-1-maxime@cerno.tech
2021-02-24 20:27:09 +01:00
..
device_include drm/vmwgfx: Sync virtual device headers for new feature 2020-03-23 22:39:34 +01:00
Kconfig drm/vmwgfx: Implement an infrastructure for write-coherent resources 2019-11-06 13:04:54 +01:00
Makefile drm/ttm: move memory accounting into vmwgfx v4 2021-02-09 17:27:33 +01:00
ttm_lock.c
ttm_lock.h drm/vmwgfx: drop use of drmP.h in header files 2019-08-15 08:40:04 +02:00
ttm_memory.c drm/ttm: move memory accounting into vmwgfx v4 2021-02-09 17:27:33 +01:00
ttm_memory.h drm/ttm: move memory accounting into vmwgfx v4 2021-02-09 17:27:33 +01:00
ttm_object.c drm/vmwgfx/ttm_object: Reorder header to immediately precede its struct 2021-01-19 14:19:12 -05:00
ttm_object.h drm/ttm: move memory accounting into vmwgfx v4 2021-02-09 17:27:33 +01:00
vmwgfx_binding.c drm/vmwgfx/vmwgfx_binding: Provide some missing param descriptions and remove others 2021-01-19 14:19:07 -05:00
vmwgfx_binding.h drm/vmwgfx: Add support for streamoutput with mob commands 2020-03-23 22:39:35 +01:00
vmwgfx_blit.c drm/ttm: device naming cleanup 2021-01-21 14:51:45 +01:00
vmwgfx_bo.c drm/ttm: move memory accounting into vmwgfx v4 2021-02-09 17:27:33 +01:00
vmwgfx_cmd.c drm/vmwgfx/vmwgfx_fifo: Demote non-conformant kernel-doc header 2021-01-19 14:18:38 -05:00
vmwgfx_cmdbuf_res.c drm/vmwgfx/vmwgfx_cmdbuf_res: Remove unused variable 'ret' 2021-01-19 14:18:47 -05:00
vmwgfx_cmdbuf.c drm/vmwgfx/vmwgfx_cmdbuf: Fix misnaming of 'headers' should be plural 2021-01-19 14:19:05 -05:00
vmwgfx_context.c drm/vmwgfx/vmwgfx_context: Demote kernel-doc abuses 2021-01-19 14:18:42 -05:00
vmwgfx_cotable.c drm/vmwgfx/vmwgfx_cotable: Fix a couple of simple documentation problems 2021-01-19 14:19:06 -05:00
vmwgfx_drv.c drm/ttm: move memory accounting into vmwgfx v4 2021-02-09 17:27:33 +01:00
vmwgfx_drv.h drm/ttm: device naming cleanup 2021-01-21 14:51:45 +01:00
vmwgfx_execbuf.c drm/vmwgfx/vmwgfx_execbuf: Fix some kernel-doc related issues 2021-01-19 14:18:32 -05:00
vmwgfx_fb.c drm/vmwgfx: Cleanup the cmd/fifo split 2021-01-14 12:15:49 -05:00
vmwgfx_fence.c drm/vmwgfx/vmwgfx_fence: Add, remove and demote various documentation params/headers 2021-01-19 14:18:41 -05:00
vmwgfx_fence.h drm/vmwgfx: drop use of drmP.h in header files 2019-08-15 08:40:04 +02:00
vmwgfx_gmr.c drm/vmwgfx: Cleanup the cmd/fifo split 2021-01-14 12:15:49 -05:00
vmwgfx_gmrid_manager.c drm/ttm: cleanup BO size handling v3 2020-12-14 14:20:46 +01:00
vmwgfx_ioctl.c drm/vmwgfx/vmwgfx_ioctl: Provide missing '@' sign required by kernel-doc 2021-01-19 14:18:35 -05:00
vmwgfx_irq.c drm/vmwgfx: Remove the throttling code 2021-01-14 12:14:10 -05:00
vmwgfx_kms.c drm: Store new plane state in a variable for atomic_update and disable 2021-02-24 20:27:09 +01:00
vmwgfx_kms.h drm/atomic: Pass the full state to planes atomic_check 2021-02-24 20:27:00 +01:00
vmwgfx_ldu.c drm: Store new plane state in a variable for atomic_update and disable 2021-02-24 20:27:09 +01:00
vmwgfx_mob.c drm/vmwgfx: Make sure we unpin no longer needed buffers 2021-01-20 17:04:56 -05:00
vmwgfx_msg.c drm/vmwgfx/vmwgfx_msg: Fix misspelling of 'msg' 2021-01-19 14:19:08 -05:00
vmwgfx_msg.h drm/vmwgfx: Update the backdoor call with support for new instructions 2019-08-28 13:36:46 +02:00
vmwgfx_overlay.c drm/vmwgfx/vmwgfx_overlay: Demote kernel-doc abuses to standard comment blocks 2021-01-19 14:18:40 -05:00
vmwgfx_page_dirty.c drm/ttm: cleanup BO size handling v3 2020-12-14 14:20:46 +01:00
vmwgfx_prime.c drm/vmwgfx: Delete mmaping functions 2019-11-25 22:36:14 +01:00
vmwgfx_reg.h
vmwgfx_resource_priv.h drm/vmwgfx: Implement an infrastructure for read-coherent resources 2019-11-06 13:30:27 +01:00
vmwgfx_resource.c drm/ttm: device naming cleanup 2021-01-21 14:51:45 +01:00
vmwgfx_scrn.c drm: Store new plane state in a variable for atomic_update and disable 2021-02-24 20:27:09 +01:00
vmwgfx_shader.c drm/vmwgfx/vmwgfx_shader: Demote kernel-doc abuses and fix-up worthy headers 2021-01-19 14:18:45 -05:00
vmwgfx_simple_resource.c
vmwgfx_so.c drm/vmwgfx/vmwgfx_so: Add description for 'vmw_view's 'rcu' member 2021-01-19 14:19:07 -05:00
vmwgfx_so.h drm/vmwgfx: Add support for streamoutput with mob commands 2020-03-23 22:39:35 +01:00
vmwgfx_stdu.c drm: Store new plane state in a variable for atomic_update and disable 2021-02-24 20:27:09 +01:00
vmwgfx_streamoutput.c drm/vmwgfx: Cleanup the cmd/fifo split 2021-01-14 12:15:49 -05:00
vmwgfx_surface.c drm/vmwgfx/vmwgfx_surface: Fix some kernel-doc related issues 2021-01-19 14:18:44 -05:00
vmwgfx_thp.c drm/vmwgfx/vmwgfx_thp: Add description for 'vmw_thp_manager's member 'manager' 2021-01-19 14:19:11 -05:00
vmwgfx_ttm_buffer.c drm/ttm: move memory accounting into vmwgfx v4 2021-02-09 17:27:33 +01:00
vmwgfx_ttm_glue.c drm/vmwgfx: Support huge page faults 2020-03-24 18:48:55 +01:00
vmwgfx_va.c
vmwgfx_validation.c drm/vmwgfx/vmwgfx_validation: Add some missing struct member/function param descriptions 2021-01-19 14:19:10 -05:00
vmwgfx_validation.h drm/vmwgfx: Implement an infrastructure for write-coherent resources 2019-11-06 13:04:54 +01:00