blob: 300b67500bf8accbc9f478a9e09fc6f8e93984bd [file] [log] [blame]
#ifndef _EGLUCONFIGINFO_HPP
#define _EGLUCONFIGINFO_HPP
/*-------------------------------------------------------------------------
* drawElements Quality Program Tester Core
* ----------------------------------------
*
* Copyright 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*//*!
* \file
* \brief EGL config info.
*//*--------------------------------------------------------------------*/
#include "tcuDefs.hpp"
#include "eglwDefs.hpp"
#include "eglwEnums.hpp"
namespace eglw
{
class Library;
}
namespace eglu
{
class ConfigInfo
{
public:
// Core attributes
int32_t bufferSize;
int32_t redSize;
int32_t greenSize;
int32_t blueSize;
int32_t luminanceSize;
int32_t alphaSize;
int32_t alphaMaskSize;
uint32_t bindToTextureRGB;
uint32_t bindToTextureRGBA;
uint32_t colorBufferType;
uint32_t configCaveat;
int32_t configId;
int32_t conformant;
int32_t depthSize;
int32_t level;
int32_t maxPbufferWidth;
int32_t maxPbufferHeight;
int32_t maxSwapInterval;
int32_t minSwapInterval;
uint32_t nativeRenderable;
int32_t nativeVisualId;
int32_t nativeVisualType;
int32_t renderableType;
int32_t sampleBuffers;
int32_t samples;
int32_t stencilSize;
int32_t surfaceType;
uint32_t transparentType;
int32_t transparentRedValue;
int32_t transparentGreenValue;
int32_t transparentBlueValue;
// Extension attributes - set by queryExtConfigInfo()
// EGL_EXT_yuv_surface
uint32_t yuvOrder;
int32_t yuvNumberOfPlanes;
uint32_t yuvSubsample;
uint32_t yuvDepthRange;
uint32_t yuvCscStandard;
int32_t yuvPlaneBpp;
// EGL_EXT_pixel_format_float
uint32_t colorComponentType;
// EGL_ANDROID_recordable
uint32_t recordableAndroid;
// EGL_EXT_config_select_group
int32_t groupId;
ConfigInfo(void)
: bufferSize(0)
, redSize(0)
, greenSize(0)
, blueSize(0)
, luminanceSize(0)
, alphaSize(0)
, alphaMaskSize(0)
, bindToTextureRGB(0)
, bindToTextureRGBA(0)
, colorBufferType(0)
, configCaveat(0)
, configId(0)
, conformant(0)
, depthSize(0)
, level(0)
, maxPbufferWidth(0)
, maxPbufferHeight(0)
, maxSwapInterval(0)
, minSwapInterval(0)
, nativeRenderable(0)
, nativeVisualId(0)
, nativeVisualType(0)
, renderableType(0)
, sampleBuffers(0)
, samples(0)
, stencilSize(0)
, surfaceType(0)
, transparentType(0)
, transparentRedValue(0)
, transparentGreenValue(0)
, transparentBlueValue(0)
, yuvOrder(EGL_NONE)
, yuvNumberOfPlanes(0)
, yuvSubsample(EGL_NONE)
, yuvDepthRange(EGL_NONE)
, yuvCscStandard(EGL_NONE)
, yuvPlaneBpp(EGL_YUV_PLANE_BPP_0_EXT)
, colorComponentType(EGL_NONE)
, recordableAndroid(0)
, groupId(0)
{
}
int32_t getAttribute(uint32_t attribute) const;
};
void queryCoreConfigInfo(const eglw::Library &egl, eglw::EGLDisplay display, eglw::EGLConfig config, ConfigInfo *dst);
void queryExtConfigInfo(const eglw::Library &egl, eglw::EGLDisplay display, eglw::EGLConfig config, ConfigInfo *dst);
} // namespace eglu
#endif // _EGLUCONFIGINFO_HPP