1e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik/* 2e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * Copyright (C) 2014 The Android Open Source Project 3e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * 4e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * Licensed under the Apache License, Version 2.0 (the "License"); 5e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * you may not use this file except in compliance with the License. 6e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * You may obtain a copy of the License at 7e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * 8e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * http://www.apache.org/licenses/LICENSE-2.0 9e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * 10e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * Unless required by applicable law or agreed to in writing, software 11e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * distributed under the License is distributed on an "AS IS" BASIS, 12e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * See the License for the specific language governing permissions and 14e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik * limitations under the License. 15e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik */ 16e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik#ifndef GLUTILS_H 17e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik#define GLUTILS_H 18e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik 192de7771740ee08fcaff638ec6b2e460bb72fff04John Reck#include "Debug.h" 202de7771740ee08fcaff638ec6b2e460bb72fff04John Reck 2152eb4e01a49fe2e94555c000de38bbcbbb13401bMark Salyzyn#include <log/log.h> 229372ac3621848085e77b867f220c0b5ffce4010dJohn Reck 23e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craiknamespace android { 24e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craiknamespace uirenderer { 25e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik 26975591a7af883d866d86ab819e164c6004694744John Reck 272de7771740ee08fcaff638ec6b2e460bb72fff04John Reck#if DEBUG_OPENGL 28975591a7af883d866d86ab819e164c6004694744John Reck#define GL_CHECKPOINT(LEVEL) \ 29975591a7af883d866d86ab819e164c6004694744John Reck do { if (DEBUG_OPENGL >= DEBUG_LEVEL_##LEVEL) {\ 30694d499662838123f474f41b31dea84ec5d563f0sergeyv LOG_ALWAYS_FATAL_IF(android::uirenderer::GLUtils::dumpGLErrors(),\ 31975591a7af883d866d86ab819e164c6004694744John Reck "GL errors! %s:%d", __FILE__, __LINE__);\ 32975591a7af883d866d86ab819e164c6004694744John Reck } } while (0) 339372ac3621848085e77b867f220c0b5ffce4010dJohn Reck#else 34975591a7af883d866d86ab819e164c6004694744John Reck#define GL_CHECKPOINT(LEVEL) 359372ac3621848085e77b867f220c0b5ffce4010dJohn Reck#endif 369372ac3621848085e77b867f220c0b5ffce4010dJohn Reck 37e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craikclass GLUtils { 38e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craikpublic: 39e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik /** 405686bae28926dae6e4b4d380d75d18e77335c9d3Chris Craik * Print out any GL errors with ALOGE, returns true if any errors were found. 41975591a7af883d866d86ab819e164c6004694744John Reck * You probably want to use GL_CHECKPOINT(LEVEL) instead of calling this directly 42e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik */ 435686bae28926dae6e4b4d380d75d18e77335c9d3Chris Craik static bool dumpGLErrors(); 44e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik 45e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik}; // class GLUtils 46e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik 47e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik} /* namespace uirenderer */ 48e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik} /* namespace android */ 49e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik 50e4aa95e3627226bcb0d8cc3e42dca6e4df8f421cChris Craik#endif /* GLUTILS_H */ 51