INCLUDE_DIRS="-I. -I../libdrm/include/drm -Iinclude -I/usr/include/libdrm -I./.ci/android_headers -I./tests/test_include"
-CLANG="clang++-11"
-CLANG_TIDY="clang-tidy-11"
+CLANG="clang++-12"
+CLANG_TIDY="clang-tidy-12"
CXXARGS="-fPIC -Wall -Werror -DPLATFORM_SDK_VERSION=30 -D__ANDROID_API__=30 -Wsign-promo -Wimplicit-fallthrough"
CXXARGS+=" -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -Wno-gnu-include-next "
TIDY_COARSE_CHECKS+="-google-readability-braces-around-statements,"
TIDY_COARSE_CHECKS+="-google-readability-casting,"
TIDY_COARSE_CHECKS+="misc-*,"
+TIDY_COARSE_CHECKS+="-misc-non-private-member-variables-in-classes",
TIDY_COARSE_CHECKS+="modernize-*,"
TIDY_COARSE_CHECKS+="-modernize-avoid-c-arrays,"
TIDY_COARSE_CHECKS+="-modernize-use-trailing-return-type,"
TIDY_COARSE_CHECKS+="portability-*,"
TIDY_COARSE_CHECKS+="readability-*,"
TIDY_COARSE_CHECKS+="-readability-braces-around-statements,"
+TIDY_COARSE_CHECKS+="-readability-function-cognitive-complexity,"
TIDY_COARSE_CHECKS+="-readability-convert-member-functions-to-static,"
TIDY_COARSE_CHECKS+="-readability-implicit-bool-conversion,"
TIDY_COARSE_CHECKS+="-readability-magic-numbers,"
*,
-fuchsia*,
-llvm*,
+ -concurrency-mt-unsafe,
-cppcoreguidelines-pro-type-vararg, -hicpp-vararg,
-hicpp-signed-bitwise,
-image: ubuntu:20.10
+image: ubuntu:21.04
+
+variables:
+ DEBIAN_FRONTEND: noninteractive
before_script:
- apt-get --quiet update --yes >/dev/null
- - apt-get --quiet install --yes clang-11 clang-tidy-11 clang-format-11 git libdrm-dev blueprint-tools libgtest-dev >/dev/null
+ - apt-get --quiet install --yes clang-12 clang-tidy-12 clang-format-12 git libdrm-dev blueprint-tools libgtest-dev >/dev/null
stages:
- build
HWC2::Error DrmHwcTwo::CreateDisplay(hwc2_display_t displ,
HWC2::DisplayType type) {
- DrmDevice *drm = resource_manager_.GetDrmDevice(displ);
+ DrmDevice *drm = resource_manager_.GetDrmDevice(static_cast<int>(displ));
if (!drm) {
ALOGE("Failed to get a valid drmresource");
return HWC2::Error::NoResources;
auto attribute = static_cast<HWC2::Attribute>(attribute_in);
switch (attribute) {
case HWC2::Attribute::Width:
- *value = mode->h_display();
+ *value = static_cast<int>(mode->h_display());
break;
case HWC2::Attribute::Height:
- *value = mode->v_display();
+ *value = static_cast<int>(mode->v_display());
break;
case HWC2::Attribute::VsyncPeriod:
// in nanoseconds
- *value = 1000.0 * 1000.0 * 1000.0 / mode->v_refresh();
+ *value = static_cast<int>(1E9 / mode->v_refresh());
break;
case HWC2::Attribute::DpiX:
// Dots per 1000 inches
- *value = mm_width ? (mode->h_display() * kUmPerInch) / mm_width : -1;
+ *value = mm_width
+ ? static_cast<int>(mode->h_display() * kUmPerInch / mm_width)
+ : -1;
break;
case HWC2::Attribute::DpiY:
// Dots per 1000 inches
- *value = mm_height ? (mode->v_display() * kUmPerInch) / mm_height : -1;
+ *value = mm_height ? static_cast<int>(mode->v_display() * kUmPerInch /
+ mm_height)
+ : -1;
break;
#if PLATFORM_SDK_VERSION > 29
case HWC2::Attribute::ConfigGroup:
hwc_frect_t source_crop = {.left = 0.0F,
.top = 0.0F,
- .right = bo.width + 0.0F,
- .bottom = bo.height + 0.0F};
+ .right = static_cast<float>(bo.width),
+ .bottom = static_cast<float>(bo.height)};
client_layer_.SetLayerSourceCrop(source_crop);
return HWC2::Error::None;
if (mode.id() == 0)
return HWC2::Error::BadConfig;
- *outVsyncPeriod = 1E9 / mode.v_refresh();
+ *outVsyncPeriod = static_cast<hwc2_vsync_period_t>(1E9 / mode.v_refresh());
return HWC2::Error::None;
}
you with formatting of your patches:
```
- git diff | clang-format-diff-11 -p 1 -style=file
+ git diff | clang-format-diff-12 -p 1 -style=file
```
* Hardware specific changes should be tested on relevant platforms before
struct DroidYuvFormat {
/* Lookup keys */
- int native; /* HAL_PIXEL_FORMAT_ */
+ uint32_t native; /* HAL_PIXEL_FORMAT_ */
enum chroma_order chroma_order; /* chroma order is {Cb, Cr} or {Cr, Cb} */
- int chroma_step; /* Distance in bytes between subsequent chroma pixels. */
+ size_t chroma_step; /* Distance in bytes between subsequent chroma pixels. */
/* Result */
int fourcc; /* DRM_FORMAT_ */
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
-static int get_fourcc_yuv(int native, enum chroma_order chroma_order,
- int chroma_step) {
+static int get_fourcc_yuv(uint32_t native, enum chroma_order chroma_order,
+ size_t chroma_step) {
for (auto droid_yuv_format : kDroidYuvFormats)
if (droid_yuv_format.native == native &&
droid_yuv_format.chroma_order == chroma_order &&
return -1;
}
-static bool is_yuv(int native) {
+static bool is_yuv(uint32_t native) {
for (auto droid_yuv_format : kDroidYuvFormats)
if (droid_yuv_format.native == native)
return true;
}
}
-static const char *DPMSModeToString(int dpms_mode) {
+static const char *DPMSModeToString(uint32_t dpms_mode) {
switch (dpms_mode) {
case DRM_MODE_DPMS_ON:
return "ON";
DrmPlane *plane = comp_plane.plane();
std::vector<size_t> &source_layers = comp_plane.source_layers();
- int fb_id = -1;
+ uint32_t fb_id = UINT32_MAX;
int fence_fd = -1;
hwc_rect_t display_frame;
hwc_frect_t source_crop;
rotation |= DRM_MODE_ROTATE_0;
if (fence_fd >= 0) {
- int prop_id = plane->in_fence_fd_property().id();
+ uint32_t prop_id = plane->in_fence_fd_property().id();
if (prop_id == 0) {
ALOGE("Failed to get IN_FENCE_FD property id");
break;
}
// Disable the plane if there's no framebuffer
- if (fb_id < 0) {
+ if (fb_id == UINT32_MAX) {
ret = drmModeAtomicAddProperty(pset, plane->id(),
plane->crtc_property().id(), 0) < 0 ||
drmModeAtomicAddProperty(pset, plane->id(),
uint64_t cur_ts = ts.tv_sec * 1000 * 1000 * 1000 + ts.tv_nsec;
uint64_t num_ms = (cur_ts - dump_last_timestamp_ns_) / (1000 * 1000);
- float fps = num_ms ? (num_frames * 1000.0F) / (num_ms) : 0.0F;
+ float fps = num_ms ? static_cast<float>(num_frames) * 1000.0F /
+ static_cast<float>(num_ms)
+ : 0.0F;
*out << "--DrmDisplayCompositor[" << display_
<< "]: num_frames=" << num_frames << " num_ms=" << num_ms
crtcs_.emplace_back(std::move(crtc));
}
- std::vector<int> possible_clones;
+ std::vector<uint32_t> possible_clones;
for (int i = 0; !ret && i < res->count_encoders; ++i) {
drmModeEncoderPtr e = drmModeGetEncoder(fd(), res->encoders[i]);
if (!e) {
void DrmEventListener::UEventHandler() {
char buffer[1024];
- int ret = 0;
+ ssize_t ret = 0;
struct timespec ts {};
if (!ret)
timestamp = ts.tv_sec * 1000 * 1000 * 1000 + ts.tv_nsec;
else
- ALOGE("Failed to get monotonic clock on hotplug %d", ret);
+ ALOGE("Failed to get monotonic clock on hotplug %zd", ret);
while (true) {
ret = read(uevent_fd_.Get(), &buffer, sizeof(buffer));
return;
if (ret < 0) {
- ALOGE("Got error reading uevent %d", ret);
+ ALOGE("Got error reading uevent %zd", ret);
return;
}
float DrmMode::v_refresh() const {
// Always recalculate refresh to report correct float rate
- return clock_ / (float)(v_total_ * h_total_) * 1000.0F;
+ return static_cast<float>(clock_) / (float)(v_total_ * h_total_) * 1000.0F;
}
uint32_t DrmMode::flags() const {
ALOGW("Vsync worker active with conn=%p refresh=%f\n", conn,
conn ? conn->active_mode().v_refresh() : 0.0F);
- int64_t phased_timestamp = GetPhasedVSync(kOneSecondNs / refresh,
+ int64_t phased_timestamp = GetPhasedVSync(kOneSecondNs /
+ static_cast<int>(refresh),
vsync.tv_sec * kOneSecondNs +
vsync.tv_nsec);
vsync.tv_sec = phased_timestamp / kOneSecondNs;
uint32_t usage;
uint32_t pitches[HWC_DRM_BO_MAX_PLANES];
uint32_t offsets[HWC_DRM_BO_MAX_PLANES];
- uint32_t prime_fds[HWC_DRM_BO_MAX_PLANES];
+ int prime_fds[HWC_DRM_BO_MAX_PLANES];
uint64_t modifiers[HWC_DRM_BO_MAX_PLANES];
int acquire_fence_fd;
} hwc_drm_bo_t;
if (prop == nullptr) {
snprintf(value, PROPERTY_VALUE_MAX, "%s", default_value);
}
- return strlen(value);
+ return static_cast<int>(strlen(value));
}
#endif