mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
video: pixel_format: Add compare helpers
Add helpers that compare two pixel-format descriptions against each other. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://lore.kernel.org/r/20250714151513.309475-2-tzimmermann@suse.de
This commit is contained in:
parent
cbdd16b818
commit
cff5fb8273
|
|
@ -38,4 +38,62 @@ struct pixel_format {
|
|||
#define PIXEL_FORMAT_XRGB2101010 \
|
||||
{ 32, false, { .alpha = {0, 0}, .red = {20, 10}, .green = {10, 10}, .blue = {0, 10} } }
|
||||
|
||||
#define __pixel_format_cmp_field(lhs, rhs, name) \
|
||||
{ \
|
||||
int ret = ((lhs)->name) - ((rhs)->name); \
|
||||
if (ret) \
|
||||
return ret; \
|
||||
}
|
||||
|
||||
#define __pixel_format_cmp_bitfield(lhs, rhs, name) \
|
||||
{ \
|
||||
__pixel_format_cmp_field(lhs, rhs, name.offset); \
|
||||
__pixel_format_cmp_field(lhs, rhs, name.length); \
|
||||
}
|
||||
|
||||
/**
|
||||
* pixel_format_cmp - Compares two pixel-format descriptions
|
||||
*
|
||||
* @lhs: a pixel-format description
|
||||
* @rhs: a pixel-format description
|
||||
*
|
||||
* Compares two pixel-format descriptions for their order. The semantics
|
||||
* are equivalent to memcmp().
|
||||
*
|
||||
* Returns:
|
||||
* 0 if both arguments describe the same pixel format, less-than-zero if lhs < rhs,
|
||||
* or greater-than-zero if lhs > rhs.
|
||||
*/
|
||||
static inline int pixel_format_cmp(const struct pixel_format *lhs, const struct pixel_format *rhs)
|
||||
{
|
||||
__pixel_format_cmp_field(lhs, rhs, bits_per_pixel);
|
||||
__pixel_format_cmp_field(lhs, rhs, indexed);
|
||||
|
||||
if (lhs->indexed) {
|
||||
__pixel_format_cmp_bitfield(lhs, rhs, index);
|
||||
} else {
|
||||
__pixel_format_cmp_bitfield(lhs, rhs, alpha);
|
||||
__pixel_format_cmp_bitfield(lhs, rhs, red);
|
||||
__pixel_format_cmp_bitfield(lhs, rhs, green);
|
||||
__pixel_format_cmp_bitfield(lhs, rhs, blue);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* pixel_format_equal - Compares two pixel-format descriptions for equality
|
||||
*
|
||||
* @lhs: a pixel-format description
|
||||
* @rhs: a pixel-format description
|
||||
*
|
||||
* Returns:
|
||||
* True if both arguments describe the same pixel format, or false otherwise.
|
||||
*/
|
||||
static inline bool pixel_format_equal(const struct pixel_format *lhs,
|
||||
const struct pixel_format *rhs)
|
||||
{
|
||||
return !pixel_format_cmp(lhs, rhs);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user