qpTestLog.h revision ecdef01798ea6069f21fec14dabe3819622f54c0
14e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#ifndef _QPTESTLOG_H
24e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#define _QPTESTLOG_H
34e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/*-------------------------------------------------------------------------
44e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * drawElements Quality Program Helper Library
54e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * -------------------------------------------
64e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
74e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * Copyright 2014 The Android Open Source Project
84e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
94e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * Licensed under the Apache License, Version 2.0 (the "License");
104e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * you may not use this file except in compliance with the License.
114e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * You may obtain a copy of the License at
124e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
134e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *      http://www.apache.org/licenses/LICENSE-2.0
144e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
154e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * Unless required by applicable law or agreed to in writing, software
164e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * distributed under the License is distributed on an "AS IS" BASIS,
174e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
184e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * See the License for the specific language governing permissions and
194e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * limitations under the License.
204e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
214e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *//*!
224e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \defgroup TestLog
234e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \ingroup TestLog
244e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \{
254e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \file
264e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \brief Test log library
274e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
284e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * qpTestLog Conventions:
294e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
304e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * Each function takes qpTestLog pointer. Operations are done on that log
314e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * instance.
324e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
334e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * When function takes a 'name' parameter, that name is exepected to
344e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * be a unique identifier within the scope of one test case. Test case
354e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * begins with a call to qpTestLog_startCase and ends with a call to
364e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * qpTestLog_endCase or qpTestLog_terminateCase. The human readable
374e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * "name" for a piece of information is given with the parameter
384e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * called 'description'.
394e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
404e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * All functions writing to the log return a boolean value. False
414e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * means that the current write operation failed and the current log
424e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * instance should be abandoned.
434e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
444e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *//*--------------------------------------------------------------------*/
454e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
464e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi#include "deDefs.h"
474e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
484e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef struct qpTestLog_s	qpTestLog;
494e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
504e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* Test results supported by current report version */
514e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* \note Keep in sync with TestCaseStatus in Candy project. */
524e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpTestResult_e
534e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
544e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_PASS = 0,				/*!< Test case passed.																	*/
554e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_FAIL,					/*!< Implementation produced incorrect results											*/
564e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_QUALITY_WARNING,			/*!< Result is within specification, but is not of high quality 						*/
574e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_COMPATIBILITY_WARNING,	/*!< Result is within specification, but likely to cause fragmentation in the market 	*/
584e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_PENDING,					/*!< The test is still running. Not a valid end result									*/
594e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_NOT_SUPPORTED,			/*!< Implementation does not support functionality needed by this test case 			*/
604e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_RESOURCE_ERROR,			/*!< Implementation fails to pass the test due to lack of resources						*/
614e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_INTERNAL_ERROR,			/*!< Error occurred within Tester Core													*/
624e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_CRASH,					/*!< Crash occurred in test execution.													*/
634e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_TIMEOUT,					/*!< Timeout occurred in test execution.												*/
644e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
654e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_RESULT_LAST
664e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpTestResult;
674e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
684e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* Test case types. */
694e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpTestCaseType_e
704e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
714e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_CASE_TYPE_SELF_VALIDATE = 0,	/*!< Self-validating test case			*/
724e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_CASE_TYPE_PERFORMANCE,			/*!< Performace test case				*/
734e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_CASE_TYPE_CAPABILITY,			/*!< Capability score case				*/
744e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_CASE_TYPE_ACCURACY,				/*!< Accuracy test case					*/
754e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
764e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_CASE_TYPE_LAST
774e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpTestCaseType;
784e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
794e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/*--------------------------------------------------------------------*//*!
804e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \brief Tag key-value pairs to give cues on proper visualization in GUI
814e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *//*--------------------------------------------------------------------*/
824e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpKeyValueTag_e
834e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
844e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_KEY_TAG_NONE = 0,
854e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_KEY_TAG_PERFORMANCE,
864e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_KEY_TAG_QUALITY,
874e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_KEY_TAG_PRECISION,
884e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_KEY_TAG_TIME,
894e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
904e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	/* Add new values here if needed, remember to update relevant code in qpTestLog.c and change format revision */
914e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
924e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_KEY_TAG_LAST	/* Do not remove */
934e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpKeyValueTag;
944e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
954e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/*--------------------------------------------------------------------*//*!
964e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \brief Sample value tag for giving hints for analysis
974e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *//*--------------------------------------------------------------------*/
984e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpSampleValueTag_e
994e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
1004e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SAMPLE_VALUE_TAG_PREDICTOR = 0,		/*!< Predictor for sample, such as number of operations.	*/
1014e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SAMPLE_VALUE_TAG_RESPONSE,			/*!< Response, i.e. measured value, such as render time.	*/
1024e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1034e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	/* Add new values here if needed, remember to update relevant code in qpTestLog.c and change format revision */
1044e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1054e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SAMPLE_VALUE_TAG_LAST	/* Do not remove */
1064e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpSampleValueTag;
1074e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1084e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* Image compression type. */
1094e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpImageCompressionMode_e
1104e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
1114e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_IMAGE_COMPRESSION_MODE_NONE	= 0,	/*!< Do not compress images.					*/
1124e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_IMAGE_COMPRESSION_MODE_PNG,			/*!< Compress images using lossless libpng.		*/
1134e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_IMAGE_COMPRESSION_MODE_BEST,			/*!< Choose the best image compression mode.	*/
1144e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1154e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_IMAGE_COMPRESSION_MODE_LAST
1164e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpImageCompressionMode;
1174e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1184e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/*--------------------------------------------------------------------*//*!
1194e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * \brief Image formats.
1204e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *
1214e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * Pixels are handled as a byte stream, i.e., endianess does not
1224e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi * affect component ordering.
1234e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi *//*--------------------------------------------------------------------*/
1244e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpImageFormat_e
1254e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
1264e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_IMAGE_FORMAT_RGB888 = 0,
1274e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_IMAGE_FORMAT_RGBA8888,
1284e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1294e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_IMAGE_FORMAT_LAST
1304e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpImageFormat;
1314e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1324e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* Test log flags. */
1334e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpTestLogFlag_e
1344e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
1354e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_LOG_EXCLUDE_IMAGES			= (1<<0),		/*!< Do not log images. This reduces log size considerably.			*/
1364e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_LOG_EXCLUDE_SHADER_SOURCES	= (1<<1),		/*!< Do not log shader sources. Helps to reduce log size further.	*/
1374e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_TEST_LOG_NO_FLUSH				= (1<<2)		/*!< Do not do a fflush after writing the log.						*/
1384e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpTestLogFlag;
1394e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1404e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* Shader type. */
1414e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef enum qpShaderType_e
1424e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
1434e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SHADER_TYPE_VERTEX = 0,
1444e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SHADER_TYPE_FRAGMENT,
1454e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SHADER_TYPE_GEOMETRY,
1464e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SHADER_TYPE_TESS_CONTROL,
1474e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SHADER_TYPE_TESS_EVALUATION,
1484e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SHADER_TYPE_COMPUTE,
1494e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1504e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	QP_SHADER_TYPE_LAST
1514e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpShaderType;
1524e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1534e213d510f437769f8a28578dd4f786fb7d16c4Bill YiDE_BEGIN_EXTERN_C
1544e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1554e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi/* \todo [2013-04-13 pyry] Clean up & document. Do we actually want this? */
1564e213d510f437769f8a28578dd4f786fb7d16c4Bill Yitypedef struct qpEglConfigInfo_s
1574e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi{
1584e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							bufferSize;
1594e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							redSize;
1604e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							greenSize;
1614e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							blueSize;
1624e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							luminanceSize;
1634e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							alphaSize;
1644e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							alphaMaskSize;
1654e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	deBool						bindToTextureRGB;
1664e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	deBool						bindToTextureRGBA;
1674e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	const char*					colorBufferType;
1684e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	const char*					configCaveat;
1694e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							configID;
1704e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	const char*					conformant;
1714e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							depthSize;
1724e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							level;
1734e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							maxPBufferWidth;
1744e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							maxPBufferHeight;
1754e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							maxPBufferPixels;
1764e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							maxSwapInterval;
1774e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							minSwapInterval;
1784e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	deBool						nativeRenderable;
1794e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	const char*					renderableType;
1804e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							sampleBuffers;
1814e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							samples;
1824e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							stencilSize;
1834e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	const char*					surfaceTypes;
1844e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	const char*					transparentType;
1854e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							transparentRedValue;
1864e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							transparentGreenValue;
1874e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi	int							transparentBlueValue;
1884e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi} qpEglConfigInfo;
1894e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1904e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1914e213d510f437769f8a28578dd4f786fb7d16c4Bill YiqpTestLog*		qpTestLog_createFileLog			(const char* fileName, deUint32 flags);
1924e213d510f437769f8a28578dd4f786fb7d16c4Bill Yivoid			qpTestLog_destroy				(qpTestLog* log);
1934e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1944e213d510f437769f8a28578dd4f786fb7d16c4Bill YideBool			qpTestLog_startCase				(qpTestLog* log, const char* testCasePath, qpTestCaseType testCaseType);
1954e213d510f437769f8a28578dd4f786fb7d16c4Bill YideBool			qpTestLog_endCase				(qpTestLog* log, qpTestResult result, const char* description);
1964e213d510f437769f8a28578dd4f786fb7d16c4Bill YideBool			qpTestLog_terminateCase			(qpTestLog* log, qpTestResult result);
1974e213d510f437769f8a28578dd4f786fb7d16c4Bill Yi
1984e213d510f437769f8a28578dd4f786fb7d16c4Bill YideBool 			qpTestLog_writeMessage			(qpTestLog* log, const char* format, ...) DE_PRINTF_FUNC_ATTR(2,3);
1994e213d510f437769f8a28578dd4f786fb7d16c4Bill YideBool 			qpTestLog_startSection			(qpTestLog* log, const char* name, const char* description);
2004e213d510f437769f8a28578dd4f786fb7d16c4Bill YideBool 			qpTestLog_endSection			(qpTestLog* log);
201deBool 			qpTestLog_writeText				(qpTestLog* log, const char* name, const char* description, qpKeyValueTag tag, const char* value);
202deBool 			qpTestLog_writeInteger			(qpTestLog* log, const char* name, const char* description, const char* unit, qpKeyValueTag tag, deInt64 value);
203deBool 			qpTestLog_writeFloat			(qpTestLog* log, const char* name, const char* description, const char* unit, qpKeyValueTag tag, float value);
204
205deBool 			qpTestLog_startImageSet			(qpTestLog* log, const char* name, const char* description);
206deBool 			qpTestLog_endImageSet			(qpTestLog* log);
207deBool 			qpTestLog_writeImage			(qpTestLog* log, const char* name, const char* description, qpImageCompressionMode compressionMode, qpImageFormat format, int width, int height, int stride, const void* data);
208
209deBool 			qpTestLog_startEglConfigSet		(qpTestLog* log, const char* key, const char* description);
210deBool 			qpTestLog_writeEglConfig		(qpTestLog* log, const qpEglConfigInfo* config);
211deBool 			qpTestLog_endEglConfigSet		(qpTestLog* log);
212
213/* \todo [2013-08-26 pyry] Unify ShaderProgram & KernelSource & CompileInfo. */
214
215deBool			qpTestLog_startShaderProgram	(qpTestLog* log, deBool linkOk, const char* linkInfoLog);
216deBool			qpTestLog_endShaderProgram		(qpTestLog* log);
217deBool 			qpTestLog_writeShader			(qpTestLog* log, qpShaderType type, const char* source, deBool compileOk, const char* infoLog);
218
219deBool 			qpTestLog_writeKernelSource		(qpTestLog* log, const char* source);
220deBool 			qpTestLog_writeCompileInfo		(qpTestLog* log, const char* name, const char* description, deBool compileOk, const char* infoLog);
221
222deBool			qpTestLog_startSampleList		(qpTestLog* log, const char* name, const char* description);
223deBool			qpTestLog_startSampleInfo		(qpTestLog* log);
224deBool			qpTestLog_writeValueInfo		(qpTestLog* log, const char* name, const char* description, const char* unit, qpSampleValueTag tag);
225deBool			qpTestLog_endSampleInfo			(qpTestLog* log);
226deBool			qpTestLog_startSample			(qpTestLog* log);
227deBool			qpTestLog_writeValueFloat		(qpTestLog* log, double value);
228deBool			qpTestLog_writeValueInteger		(qpTestLog* log, deInt64 value);
229deBool			qpTestLog_endSample				(qpTestLog* log);
230deBool			qpTestLog_endSampleList			(qpTestLog* log);
231
232deUint32		qpTestLog_getLogFlags			(const qpTestLog* log);
233
234const char*		qpGetTestResultName				(qpTestResult result);
235
236DE_END_EXTERN_C
237
238/*! \} */
239
240#endif /* _QPTESTLOG_H */
241