From f29b1b6e44eed37fb833e1c2f3aebb01c83513d3 Mon Sep 17 00:00:00 2001 From: Gurchetan Singh Date: Thu, 14 Nov 2019 18:00:30 -0800 Subject: [PATCH] vrend: add vrend_util.h file For random stuff not in src/util.h util_bitmask is too heavyweight for what I was looking for. v2: Make macros return 0 or 1 (@davidriley) v3: static inline macros (@gerddie) Reviewed-by: Gert Wollny --- src/Makefile.am | 1 + src/meson.build | 3 ++- src/vrend_util.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/vrend_util.h diff --git a/src/Makefile.am b/src/Makefile.am index 2ce04dc..5a8dab0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -37,6 +37,7 @@ libvrend_la_SOURCES = \ vrend_strbuf.h \ vrend_tweaks.c \ vrend_tweaks.h \ + vrend_util.h \ iov.c if HAVE_EPOXY_EGL diff --git a/src/meson.build b/src/meson.build index 1a32d9c..82d33f6 100644 --- a/src/meson.build +++ b/src/meson.build @@ -44,7 +44,8 @@ virglrenderer_sources = [ 'vrend_shader.h', 'vrend_strbuf.h', 'vrend_tweaks.c', - 'vrend_tweaks.h' + 'vrend_tweaks.h', + 'vrend_util.h', ] virglrenderer_egl_sources = [ diff --git a/src/vrend_util.h b/src/vrend_util.h new file mode 100644 index 0000000..7a0f344 --- /dev/null +++ b/src/vrend_util.h @@ -0,0 +1,43 @@ +/************************************************************************** + * + * Copyright (C) 2019 Chromium. + * + * 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 AUTHORS OR COPYRIGHT HOLDERS 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. + * + **************************************************************************/ + +#include +#include + +#define BIT(n) (UINT32_C(1) << (n)) + +static inline bool has_bit(uint32_t mask, uint32_t bit) +{ + return !!(mask & bit); +} + +static inline bool has_bits(uint32_t mask, uint32_t bits) +{ + return !!((mask & bits) == bits); +} + +static inline bool is_only_bit(uint32_t mask, uint32_t bit) +{ + return (mask == bit); +}