XenevaOS
Loading...
Searching...
No Matches
drm_atomic.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2014 Red Hat
3 * Copyright (C) 2014 Intel Corp.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
19 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21 * OTHER DEALINGS IN THE SOFTWARE.
22 *
23 * Authors:
24 * Rob Clark <robdclark@gmail.com>
25 * Daniel Vetter <daniel.vetter@ffwll.ch>
26 */
27
28#ifndef DRM_ATOMIC_H_
29#define DRM_ATOMIC_H_
30
31#include <drm/drm_crtc.h>
32#include <drm/drm_util.h>
33
159
164
185
219
249
250struct drm_private_obj;
251struct drm_private_state;
252
275 struct drm_private_state *(*atomic_create_state)(struct drm_private_obj *obj);
276
288 struct drm_private_state *(*atomic_duplicate_state)(struct drm_private_obj *obj);
289
296 struct drm_private_state *state);
297
308 const struct drm_private_state *state);
309};
310
358
364
369
374
382};
383
393#define drm_for_each_privobj(privobj, dev) \
394 list_for_each_entry(privobj, &(dev)->mode_config.privobj_list, head)
395
414
435
650
652
662static inline struct drm_crtc_commit *drm_crtc_commit_get(struct drm_crtc_commit *commit)
663{
664 kref_get(&commit->ref);
665 return commit;
666}
667
675static inline void drm_crtc_commit_put(struct drm_crtc_commit *commit)
676{
677 kref_put(&commit->ref, __drm_crtc_commit_free);
678}
679
681
685
692static inline struct drm_atomic_commit *
693drm_atomic_commit_get(struct drm_atomic_commit *state)
694{
695 kref_get(&state->ref);
696 return state;
697}
698
700
708static inline void drm_atomic_commit_put(struct drm_atomic_commit *state)
709{
710 kref_put(&state->ref, __drm_atomic_commit_free);
711}
712
713int __must_check
717
720 struct drm_crtc *crtc);
723 struct drm_plane *plane);
724struct drm_colorop_state *
726 struct drm_colorop *colorop);
727
728struct drm_colorop_state *
730 struct drm_colorop *colorop);
731struct drm_colorop_state *
733 struct drm_colorop *colorop);
734
737 struct drm_connector *connector);
738
740 struct drm_private_obj *obj,
741 const struct drm_private_state_funcs *funcs);
743
746 struct drm_private_obj *obj);
747struct drm_private_state *
749 struct drm_private_obj *obj);
750struct drm_private_state *
752 struct drm_private_obj *obj);
753
754struct drm_connector *
756 struct drm_encoder *encoder);
757struct drm_connector *
759 struct drm_encoder *encoder);
760struct drm_connector *
762 struct drm_modeset_acquire_ctx *ctx);
763
764struct drm_crtc *
766 struct drm_encoder *encoder);
767struct drm_crtc *
769 struct drm_encoder *encoder);
770
779static inline struct drm_crtc_state *
780drm_atomic_get_old_crtc_state(const struct drm_atomic_commit *state,
781 struct drm_crtc *crtc)
782{
783 return state->crtcs[drm_crtc_index(crtc)].old_state;
784}
793static inline struct drm_crtc_state *
794drm_atomic_get_new_crtc_state(const struct drm_atomic_commit *state,
795 struct drm_crtc *crtc)
796{
797 return state->crtcs[drm_crtc_index(crtc)].new_state;
798}
799
808static inline struct drm_plane_state *
809drm_atomic_get_old_plane_state(const struct drm_atomic_commit *state,
810 struct drm_plane *plane)
811{
812 return state->planes[drm_plane_index(plane)].old_state;
813}
814
823static inline struct drm_plane_state *
824drm_atomic_get_new_plane_state(const struct drm_atomic_commit *state,
825 struct drm_plane *plane)
826{
827 return state->planes[drm_plane_index(plane)].new_state;
828}
829
838static inline struct drm_connector_state *
839drm_atomic_get_old_connector_state(const struct drm_atomic_commit *state,
840 struct drm_connector *connector)
841{
842 int index = drm_connector_index(connector);
843
844 if (index >= state->num_connector)
845 return NULL;
846
847 return state->connectors[index].old_state;
848}
849
858static inline struct drm_connector_state *
859drm_atomic_get_new_connector_state(const struct drm_atomic_commit *state,
860 struct drm_connector *connector)
861{
862 int index = drm_connector_index(connector);
863
864 if (index >= state->num_connector)
865 return NULL;
866
867 return state->connectors[index].new_state;
868}
869
896static inline const struct drm_plane_state *
897__drm_atomic_get_current_plane_state(const struct drm_atomic_commit *state,
898 struct drm_plane *plane)
899{
900 struct drm_plane_state *plane_state;
901
902 plane_state = drm_atomic_get_new_plane_state(state, plane);
903 if (plane_state)
904 return plane_state;
905
906 /*
907 * If the plane isn't part of the state, fallback to the currently active one.
908 */
909 return plane->state;
910}
911
912int __must_check
914 struct drm_encoder *encoder);
915int __must_check
917 struct drm_crtc *crtc);
918int __must_check
920 struct drm_crtc *crtc);
921int __must_check
923 struct drm_plane *plane);
924
928
929void drm_state_dump(struct drm_device *dev, struct drm_printer *p);
930
945#define for_each_oldnew_connector_in_state(__state, connector, old_connector_state, new_connector_state, __i) \
946 for ((__i) = 0; \
947 (__i) < (__state)->num_connector; \
948 (__i)++) \
949 for_each_if ((__state)->connectors[__i].ptr && \
950 ((connector) = (__state)->connectors[__i].ptr, \
951 (void)(connector) /* Only to avoid unused-but-set-variable warning */, \
952 (old_connector_state) = (__state)->connectors[__i].old_state, \
953 (new_connector_state) = (__state)->connectors[__i].new_state, 1))
954
967#define for_each_old_connector_in_state(__state, connector, old_connector_state, __i) \
968 for ((__i) = 0; \
969 (__i) < (__state)->num_connector; \
970 (__i)++) \
971 for_each_if ((__state)->connectors[__i].ptr && \
972 ((connector) = (__state)->connectors[__i].ptr, \
973 (void)(connector) /* Only to avoid unused-but-set-variable warning */, \
974 (old_connector_state) = (__state)->connectors[__i].old_state, 1))
975
988#define for_each_new_connector_in_state(__state, connector, new_connector_state, __i) \
989 for ((__i) = 0; \
990 (__i) < (__state)->num_connector; \
991 (__i)++) \
992 for_each_if ((__state)->connectors[__i].ptr && \
993 ((connector) = (__state)->connectors[__i].ptr, \
994 (void)(connector) /* Only to avoid unused-but-set-variable warning */, \
995 (new_connector_state) = (__state)->connectors[__i].new_state, \
996 (void)(new_connector_state) /* Only to avoid unused-but-set-variable warning */, 1))
997
1010#define for_each_oldnew_crtc_in_state(__state, crtc, old_crtc_state, new_crtc_state, __i) \
1011 for ((__i) = 0; \
1012 (__i) < (__state)->dev->mode_config.num_crtc; \
1013 (__i)++) \
1014 for_each_if ((__state)->crtcs[__i].ptr && \
1015 ((crtc) = (__state)->crtcs[__i].ptr, \
1016 (void)(crtc) /* Only to avoid unused-but-set-variable warning */, \
1017 (old_crtc_state) = (__state)->crtcs[__i].old_state, \
1018 (void)(old_crtc_state) /* Only to avoid unused-but-set-variable warning */, \
1019 (new_crtc_state) = (__state)->crtcs[__i].new_state, \
1020 (void)(new_crtc_state) /* Only to avoid unused-but-set-variable warning */, 1))
1021
1033#define for_each_old_crtc_in_state(__state, crtc, old_crtc_state, __i) \
1034 for ((__i) = 0; \
1035 (__i) < (__state)->dev->mode_config.num_crtc; \
1036 (__i)++) \
1037 for_each_if ((__state)->crtcs[__i].ptr && \
1038 ((crtc) = (__state)->crtcs[__i].ptr, \
1039 (void)(crtc) /* Only to avoid unused-but-set-variable warning */, \
1040 (old_crtc_state) = (__state)->crtcs[__i].old_state, 1))
1041
1053#define for_each_new_crtc_in_state(__state, crtc, new_crtc_state, __i) \
1054 for ((__i) = 0; \
1055 (__i) < (__state)->dev->mode_config.num_crtc; \
1056 (__i)++) \
1057 for_each_if ((__state)->crtcs[__i].ptr && \
1058 ((crtc) = (__state)->crtcs[__i].ptr, \
1059 (void)(crtc) /* Only to avoid unused-but-set-variable warning */, \
1060 (new_crtc_state) = (__state)->crtcs[__i].new_state, \
1061 (void)(new_crtc_state) /* Only to avoid unused-but-set-variable warning */, 1))
1062
1075#define for_each_oldnew_colorop_in_state(__state, colorop, old_colorop_state, \
1076 new_colorop_state, __i) \
1077 for ((__i) = 0; \
1078 (__i) < (__state)->dev->mode_config.num_colorop; \
1079 (__i)++) \
1080 for_each_if ((__state)->colorops[__i].ptr && \
1081 ((colorop) = (__state)->colorops[__i].ptr, \
1082 (void)(colorop) /* Only to avoid unused-but-set-variable warning */, \
1083 (old_colorop_state) = (__state)->colorops[__i].old_state,\
1084 (new_colorop_state) = (__state)->colorops[__i].new_state, 1))
1085
1097#define for_each_new_colorop_in_state(__state, colorop, new_colorop_state, __i) \
1098 for ((__i) = 0; \
1099 (__i) < (__state)->dev->mode_config.num_colorop; \
1100 (__i)++) \
1101 for_each_if ((__state)->colorops[__i].ptr && \
1102 ((colorop) = (__state)->colorops[__i].ptr, \
1103 (void)(colorop) /* Only to avoid unused-but-set-variable warning */, \
1104 (new_colorop_state) = (__state)->colorops[__i].new_state,\
1105 (void)(new_colorop_state) /* Only to avoid unused-but-set-variable warning */, 1))
1106
1119#define for_each_oldnew_plane_in_state(__state, plane, old_plane_state, new_plane_state, __i) \
1120 for ((__i) = 0; \
1121 (__i) < (__state)->dev->mode_config.num_total_plane; \
1122 (__i)++) \
1123 for_each_if ((__state)->planes[__i].ptr && \
1124 ((plane) = (__state)->planes[__i].ptr, \
1125 (void)(plane) /* Only to avoid unused-but-set-variable warning */, \
1126 (old_plane_state) = (__state)->planes[__i].old_state,\
1127 (new_plane_state) = (__state)->planes[__i].new_state, 1))
1128
1142#define for_each_oldnew_plane_in_state_reverse(__state, plane, old_plane_state, new_plane_state, __i) \
1143 for ((__i) = ((__state)->dev->mode_config.num_total_plane - 1); \
1144 (__i) >= 0; \
1145 (__i)--) \
1146 for_each_if ((__state)->planes[__i].ptr && \
1147 ((plane) = (__state)->planes[__i].ptr, \
1148 (old_plane_state) = (__state)->planes[__i].old_state,\
1149 (new_plane_state) = (__state)->planes[__i].new_state, 1))
1150
1159#define for_each_new_plane_in_state_reverse(__state, plane, new_plane_state, __i) \
1160 for ((__i) = ((__state)->dev->mode_config.num_total_plane - 1); \
1161 (__i) >= 0; \
1162 (__i)--) \
1163 for_each_if ((__state)->planes[__i].ptr && \
1164 ((plane) = (__state)->planes[__i].ptr, \
1165 (new_plane_state) = (__state)->planes[__i].new_state, 1))
1166
1178#define for_each_old_plane_in_state(__state, plane, old_plane_state, __i) \
1179 for ((__i) = 0; \
1180 (__i) < (__state)->dev->mode_config.num_total_plane; \
1181 (__i)++) \
1182 for_each_if ((__state)->planes[__i].ptr && \
1183 ((plane) = (__state)->planes[__i].ptr, \
1184 (old_plane_state) = (__state)->planes[__i].old_state, 1))
1196#define for_each_new_plane_in_state(__state, plane, new_plane_state, __i) \
1197 for ((__i) = 0; \
1198 (__i) < (__state)->dev->mode_config.num_total_plane; \
1199 (__i)++) \
1200 for_each_if ((__state)->planes[__i].ptr && \
1201 ((plane) = (__state)->planes[__i].ptr, \
1202 (void)(plane) /* Only to avoid unused-but-set-variable warning */, \
1203 (new_plane_state) = (__state)->planes[__i].new_state, \
1204 (void)(new_plane_state) /* Only to avoid unused-but-set-variable warning */, 1))
1205
1218#define for_each_oldnew_private_obj_in_state(__state, obj, old_obj_state, new_obj_state, __i) \
1219 for ((__i) = 0; \
1220 (__i) < (__state)->num_private_objs && \
1221 ((obj) = (__state)->private_objs[__i].ptr, \
1222 (old_obj_state) = (__state)->private_objs[__i].old_state, \
1223 (new_obj_state) = (__state)->private_objs[__i].new_state, 1); \
1224 (__i)++)
1225
1237#define for_each_old_private_obj_in_state(__state, obj, old_obj_state, __i) \
1238 for ((__i) = 0; \
1239 (__i) < (__state)->num_private_objs && \
1240 ((obj) = (__state)->private_objs[__i].ptr, \
1241 (old_obj_state) = (__state)->private_objs[__i].old_state, 1); \
1242 (__i)++)
1243
1255#define for_each_new_private_obj_in_state(__state, obj, new_obj_state, __i) \
1256 for ((__i) = 0; \
1257 (__i) < (__state)->num_private_objs && \
1258 ((obj) = (__state)->private_objs[__i].ptr, \
1259 (void)(obj) /* Only to avoid unused-but-set-variable warning */, \
1260 (new_obj_state) = (__state)->private_objs[__i].new_state, 1); \
1261 (__i)++)
1262
1282static inline bool
1283drm_atomic_crtc_needs_modeset(const struct drm_crtc_state *state)
1284{
1285 return state->mode_changed || state->active_changed ||
1286 state->connectors_changed;
1287}
1288
1298static inline bool
1299drm_atomic_crtc_effectively_active(const struct drm_crtc_state *state)
1300{
1301 return state->active || state->self_refresh_active;
1302}
1303
1335
1360
1361static inline struct drm_bridge_state *
1362drm_priv_to_bridge_state(struct drm_private_state *priv)
1363{
1364 return container_of(priv, struct drm_bridge_state, base);
1365}
1366
1367struct drm_bridge_state *
1369 struct drm_bridge *bridge);
1370struct drm_bridge_state *
1372 struct drm_bridge *bridge);
1373struct drm_bridge_state *
1375 struct drm_bridge *bridge);
1376
1377#endif /* DRM_ATOMIC_H_ */
#define index(str, chr)
Definition string.h:66
#define NULL
Definition actypes.h:561
#define __user
Definition compiler.h:63
#define __must_check
Definition compiler.h:114
#define container_of(ptr, type, member)
Definition container_of.h:19
void __drm_atomic_commit_free(struct kref *ref)
struct drm_crtc_state *__must_check drm_atomic_get_crtc_state(struct drm_atomic_commit *state, struct drm_crtc *crtc)
struct drm_private_state * drm_atomic_get_old_private_obj_state(const struct drm_atomic_commit *state, struct drm_private_obj *obj)
int __must_check drm_atomic_add_affected_planes(struct drm_atomic_commit *state, struct drm_crtc *crtc)
struct drm_connector * drm_atomic_get_connector_for_encoder(const struct drm_encoder *encoder, struct drm_modeset_acquire_ctx *ctx)
struct drm_colorop_state * drm_atomic_get_new_colorop_state(struct drm_atomic_commit *state, struct drm_colorop *colorop)
int __must_check drm_atomic_nonblocking_commit(struct drm_atomic_commit *state)
int __must_check drm_atomic_commit_init(struct drm_device *dev, struct drm_atomic_commit *state)
struct drm_connector * drm_atomic_get_new_connector_for_encoder(const struct drm_atomic_commit *state, struct drm_encoder *encoder)
void __drm_crtc_commit_free(struct kref *kref)
int __must_check drm_atomic_add_affected_connectors(struct drm_atomic_commit *state, struct drm_crtc *crtc)
void drm_atomic_commit_default_clear(struct drm_atomic_commit *state)
void drm_atomic_private_obj_fini(struct drm_private_obj *obj)
void drm_atomic_commit_default_release(struct drm_atomic_commit *state)
struct drm_bridge_state * drm_atomic_get_new_bridge_state(const struct drm_atomic_commit *state, struct drm_bridge *bridge)
struct drm_bridge_state * drm_atomic_get_old_bridge_state(const struct drm_atomic_commit *state, struct drm_bridge *bridge)
struct drm_atomic_commit *__must_check drm_atomic_commit_alloc(struct drm_device *dev)
struct drm_private_state * drm_atomic_get_new_private_obj_state(const struct drm_atomic_commit *state, struct drm_private_obj *obj)
int drm_crtc_commit_wait(struct drm_crtc_commit *commit)
struct drm_crtc * drm_atomic_get_new_crtc_for_encoder(struct drm_atomic_commit *state, struct drm_encoder *encoder)
int __must_check drm_atomic_check_only(struct drm_atomic_commit *state)
struct drm_private_state *__must_check drm_atomic_get_private_obj_state(struct drm_atomic_commit *state, struct drm_private_obj *obj)
int drm_atomic_private_obj_init(struct drm_device *dev, struct drm_private_obj *obj, const struct drm_private_state_funcs *funcs)
struct drm_connector_state *__must_check drm_atomic_get_connector_state(struct drm_atomic_commit *state, struct drm_connector *connector)
struct drm_connector * drm_atomic_get_old_connector_for_encoder(const struct drm_atomic_commit *state, struct drm_encoder *encoder)
struct drm_plane_state *__must_check drm_atomic_get_plane_state(struct drm_atomic_commit *state, struct drm_plane *plane)
struct drm_crtc * drm_atomic_get_old_crtc_for_encoder(struct drm_atomic_commit *state, struct drm_encoder *encoder)
int __must_check drm_atomic_add_encoder_bridges(struct drm_atomic_commit *state, struct drm_encoder *encoder)
struct drm_colorop_state * drm_atomic_get_old_colorop_state(struct drm_atomic_commit *state, struct drm_colorop *colorop)
void drm_state_dump(struct drm_device *dev, struct drm_printer *p)
int __must_check drm_atomic_add_affected_colorops(struct drm_atomic_commit *state, struct drm_plane *plane)
struct drm_bridge_state * drm_atomic_get_bridge_state(struct drm_atomic_commit *state, struct drm_bridge *bridge)
struct drm_colorop_state * drm_atomic_get_colorop_state(struct drm_atomic_commit *state, struct drm_colorop *colorop)
void drm_atomic_commit_clear(struct drm_atomic_commit *state)
size_t size_t const struct drm_bridge_funcs * funcs
Definition drm_bridge.h:1300
struct drm_crtc * crtc
Definition drm_crtc.h:1238
struct drm_encoder * encoder
Definition drm_encoder.h:211
struct drm_plane * plane
Definition drm_plane.h:828
const struct device * dev
Definition drm_print.h:519
struct i915_user_extension base
Definition i915_drm.h:0
uint64_t u64
Definition kernel.h:17
int32_t s32
Definition kernel.h:20
uint32_t u32
Definition kernel.h:16
int const struct list_head const struct list_head struct list_head * head
Definition list_sort.h:13
Definition drm_atomic.h:160
struct drm_colorop_state * old_state
Definition drm_atomic.h:162
struct drm_colorop_state * new_state
Definition drm_atomic.h:162
struct drm_colorop * ptr
Definition drm_atomic.h:161
struct drm_colorop_state * state
Definition drm_atomic.h:162
Definition drm_atomic.h:220
struct drm_connector_state * state_to_destroy
Definition drm_atomic.h:236
struct drm_connector_state * new_state
Definition drm_atomic.h:238
struct drm_connector_state * old_state
Definition drm_atomic.h:238
struct drm_connector * ptr
Definition drm_atomic.h:221
s32 __user * out_fence_ptr
Definition drm_atomic.h:247
Definition drm_atomic.h:186
struct drm_crtc_state * old_state
Definition drm_atomic.h:204
struct drm_crtc_state * new_state
Definition drm_atomic.h:204
u64 last_vblank_count
Definition drm_atomic.h:217
s32 __user * out_fence_ptr
Definition drm_atomic.h:216
struct drm_crtc * ptr
Definition drm_atomic.h:187
struct drm_crtc_commit * commit
Definition drm_atomic.h:214
struct drm_crtc_state * state_to_destroy
Definition drm_atomic.h:202
Definition drm_atomic.h:165
struct drm_plane_state * old_state
Definition drm_atomic.h:183
struct drm_plane_state * new_state
Definition drm_atomic.h:183
struct drm_plane * ptr
Definition drm_atomic.h:166
struct drm_plane_state * state_to_destroy
Definition drm_atomic.h:181
Definition drm_atomic.h:415
struct drm_private_state * state_to_destroy
Definition drm_atomic.h:431
struct drm_private_obj * ptr
Definition drm_atomic.h:416
struct drm_private_state * old_state
Definition drm_atomic.h:433
struct drm_private_state * new_state
Definition drm_atomic.h:433
Definition completion.h:55
Definition drm_atomic.h:480
bool async_update
Definition drm_atomic.h:537
struct __drm_colorops_state * colorops
Definition drm_atomic.h:581
struct drm_crtc_commit * fake_commit
Definition drm_atomic.h:640
struct __drm_private_objs_state * private_objs
Definition drm_atomic.h:623
int num_connector
Definition drm_atomic.h:602
struct drm_device * dev
Definition drm_atomic.h:491
struct work_struct commit_work
Definition drm_atomic.h:648
int num_private_objs
Definition drm_atomic.h:615
bool duplicated
Definition drm_atomic.h:547
bool plane_color_pipeline
Definition drm_atomic.h:573
bool checked
Definition drm_atomic.h:555
struct __drm_crtcs_state * crtcs
Definition drm_atomic.h:597
struct kref ref
Definition drm_atomic.h:486
struct __drm_connnectors_state * connectors
Definition drm_atomic.h:610
struct __drm_planes_state * planes
Definition drm_atomic.h:589
bool allow_modeset
Definition drm_atomic.h:520
struct drm_modeset_acquire_ctx * acquire_ctx
Definition drm_atomic.h:628
bool legacy_cursor_update
Definition drm_atomic.h:532
Definition drm_atomic.h:1339
struct drm_bridge * bridge
Definition drm_atomic.h:1348
struct drm_private_state base
Definition drm_atomic.h:1343
struct drm_bus_cfg output_bus_cfg
Definition drm_atomic.h:1358
struct drm_bus_cfg input_bus_cfg
Definition drm_atomic.h:1353
Definition drm_bridge.h:1100
Definition drm_atomic.h:1320
u32 flags
Definition drm_atomic.h:1333
u32 format
Definition drm_atomic.h:1328
Definition drm_colorop.h:140
struct drm_colorop * colorop
Definition drm_colorop.h:142
Definition drm_colorop.h:228
Definition drm_connector.h:1065
struct drm_connector * connector
Definition drm_connector.h:1067
Definition drm_connector.h:1998
Definition drm_atomic.h:72
struct completion flip_done
Definition drm_atomic.h:101
struct completion cleanup_done
Definition drm_atomic.h:133
struct drm_crtc * crtc
Definition drm_atomic.h:78
struct drm_pending_vblank_event * event
Definition drm_atomic.h:148
struct completion hw_done
Definition drm_atomic.h:119
struct list_head commit_entry
Definition drm_atomic.h:141
bool abort_completion
Definition drm_atomic.h:157
struct kref ref
Definition drm_atomic.h:87
Definition drm_crtc.h:81
Definition drm_crtc.h:955
Definition drm_device.h:75
Definition drm_encoder.h:106
Definition drm_modeset_lock.h:46
Definition drm_modeset_lock.h:85
Definition drm_vblank.h:43
Definition drm_plane.h:54
Definition drm_plane.h:641
struct drm_plane_state * state
Definition drm_plane.h:748
Definition drm_print.h:181
Definition drm_atomic.h:353
struct drm_modeset_lock lock
Definition drm_atomic.h:368
struct drm_device * dev
Definition drm_atomic.h:357
struct drm_private_state * state
Definition drm_atomic.h:373
const struct drm_private_state_funcs * funcs
Definition drm_atomic.h:381
Definition drm_atomic.h:263
void(* atomic_destroy_state)(struct drm_private_obj *obj, struct drm_private_state *state)
Definition drm_atomic.h:295
void(* atomic_print_state)(struct drm_printer *p, const struct drm_private_state *state)
Definition drm_atomic.h:307
Definition drm_atomic.h:403
struct drm_atomic_commit * state
Definition drm_atomic.h:407
struct drm_private_obj * obj
Definition drm_atomic.h:412
Definition kref.h:44
Definition list.h:11
Definition workqueue.h:44
#define state(x)