Now About Social Code
summaryrefslogtreecommitdiff
path: root/apps/surfaceless.c
blob: 7eb2567fded3d642085fe95314fa4b37abf57dfe (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
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <assert.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>

int main (int32_t argc, char* argv[]) {
    bool res;
    EGLDisplay egl_dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);

    res = eglInitialize(egl_dpy, NULL, NULL);
    assert(res);

    const char *egl_extension_st = eglQueryString(egl_dpy, EGL_EXTENSIONS);
    assert(strstr(egl_extension_st, "EGL_KHR_create_context") != NULL);
    assert(strstr(egl_extension_st, "EGL_KHR_surfaceless_context") != NULL);

    static const EGLint config_attribs[] = {
        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
        EGL_NONE
    };
    EGLConfig cfg;
    EGLint count;

    res = eglChooseConfig(egl_dpy, config_attribs, &cfg, 1, &count);
    assert(res);

    res = eglBindAPI(EGL_OPENGL_ES_API);
    assert(res);

    static const EGLint attribs[] = {
        EGL_CONTEXT_CLIENT_VERSION, 3,
        EGL_NONE
    };
    EGLContext ctx = eglCreateContext(egl_dpy,
            cfg,
            EGL_NO_CONTEXT,
            attribs);
    assert(ctx != EGL_NO_CONTEXT);

    res = eglMakeCurrent(egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, ctx);
    assert(res);

    eglDestroyContext(egl_dpy, ctx);
    eglTerminate(egl_dpy);

    return 0;
}