__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* * Copyright (C) 2014 Red Hat * Copyright (C) 2014 Intel Corp. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * Authors: * Rob Clark <[email protected]> * Daniel Vetter <[email protected]> */ #ifndef DRM_ATOMIC_HELPER_H_ #define DRM_ATOMIC_HELPER_H_ #include <drm/drm_crtc.h> #include <drm/drm_modeset_helper_vtables.h> #include <drm/drm_modeset_helper.h> #include <drm/drm_atomic_state_helper.h> #include <drm/drm_util.h> /* * Drivers that don't allow primary plane scaling may pass this macro in place * of the min/max scale parameters of the plane-state checker function. * * Due to src being in 16.16 fixed point and dest being in integer pixels, * 1<<16 represents no scaling. */ #define DRM_PLANE_NO_SCALING (1<<16) struct drm_atomic_state; struct drm_private_obj; struct drm_private_state; int drm_atomic_helper_check_modeset(struct drm_device *dev, struct drm_atomic_state *state); int drm_atomic_helper_check_wb_connector_state(struct drm_connector *connector, struct drm_atomic_state *state); int drm_atomic_helper_check_plane_state(struct drm_plane_state *plane_state, const struct drm_crtc_state *crtc_state, int min_scale, int max_scale, bool can_position, bool can_update_disabled); int drm_atomic_helper_check_planes(struct drm_device *dev, struct drm_atomic_state *state); int drm_atomic_helper_check_crtc_primary_plane(struct drm_crtc_state *crtc_state); int drm_atomic_helper_check(struct drm_device *dev, struct drm_atomic_state *state); void drm_atomic_helper_commit_tail(struct drm_atomic_state *state); void drm_atomic_helper_commit_tail_rpm(struct drm_atomic_state *state); int drm_atomic_helper_commit(struct drm_device *dev, struct drm_atomic_state *state, bool nonblock); int drm_atomic_helper_async_check(struct drm_device *dev, struct drm_atomic_state *state); void drm_atomic_helper_async_commit(struct drm_device *dev, struct drm_atomic_state *state); int drm_atomic_helper_wait_for_fences(struct drm_device *dev, struct drm_atomic_state *state, bool pre_swap); void drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, struct drm_atomic_state *old_state); void drm_atomic_helper_wait_for_flip_done(struct drm_device *dev, struct drm_atomic_state *old_state); void drm_atomic_helper_update_legacy_modeset_state(struct drm_device *dev, struct drm_atomic_state *old_state); void drm_atomic_helper_calc_timestamping_constants(struct drm_atomic_state *state); void drm_atomic_helper_commit_modeset_disables(struct drm_device *dev, struct drm_atomic_state *state); void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, struct drm_atomic_state *old_state); int drm_atomic_helper_prepare_planes(struct drm_device *dev, struct drm_atomic_state *state); void drm_atomic_helper_unprepare_planes(struct drm_device *dev, struct drm_atomic_state *state); #define DRM_PLANE_COMMIT_ACTIVE_ONLY BIT(0) #define DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET BIT(1) void drm_atomic_helper_commit_planes(struct drm_device *dev, struct drm_atomic_state *state, uint32_t flags); void drm_atomic_helper_cleanup_planes(struct drm_device *dev, struct drm_atomic_state *old_state); void drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state); void drm_atomic_helper_disable_planes_on_crtc(struct drm_crtc_state *old_crtc_state, bool atomic); int __must_check drm_atomic_helper_swap_state(struct drm_atomic_state *state, bool stall); /* nonblocking commit helpers */ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, bool nonblock); void drm_atomic_helper_wait_for_dependencies(struct drm_atomic_state *state); void drm_atomic_helper_fake_vblank(struct drm_atomic_state *state); void drm_atomic_helper_commit_hw_done(struct drm_atomic_state *state); void drm_atomic_helper_commit_cleanup_done(struct drm_atomic_state *state); /* implementations for legacy interfaces */ int drm_atomic_helper_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, struct drm_framebuffer *fb, int crtc_x, int crtc_y, unsigned int crtc_w, unsigned int crtc_h, uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h, struct drm_modeset_acquire_ctx *ctx); int drm_atomic_helper_disable_plane(struct drm_plane *plane, struct drm_modeset_acquire_ctx *ctx); int drm_atomic_helper_set_config(struct drm_mode_set *set, struct drm_modeset_acquire_ctx *ctx); int drm_atomic_helper_disable_all(struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx); void drm_atomic_helper_shutdown(struct drm_device *dev); struct drm_atomic_state * drm_atomic_helper_duplicate_state(struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx); struct drm_atomic_state *drm_atomic_helper_suspend(struct drm_device *dev); int drm_atomic_helper_commit_duplicated_state(struct drm_atomic_state *state, struct drm_modeset_acquire_ctx *ctx); int drm_atomic_helper_resume(struct drm_device *dev, struct drm_atomic_state *state); int drm_atomic_helper_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, struct drm_modeset_acquire_ctx *ctx); int drm_atomic_helper_page_flip_target( struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, uint32_t target, struct drm_modeset_acquire_ctx *ctx); /** * drm_atomic_crtc_for_each_plane - iterate over planes currently attached to CRTC * @plane: the loop cursor * @crtc: the CRTC whose planes are iterated * * This iterates over the current state, useful (for example) when applying * atomic state after it has been checked and swapped. To iterate over the * planes which *will* be attached (more useful in code called from * &drm_mode_config_funcs.atomic_check) see * drm_atomic_crtc_state_for_each_plane(). */ #define drm_atomic_crtc_for_each_plane(plane, crtc) \ drm_for_each_plane_mask(plane, (crtc)->dev, (crtc)->state->plane_mask) /** * drm_atomic_crtc_state_for_each_plane - iterate over attached planes in new state * @plane: the loop cursor * @crtc_state: the incoming CRTC state * * Similar to drm_crtc_for_each_plane(), but iterates the planes that will be * attached if the specified state is applied. Useful during for example * in code called from &drm_mode_config_funcs.atomic_check operations, to * validate the incoming state. */ #define drm_atomic_crtc_state_for_each_plane(plane, crtc_state) \ drm_for_each_plane_mask(plane, (crtc_state)->state->dev, (crtc_state)->plane_mask) /** * drm_atomic_crtc_state_for_each_plane_state - iterate over attached planes in new state * @plane: the loop cursor * @plane_state: loop cursor for the plane's state, must be const * @crtc_state: the incoming CRTC state * * Similar to drm_crtc_for_each_plane(), but iterates the planes that will be * attached if the specified state is applied. Useful during for example * in code called from &drm_mode_config_funcs.atomic_check operations, to * validate the incoming state. * * Compared to just drm_atomic_crtc_state_for_each_plane() this also fills in a * const plane_state. This is useful when a driver just wants to peek at other * active planes on this CRTC, but does not need to change it. */ #define drm_atomic_crtc_state_for_each_plane_state(plane, plane_state, crtc_state) \ drm_for_each_plane_mask(plane, (crtc_state)->state->dev, (crtc_state)->plane_mask) \ for_each_if ((plane_state = \ __drm_atomic_get_current_plane_state((crtc_state)->state, \ plane))) /** * drm_atomic_plane_enabling - check whether a plane is being enabled * @old_plane_state: old atomic plane state * @new_plane_state: new atomic plane state * * Checks the atomic state of a plane to determine whether it's being enabled * or not. This also WARNs if it detects an invalid state (both CRTC and FB * need to either both be NULL or both be non-NULL). * * RETURNS: * True if the plane is being enabled, false otherwise. */ static inline bool drm_atomic_plane_enabling(struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state) { /* * When enabling a plane, CRTC and FB should always be set together. * Anything else should be considered a bug in the atomic core, so we * gently warn about it. */ WARN_ON((!new_plane_state->crtc && new_plane_state->fb) || (new_plane_state->crtc && !new_plane_state->fb)); return !old_plane_state->crtc && new_plane_state->crtc; } /** * drm_atomic_plane_disabling - check whether a plane is being disabled * @old_plane_state: old atomic plane state * @new_plane_state: new atomic plane state * * Checks the atomic state of a plane to determine whether it's being disabled * or not. This also WARNs if it detects an invalid state (both CRTC and FB * need to either both be NULL or both be non-NULL). * * RETURNS: * True if the plane is being disabled, false otherwise. */ static inline bool drm_atomic_plane_disabling(struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state) { /* * When disabling a plane, CRTC and FB should always be NULL together. * Anything else should be considered a bug in the atomic core, so we * gently warn about it. */ WARN_ON((new_plane_state->crtc == NULL && new_plane_state->fb != NULL) || (new_plane_state->crtc != NULL && new_plane_state->fb == NULL)); return old_plane_state->crtc && !new_plane_state->crtc; } u32 * drm_atomic_helper_bridge_propagate_bus_fmt(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, u32 output_fmt, unsigned int *num_input_fmts); #endif /* DRM_ATOMIC_HELPER_H_ */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| bridge | Folder | 0755 |
|
|
| clients | Folder | 0755 |
|
|
| display | Folder | 0755 |
|
|
| i2c | Folder | 0755 |
|
|
| intel | Folder | 0755 |
|
|
| ttm | Folder | 0755 |
|
|
| amd_asic_type.h | File | 2.35 KB | 0644 |
|
| drm_accel.h | File | 2.29 KB | 0644 |
|
| drm_atomic.h | File | 43.1 KB | 0644 |
|
| drm_atomic_helper.h | File | 10.78 KB | 0644 |
|
| drm_atomic_state_helper.h | File | 4.42 KB | 0644 |
|
| drm_atomic_uapi.h | File | 2.06 KB | 0644 |
|
| drm_audio_component.h | File | 3.84 KB | 0644 |
|
| drm_auth.h | File | 4.18 KB | 0644 |
|
| drm_blend.h | File | 2.35 KB | 0644 |
|
| drm_bridge.h | File | 38.15 KB | 0644 |
|
| drm_bridge_connector.h | File | 405 B | 0644 |
|
| drm_buddy.h | File | 4.57 KB | 0644 |
|
| drm_cache.h | File | 3.3 KB | 0644 |
|
| drm_client.h | File | 6.3 KB | 0644 |
|
| drm_client_event.h | File | 897 B | 0644 |
|
| drm_color_mgmt.h | File | 3.91 KB | 0644 |
|
| drm_connector.h | File | 74.11 KB | 0644 |
|
| drm_crtc.h | File | 44.52 KB | 0644 |
|
| drm_crtc_helper.h | File | 2.51 KB | 0644 |
|
| drm_damage_helper.h | File | 3.33 KB | 0644 |
|
| drm_debugfs.h | File | 5.68 KB | 0644 |
|
| drm_debugfs_crc.h | File | 2.76 KB | 0644 |
|
| drm_device.h | File | 7.64 KB | 0644 |
|
| drm_drv.h | File | 17.32 KB | 0644 |
|
| drm_edid.h | File | 15.5 KB | 0644 |
|
| drm_eld.h | File | 4.76 KB | 0644 |
|
| drm_encoder.h | File | 11.07 KB | 0644 |
|
| drm_encoder_slave.h | File | 7.39 KB | 0644 |
|
| drm_exec.h | File | 4.3 KB | 0644 |
|
| drm_fb_dma_helper.h | File | 718 B | 0644 |
|
| drm_fb_helper.h | File | 11.68 KB | 0644 |
|
| drm_fbdev_dma.h | File | 461 B | 0644 |
|
| drm_fbdev_shmem.h | File | 475 B | 0644 |
|
| drm_fbdev_ttm.h | File | 488 B | 0644 |
|
| drm_file.h | File | 14.65 KB | 0644 |
|
| drm_fixed.h | File | 5.26 KB | 0644 |
|
| drm_flip_work.h | File | 2.63 KB | 0644 |
|
| drm_format_helper.h | File | 5.34 KB | 0644 |
|
| drm_fourcc.h | File | 9.99 KB | 0644 |
|
| drm_framebuffer.h | File | 10.04 KB | 0644 |
|
| drm_gem.h | File | 18.97 KB | 0644 |
|
| drm_gem_atomic_helper.h | File | 5.52 KB | 0644 |
|
| drm_gem_dma_helper.h | File | 9.29 KB | 0644 |
|
| drm_gem_framebuffer_helper.h | File | 1.93 KB | 0644 |
|
| drm_gem_shmem_helper.h | File | 8.21 KB | 0644 |
|
| drm_gem_ttm_helper.h | File | 822 B | 0644 |
|
| drm_gem_vram_helper.h | File | 5.73 KB | 0644 |
|
| drm_gpuvm.h | File | 33.53 KB | 0644 |
|
| drm_ioctl.h | File | 5.82 KB | 0644 |
|
| drm_kunit_helpers.h | File | 4.21 KB | 0644 |
|
| drm_lease.h | File | 1.01 KB | 0644 |
|
| drm_managed.h | File | 3.99 KB | 0644 |
|
| drm_mipi_dbi.h | File | 7.08 KB | 0644 |
|
| drm_mipi_dsi.h | File | 17.52 KB | 0644 |
|
| drm_mm.h | File | 17.46 KB | 0644 |
|
| drm_mode_config.h | File | 32.7 KB | 0644 |
|
| drm_mode_object.h | File | 5.46 KB | 0644 |
|
| drm_modes.h | File | 19.99 KB | 0644 |
|
| drm_modeset_helper.h | File | 1.77 KB | 0644 |
|
| drm_modeset_helper_vtables.h | File | 61.02 KB | 0644 |
|
| drm_modeset_lock.h | File | 7.07 KB | 0644 |
|
| drm_module.h | File | 3.72 KB | 0644 |
|
| drm_of.h | File | 5.5 KB | 0644 |
|
| drm_panel.h | File | 8.89 KB | 0644 |
|
| drm_panic.h | File | 5.33 KB | 0644 |
|
| drm_pciids.h | File | 61.04 KB | 0644 |
|
| drm_plane.h | File | 31.3 KB | 0644 |
|
| drm_plane_helper.h | File | 2.22 KB | 0644 |
|
| drm_prime.h | File | 4.21 KB | 0644 |
|
| drm_print.h | File | 22.7 KB | 0644 |
|
| drm_privacy_screen_consumer.h | File | 1.94 KB | 0644 |
|
| drm_privacy_screen_driver.h | File | 2.99 KB | 0644 |
|
| drm_privacy_screen_machine.h | File | 1.25 KB | 0644 |
|
| drm_probe_helper.h | File | 1.68 KB | 0644 |
|
| drm_property.h | File | 11.99 KB | 0644 |
|
| drm_rect.h | File | 7.52 KB | 0644 |
|
| drm_self_refresh_helper.h | File | 594 B | 0644 |
|
| drm_simple_kms_helper.h | File | 9.52 KB | 0644 |
|
| drm_suballoc.h | File | 2.74 KB | 0644 |
|
| drm_syncobj.h | File | 3.95 KB | 0644 |
|
| drm_sysfs.h | File | 512 B | 0644 |
|
| drm_util.h | File | 2.58 KB | 0644 |
|
| drm_utils.h | File | 592 B | 0644 |
|
| drm_vblank.h | File | 10.18 KB | 0644 |
|
| drm_vblank_work.h | File | 1.99 KB | 0644 |
|
| drm_vma_manager.h | File | 8.23 KB | 0644 |
|
| drm_writeback.h | File | 4.45 KB | 0644 |
|
| gpu_scheduler.h | File | 21.21 KB | 0644 |
|
| gud.h | File | 11.65 KB | 0644 |
|
| spsc_queue.h | File | 3.08 KB | 0644 |
|
| task_barrier.h | File | 2.95 KB | 0644 |
|