1e5c31af7Sopenharmony_ci/*------------------------------------------------------------------------- 2e5c31af7Sopenharmony_ci * drawElements Quality Program OpenGL ES Utilities 3e5c31af7Sopenharmony_ci * ------------------------------------------------ 4e5c31af7Sopenharmony_ci * 5e5c31af7Sopenharmony_ci * Copyright 2014 The Android Open Source Project 6e5c31af7Sopenharmony_ci * 7e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 8e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License. 9e5c31af7Sopenharmony_ci * You may obtain a copy of the License at 10e5c31af7Sopenharmony_ci * 11e5c31af7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 12e5c31af7Sopenharmony_ci * 13e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 14e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 15e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and 17e5c31af7Sopenharmony_ci * limitations under the License. 18e5c31af7Sopenharmony_ci * 19e5c31af7Sopenharmony_ci *//*! 20e5c31af7Sopenharmony_ci * \file 21e5c31af7Sopenharmony_ci * \brief GL call wrapper for logging. 22e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/ 23e5c31af7Sopenharmony_ci 24e5c31af7Sopenharmony_ci#include "gluCallLogWrapper.hpp" 25e5c31af7Sopenharmony_ci#include "gluStrUtil.hpp" 26e5c31af7Sopenharmony_ci#include "glwFunctions.hpp" 27e5c31af7Sopenharmony_ci#include "glwEnums.hpp" 28e5c31af7Sopenharmony_ci 29e5c31af7Sopenharmony_ciusing tcu::TestLog; 30e5c31af7Sopenharmony_ciusing tcu::toHex; 31e5c31af7Sopenharmony_ci 32e5c31af7Sopenharmony_cinamespace glu 33e5c31af7Sopenharmony_ci{ 34e5c31af7Sopenharmony_ci 35e5c31af7Sopenharmony_ciCallLogWrapper::CallLogWrapper (const glw::Functions& gl, tcu::TestLog& log) 36e5c31af7Sopenharmony_ci : m_gl (gl) 37e5c31af7Sopenharmony_ci , m_log (log) 38e5c31af7Sopenharmony_ci , m_enableLog (false) 39e5c31af7Sopenharmony_ci{ 40e5c31af7Sopenharmony_ci} 41e5c31af7Sopenharmony_ci 42e5c31af7Sopenharmony_ciCallLogWrapper::~CallLogWrapper (void) 43e5c31af7Sopenharmony_ci{ 44e5c31af7Sopenharmony_ci} 45e5c31af7Sopenharmony_ci 46e5c31af7Sopenharmony_citemplate <typename T> 47e5c31af7Sopenharmony_ciinline tcu::Format::ArrayPointer<T> getPointerStr (const T* arr, deUint32 size) 48e5c31af7Sopenharmony_ci{ 49e5c31af7Sopenharmony_ci return tcu::formatArray(arr, (int)size); 50e5c31af7Sopenharmony_ci} 51e5c31af7Sopenharmony_ci 52e5c31af7Sopenharmony_citemplate <typename T> 53e5c31af7Sopenharmony_ciinline tcu::Format::ArrayPointer<T> getPointerStr (const T* arr, int size) 54e5c31af7Sopenharmony_ci{ 55e5c31af7Sopenharmony_ci return tcu::formatArray(arr, de::max(size, 0)); 56e5c31af7Sopenharmony_ci} 57e5c31af7Sopenharmony_ci 58e5c31af7Sopenharmony_ci// String formatter. 59e5c31af7Sopenharmony_ci 60e5c31af7Sopenharmony_ciclass StringFmt 61e5c31af7Sopenharmony_ci{ 62e5c31af7Sopenharmony_cipublic: 63e5c31af7Sopenharmony_ci const glw::GLchar* str; 64e5c31af7Sopenharmony_ci StringFmt (const glw::GLchar* str_) : str(str_) {} 65e5c31af7Sopenharmony_ci}; 66e5c31af7Sopenharmony_ci 67e5c31af7Sopenharmony_ciinline std::ostream& operator<< (std::ostream& str, StringFmt fmt) 68e5c31af7Sopenharmony_ci{ 69e5c31af7Sopenharmony_ci return str << (fmt.str ? (const char*)fmt.str : "NULL"); 70e5c31af7Sopenharmony_ci} 71e5c31af7Sopenharmony_ci 72e5c31af7Sopenharmony_ciinline StringFmt getStringStr (const char* value) { return StringFmt(value); } 73e5c31af7Sopenharmony_ciinline StringFmt getStringStr (const glw::GLubyte* value) { return StringFmt((const char*)value); } 74e5c31af7Sopenharmony_ci 75e5c31af7Sopenharmony_ci// Framebuffer parameter pointer formatter. 76e5c31af7Sopenharmony_ci 77e5c31af7Sopenharmony_ciclass FboParamPtrFmt 78e5c31af7Sopenharmony_ci{ 79e5c31af7Sopenharmony_cipublic: 80e5c31af7Sopenharmony_ci deUint32 param; 81e5c31af7Sopenharmony_ci const int* value; 82e5c31af7Sopenharmony_ci 83e5c31af7Sopenharmony_ci FboParamPtrFmt (deUint32 param_, const int* value_) : param(param_), value(value_) {} 84e5c31af7Sopenharmony_ci}; 85e5c31af7Sopenharmony_ci 86e5c31af7Sopenharmony_cistd::ostream& operator<< (std::ostream& str, FboParamPtrFmt fmt) 87e5c31af7Sopenharmony_ci{ 88e5c31af7Sopenharmony_ci if (fmt.value) 89e5c31af7Sopenharmony_ci { 90e5c31af7Sopenharmony_ci switch (fmt.param) 91e5c31af7Sopenharmony_ci { 92e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 93e5c31af7Sopenharmony_ci return str << tcu::Format::Enum<int, 2>(getFramebufferAttachmentTypeName, *fmt.value); 94e5c31af7Sopenharmony_ci 95e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 96e5c31af7Sopenharmony_ci return str << tcu::Format::Enum<int, 2>(getCubeMapFaceName, *fmt.value); 97e5c31af7Sopenharmony_ci 98e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 99e5c31af7Sopenharmony_ci return str << tcu::Format::Enum<int, 2>(getTypeName, *fmt.value); 100e5c31af7Sopenharmony_ci 101e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 102e5c31af7Sopenharmony_ci return str << tcu::Format::Enum<int, 2>(getFramebufferColorEncodingName, *fmt.value); 103e5c31af7Sopenharmony_ci 104e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_LAYERED: 105e5c31af7Sopenharmony_ci return str << tcu::Format::Enum<int, 2>(getBooleanName, *fmt.value); 106e5c31af7Sopenharmony_ci 107e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 108e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 109e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 110e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: 111e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 112e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 113e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 114e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 115e5c31af7Sopenharmony_ci case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 116e5c31af7Sopenharmony_ci return str << *fmt.value; 117e5c31af7Sopenharmony_ci 118e5c31af7Sopenharmony_ci default: 119e5c31af7Sopenharmony_ci return str << tcu::toHex(*fmt.value); 120e5c31af7Sopenharmony_ci } 121e5c31af7Sopenharmony_ci } 122e5c31af7Sopenharmony_ci else 123e5c31af7Sopenharmony_ci return str << "(null)"; 124e5c31af7Sopenharmony_ci} 125e5c31af7Sopenharmony_ci 126e5c31af7Sopenharmony_ciinline FboParamPtrFmt getFramebufferAttachmentParameterValueStr (deUint32 param, const int* value) 127e5c31af7Sopenharmony_ci{ 128e5c31af7Sopenharmony_ci return FboParamPtrFmt(param, value); 129e5c31af7Sopenharmony_ci} 130e5c31af7Sopenharmony_ci 131e5c31af7Sopenharmony_ci#include "gluQueryUtil.inl" 132e5c31af7Sopenharmony_ci#include "gluCallLogUtil.inl" 133e5c31af7Sopenharmony_ci 134e5c31af7Sopenharmony_ci// API entry-point implementations are auto-generated 135e5c31af7Sopenharmony_ci#include "gluCallLogWrapper.inl" 136e5c31af7Sopenharmony_ci 137e5c31af7Sopenharmony_ci} // glu 138