drm: Conslidate blending properties in drm_blend.[hc]
Imo zpos, rotatation, blending eq (once we have it) and all that should be in drm_blend.c, since those are all about how exactly the pixels are rendered onto the CRTC's visible area. Also noticed that one exported function accidentally ended up in drm_crtc_internal.h, move it to the right place too. Reviewed-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Signed-off-by: Sean Paul <seanpaul@chromium.org> Link: http://patchwork.freedesktop.org/patch/msgid/1474448370-32227-3-git-send-email-daniel.vetter@ffwll.ch
This commit is contained in:
@@ -25,13 +25,62 @@
|
||||
*/
|
||||
#include <drm/drmP.h>
|
||||
#include <drm/drm_atomic.h>
|
||||
#include <drm/drm_crtc.h>
|
||||
#include <drm/drm_blend.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/sort.h>
|
||||
|
||||
#include "drm_crtc_internal.h"
|
||||
|
||||
struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev,
|
||||
unsigned int supported_rotations)
|
||||
{
|
||||
static const struct drm_prop_enum_list props[] = {
|
||||
{ __builtin_ffs(DRM_ROTATE_0) - 1, "rotate-0" },
|
||||
{ __builtin_ffs(DRM_ROTATE_90) - 1, "rotate-90" },
|
||||
{ __builtin_ffs(DRM_ROTATE_180) - 1, "rotate-180" },
|
||||
{ __builtin_ffs(DRM_ROTATE_270) - 1, "rotate-270" },
|
||||
{ __builtin_ffs(DRM_REFLECT_X) - 1, "reflect-x" },
|
||||
{ __builtin_ffs(DRM_REFLECT_Y) - 1, "reflect-y" },
|
||||
};
|
||||
|
||||
return drm_property_create_bitmask(dev, 0, "rotation",
|
||||
props, ARRAY_SIZE(props),
|
||||
supported_rotations);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_create_rotation_property);
|
||||
|
||||
/**
|
||||
* drm_rotation_simplify() - Try to simplify the rotation
|
||||
* @rotation: Rotation to be simplified
|
||||
* @supported_rotations: Supported rotations
|
||||
*
|
||||
* Attempt to simplify the rotation to a form that is supported.
|
||||
* Eg. if the hardware supports everything except DRM_REFLECT_X
|
||||
* one could call this function like this:
|
||||
*
|
||||
* drm_rotation_simplify(rotation, DRM_ROTATE_0 |
|
||||
* DRM_ROTATE_90 | DRM_ROTATE_180 |
|
||||
* DRM_ROTATE_270 | DRM_REFLECT_Y);
|
||||
*
|
||||
* to eliminate the DRM_ROTATE_X flag. Depending on what kind of
|
||||
* transforms the hardware supports, this function may not
|
||||
* be able to produce a supported transform, so the caller should
|
||||
* check the result afterwards.
|
||||
*/
|
||||
unsigned int drm_rotation_simplify(unsigned int rotation,
|
||||
unsigned int supported_rotations)
|
||||
{
|
||||
if (rotation & ~supported_rotations) {
|
||||
rotation ^= DRM_REFLECT_X | DRM_REFLECT_Y;
|
||||
rotation = (rotation & DRM_REFLECT_MASK) |
|
||||
BIT((ffs(rotation & DRM_ROTATE_MASK) + 1) % 4);
|
||||
}
|
||||
|
||||
return rotation;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_rotation_simplify);
|
||||
|
||||
/**
|
||||
* drm_plane_create_zpos_property - create mutable zpos property
|
||||
* @plane: drm plane
|
||||
|
Reference in New Issue
Block a user