blob: 13fed787bc61ff115b7352d17cbddb55b4db05a2 (
plain)
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
|
#include "android_gl_utils.hpp"
#include "base/logging.hpp"
#include "base/src_point.hpp"
#include "base/string_utils.hpp"
namespace android
{
ConfigComparator::ConfigComparator(EGLDisplay display)
: m_display(display)
{
}
bool ConfigComparator::operator()(EGLConfig const & l, EGLConfig const & r) const
{
int const weight = configWeight(l) - configWeight(r);
if (weight == 0)
return configAlphaSize(l) < configAlphaSize(r);
return weight < 0;
}
int ConfigComparator::configWeight(EGLConfig const & config) const
{
int val = -1;
eglGetConfigAttrib(m_display, config, EGL_CONFIG_CAVEAT, &val);
switch (val)
{
case EGL_NONE:
return 0;
case EGL_SLOW_CONFIG:
return 1;
case EGL_NON_CONFORMANT_CONFIG:
return 2;
default:
return 0;
}
}
int ConfigComparator::configAlphaSize(EGLConfig const & config) const
{
int val = 0;
eglGetConfigAttrib(m_display, config, EGL_ALPHA_SIZE, &val);
return val;
}
namespace
{
std::string GetEglError(EGLint error)
{
switch (error)
{
case EGL_NOT_INITIALIZED : return "EGL_NOT_INITIALIZED";
case EGL_BAD_ACCESS : return "EGL_BAD_ACCESS";
case EGL_BAD_ALLOC : return "EGL_BAD_ALLOC";
case EGL_BAD_ATTRIBUTE : return "EGL_BAD_ATTRIBUTE";
case EGL_BAD_CONFIG : return "EGL_BAD_CONFIG";
case EGL_BAD_CONTEXT : return "EGL_BAD_CONTEXT";
case EGL_BAD_CURRENT_SURFACE : return "EGL_BAD_CURRENT_SURFACE";
case EGL_BAD_DISPLAY : return "EGL_BAD_DISPLAY";
case EGL_BAD_MATCH : return "EGL_BAD_MATCH";
case EGL_BAD_NATIVE_PIXMAP : return "EGL_BAD_NATIVE_PIXMAP";
case EGL_BAD_NATIVE_WINDOW : return "EGL_BAD_NATIVE_WINDOW";
case EGL_BAD_PARAMETER : return "EGL_BAD_PARAMETER";
case EGL_BAD_SURFACE : return "EGL_BAD_SURFACE";
case EGL_CONTEXT_LOST : return "EGL_CONTEXT_LOST";
default: return strings::to_string(error);
}
}
} // namespace
void CheckEGL(my::SrcPoint const & src)
{
EGLint error = eglGetError();
while (error != EGL_SUCCESS)
{
LOG(LERROR, ("SrcPoint : ", src, ". EGL error : ", GetEglError(error)));
error = eglGetError();
}
}
} // namespace android
|