1e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#ifndef ANDROID_DVR_DEBUG_H_
2e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#define ANDROID_DVR_DEBUG_H_
3e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
4e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#include <GLES3/gl3.h>
5e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#include <math.h>
6e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
74fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko#include <log/log.h>
8e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
9e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#ifndef NDEBUG
104fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko#define CHECK_GL()                   \
114fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko  do {                               \
124fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko    const GLenum err = glGetError(); \
134fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko    if (err != GL_NO_ERROR) {        \
144fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko      ALOGE("OpenGL error %d", err); \
154fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko    }                                \
16e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  } while (0)
17e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
18e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#define CHECK_GL_FBO()                                        \
19e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  do {                                                        \
20e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko    GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); \
21e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko    switch (status) {                                         \
22e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko      case GL_FRAMEBUFFER_COMPLETE:                           \
23e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko        break;                                                \
24e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko      case GL_FRAMEBUFFER_UNSUPPORTED:                        \
254fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko        ALOGE("GL_FRAMEBUFFER_UNSUPPORTED");                  \
26e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko        break;                                                \
27e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko      default:                                                \
284fe60582f314e381098f8f3bc2e39c5880e9243aAlex Vakulenko        ALOGE("FBO user error: %d", status);                  \
29e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko        break;                                                \
30e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko    }                                                         \
31e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko  } while (0)
32e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#else
33e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#define CHECK_GL()
34e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#define CHECK_GL_FBO()
35e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#endif
36e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko
37e4eec20f6263f4a42ae462456f60ea6c4518bb0aAlex Vakulenko#endif  // ANDROID_DVR_DEBUG_H_
38