/* * Copyright 2016 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef CROS_GRALLOC_HELPERS_H #define CROS_GRALLOC_HELPERS_H #include "../drv.h" #include "cros_gralloc_handle.h" #include #include /* Use these error codes derived from gralloc1 to make transition easier when * it happens */ typedef enum { CROS_GRALLOC_ERROR_NONE = 0, CROS_GRALLOC_ERROR_BAD_DESCRIPTOR = 1, CROS_GRALLOC_ERROR_BAD_HANDLE = 2, CROS_GRALLOC_ERROR_BAD_VALUE = 3, CROS_GRALLOC_ERROR_NOT_SHARED = 4, CROS_GRALLOC_ERROR_NO_RESOURCES = 5, CROS_GRALLOC_ERROR_UNDEFINED = 6, CROS_GRALLOC_ERROR_UNSUPPORTED = 7, } cros_gralloc_error_t; /* This enumeration must match the one in . * The functions supported by this gralloc's temporary private API are listed * below. Use of these functions is highly discouraged and should only be * reserved for cases where no alternative to get same information (such as * querying ANativeWindow) exists. */ // clang-format off enum { GRALLOC_DRM_GET_STRIDE, GRALLOC_DRM_GET_FORMAT, GRALLOC_DRM_GET_DIMENSIONS, GRALLOC_DRM_GET_BACKING_STORE, }; // clang-format on constexpr uint32_t cros_gralloc_magic(void) { return 0xABCDDCBA; } constexpr uint32_t num_ints_handle() { return ((sizeof(struct cros_gralloc_handle)) / sizeof(int)); } constexpr uint32_t sw_access(void) { return GRALLOC_USAGE_SW_READ_MASK | GRALLOC_USAGE_SW_WRITE_MASK; } constexpr uint32_t sw_read(void) { return GRALLOC_USAGE_SW_READ_MASK; } constexpr uint32_t sw_write(void) { return GRALLOC_USAGE_SW_WRITE_MASK; } uint64_t cros_gralloc_convert_flags(int flags); uint32_t cros_gralloc_convert_format(int format); int32_t cros_gralloc_rendernode_open(struct driver **drv); int32_t cros_gralloc_validate_handle(struct cros_gralloc_handle *hnd); /* Logging code adapted from bsdrm */ __attribute__((format(printf, 4, 5))) void cros_gralloc_log(const char *prefix, const char *file, int line, const char *format, ...); #define cros_gralloc_error(...) \ do { \ cros_gralloc_log("CROS_GRALLOC_ERROR", __FILE__, __LINE__, __VA_ARGS__); \ } while (0) #endif