1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/*
* 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 <hardware/gralloc.h>
#include <system/graphics.h>
/* 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 <gralloc_drm.h>.
* 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
|