13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL ES Utilities 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ------------------------------------------------ 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Texture format utilities. 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluTextureUtil.hpp" 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluRenderContext.hpp" 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluContextInfo.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuTextureUtil.hpp" 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuFormatUtil.hpp" 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwEnums.hpp" 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace glu 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing std::string; 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map tcu::TextureFormat to GL pixel transfer format. 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Maps generic texture format description to GL pixel transfer format. 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param texFormat Generic texture format. 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GL pixel transfer format. 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 453c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTransferFormat getTransferFormat (tcu::TextureFormat texFormat) 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 format = GL_NONE; 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 type = GL_NONE; 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool isInt = false; 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (texFormat.type) 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SIGNED_INT8: 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SIGNED_INT16: 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SIGNED_INT32: 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT8: 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT16: 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT32: 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT_1010102_REV: 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry isInt = true; 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry break; 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry isInt = false; 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry break; 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (texFormat.order) 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::A: format = GL_ALPHA; break; 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::L: format = GL_LUMINANCE; break; 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::LA: format = GL_LUMINANCE_ALPHA; break; 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::R: format = isInt ? GL_RED_INTEGER : GL_RED; break; 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::RG: format = isInt ? GL_RG_INTEGER : GL_RG; break; 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::RGB: format = isInt ? GL_RGB_INTEGER : GL_RGB; break; 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::RGBA: format = isInt ? GL_RGBA_INTEGER : GL_RGBA; break; 798bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case TextureFormat::sR: format = GL_RED; break; 808bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case TextureFormat::sRG: format = GL_RG; break; 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::sRGB: format = GL_RGB; break; 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::sRGBA: format = GL_RGBA; break; 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::D: format = GL_DEPTH_COMPONENT; break; 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::DS: format = GL_DEPTH_STENCIL; break; 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::S: format = GL_STENCIL_INDEX; break; 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8708abab445908d076888f3f61f3264a826bcd665cJarkko Pöyry case TextureFormat::BGRA: 8808abab445908d076888f3f61f3264a826bcd665cJarkko Pöyry DE_ASSERT(!isInt); 8908abab445908d076888f3f61f3264a826bcd665cJarkko Pöyry format = GL_BGRA; 9008abab445908d076888f3f61f3264a826bcd665cJarkko Pöyry break; 9108abab445908d076888f3f61f3264a826bcd665cJarkko Pöyry 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(false); 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (texFormat.type) 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SNORM_INT8: type = GL_BYTE; break; 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SNORM_INT16: type = GL_SHORT; break; 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNORM_INT8: type = GL_UNSIGNED_BYTE; break; 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNORM_INT16: type = GL_UNSIGNED_SHORT; break; 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNORM_SHORT_565: type = GL_UNSIGNED_SHORT_5_6_5; break; 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNORM_SHORT_4444: type = GL_UNSIGNED_SHORT_4_4_4_4; break; 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNORM_SHORT_5551: type = GL_UNSIGNED_SHORT_5_5_5_1; break; 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SIGNED_INT8: type = GL_BYTE; break; 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SIGNED_INT16: type = GL_SHORT; break; 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::SIGNED_INT32: type = GL_INT; break; 1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT8: type = GL_UNSIGNED_BYTE; break; 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT16: type = GL_UNSIGNED_SHORT; break; 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT32: type = GL_UNSIGNED_INT; break; 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::FLOAT: type = GL_FLOAT; break; 1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNORM_INT_101010: type = GL_UNSIGNED_INT_2_10_10_10_REV; break; 1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNORM_INT_1010102_REV: type = GL_UNSIGNED_INT_2_10_10_10_REV; break; 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT_1010102_REV: type = GL_UNSIGNED_INT_2_10_10_10_REV; break; 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT_11F_11F_10F_REV: type = GL_UNSIGNED_INT_10F_11F_11F_REV; break; 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT_999_E5_REV: type = GL_UNSIGNED_INT_5_9_9_9_REV; break; 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::HALF_FLOAT: type = GL_HALF_FLOAT; break; 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV: type = GL_FLOAT_32_UNSIGNED_INT_24_8_REV; break; 1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TextureFormat::UNSIGNED_INT_24_8: type = texFormat.order == TextureFormat::D 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ? GL_UNSIGNED_INT 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : GL_UNSIGNED_INT_24_8; break; 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map texture format to GL transfer format"); 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TransferFormat(format, type); 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map tcu::TextureFormat to GL internal sized format. 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Maps generic texture format description to GL internal format. 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param texFormat Generic texture format. 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GL sized internal format. 1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 1393c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydeUint32 getInternalFormat (tcu::TextureFormat texFormat) 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(tcu::TextureFormat::CHANNELORDER_LAST < (1<<16)); 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(tcu::TextureFormat::CHANNELTYPE_LAST < (1<<16)); 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define PACK_FMT(ORDER, TYPE) ((int(ORDER) << 16) | int(TYPE)) 1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define FMT_CASE(ORDER, TYPE) PACK_FMT(tcu::TextureFormat::ORDER, tcu::TextureFormat::TYPE) 1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (PACK_FMT(texFormat.order, texFormat.type)) 1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNORM_SHORT_5551): return GL_RGB5_A1; 1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNORM_SHORT_4444): return GL_RGBA4; 1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNORM_SHORT_565): return GL_RGB565; 1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(D, UNORM_INT16): return GL_DEPTH_COMPONENT16; 1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(S, UNSIGNED_INT8): return GL_STENCIL_INDEX8; 1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, FLOAT): return GL_RGBA32F; 1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, SIGNED_INT32): return GL_RGBA32I; 1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNSIGNED_INT32): return GL_RGBA32UI; 1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNORM_INT16): return GL_RGBA16; 1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, SNORM_INT16): return GL_RGBA16_SNORM; 1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, HALF_FLOAT): return GL_RGBA16F; 1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, SIGNED_INT16): return GL_RGBA16I; 1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNSIGNED_INT16): return GL_RGBA16UI; 1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNORM_INT8): return GL_RGBA8; 1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, SIGNED_INT8): return GL_RGBA8I; 1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNSIGNED_INT8): return GL_RGBA8UI; 1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(sRGBA, UNORM_INT8): return GL_SRGB8_ALPHA8; 1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNORM_INT_1010102_REV): return GL_RGB10_A2; 1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, UNSIGNED_INT_1010102_REV): return GL_RGB10_A2UI; 1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGBA, SNORM_INT8): return GL_RGBA8_SNORM; 1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNORM_INT8): return GL_RGB8; 1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNSIGNED_INT_11F_11F_10F_REV): return GL_R11F_G11F_B10F; 1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, FLOAT): return GL_RGB32F; 1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, SIGNED_INT32): return GL_RGB32I; 1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNSIGNED_INT32): return GL_RGB32UI; 1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNORM_INT16): return GL_RGB16; 1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, SNORM_INT16): return GL_RGB16_SNORM; 1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, HALF_FLOAT): return GL_RGB16F; 1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, SIGNED_INT16): return GL_RGB16I; 1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNSIGNED_INT16): return GL_RGB16UI; 1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, SNORM_INT8): return GL_RGB8_SNORM; 1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, SIGNED_INT8): return GL_RGB8I; 1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNSIGNED_INT8): return GL_RGB8UI; 1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(sRGB, UNORM_INT8): return GL_SRGB8; 1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNSIGNED_INT_999_E5_REV): return GL_RGB9_E5; 1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RGB, UNORM_INT_1010102_REV): return GL_RGB10; 1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, FLOAT): return GL_RG32F; 1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, SIGNED_INT32): return GL_RG32I; 1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, UNSIGNED_INT32): return GL_RG32UI; 1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, UNORM_INT16): return GL_RG16; 1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, SNORM_INT16): return GL_RG16_SNORM; 1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, HALF_FLOAT): return GL_RG16F; 1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, SIGNED_INT16): return GL_RG16I; 1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, UNSIGNED_INT16): return GL_RG16UI; 1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, UNORM_INT8): return GL_RG8; 1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, SIGNED_INT8): return GL_RG8I; 1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, UNSIGNED_INT8): return GL_RG8UI; 1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(RG, SNORM_INT8): return GL_RG8_SNORM; 2008bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case FMT_CASE(sRG, UNORM_INT8): return GL_SRG8_EXT; 2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, FLOAT): return GL_R32F; 2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, SIGNED_INT32): return GL_R32I; 2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, UNSIGNED_INT32): return GL_R32UI; 2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, UNORM_INT16): return GL_R16; 2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, SNORM_INT16): return GL_R16_SNORM; 2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, HALF_FLOAT): return GL_R16F; 2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, SIGNED_INT16): return GL_R16I; 2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, UNSIGNED_INT16): return GL_R16UI; 2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, UNORM_INT8): return GL_R8; 2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, SIGNED_INT8): return GL_R8I; 2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, UNSIGNED_INT8): return GL_R8UI; 2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(R, SNORM_INT8): return GL_R8_SNORM; 2148bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case FMT_CASE(sR, UNORM_INT8): return GL_SR8_EXT; 2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(D, FLOAT): return GL_DEPTH_COMPONENT32F; 2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(D, UNSIGNED_INT_24_8): return GL_DEPTH_COMPONENT24; 2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(D, UNSIGNED_INT32): return GL_DEPTH_COMPONENT32; 2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(DS, FLOAT_UNSIGNED_INT_24_8_REV): return GL_DEPTH32F_STENCIL8; 2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case FMT_CASE(DS, UNSIGNED_INT_24_8): return GL_DEPTH24_STENCIL8; 2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map texture format to GL internal format"); 2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map generic compressed format to GL compressed format enum. 2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Maps generic compressed format to GL compressed format enum value. 2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format Generic compressed format. 2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GL compressed texture format. 2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 236becd5d53015521acf7536ba754de326d8b1da2f3Mika IsojärvideUint32 getGLFormat (tcu::CompressedTexFormat format) 2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (format) 2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 240becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ETC1_RGB8: return GL_ETC1_RGB8_OES; 241becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_EAC_R11: return GL_COMPRESSED_R11_EAC; 242becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_EAC_SIGNED_R11: return GL_COMPRESSED_SIGNED_R11_EAC; 243becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_EAC_RG11: return GL_COMPRESSED_RG11_EAC; 244becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_EAC_SIGNED_RG11: return GL_COMPRESSED_SIGNED_RG11_EAC; 245becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ETC2_RGB8: return GL_COMPRESSED_RGB8_ETC2; 246becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ETC2_SRGB8: return GL_COMPRESSED_SRGB8_ETC2; 247becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1: return GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; 248becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1: return GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; 249becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ETC2_EAC_RGBA8: return GL_COMPRESSED_RGBA8_ETC2_EAC; 250becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ETC2_EAC_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; 2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 252becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_RGBA: return GL_COMPRESSED_RGBA_ASTC_4x4_KHR; 253becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_RGBA: return GL_COMPRESSED_RGBA_ASTC_5x4_KHR; 254becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_RGBA: return GL_COMPRESSED_RGBA_ASTC_5x5_KHR; 255becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_6x5_RGBA: return GL_COMPRESSED_RGBA_ASTC_6x5_KHR; 256becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_RGBA: return GL_COMPRESSED_RGBA_ASTC_6x6_KHR; 257becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_RGBA: return GL_COMPRESSED_RGBA_ASTC_8x5_KHR; 258becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_RGBA: return GL_COMPRESSED_RGBA_ASTC_8x6_KHR; 259becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_8x8_RGBA: return GL_COMPRESSED_RGBA_ASTC_8x8_KHR; 260becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x5_RGBA: return GL_COMPRESSED_RGBA_ASTC_10x5_KHR; 261becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x6_RGBA: return GL_COMPRESSED_RGBA_ASTC_10x6_KHR; 262becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x8_RGBA: return GL_COMPRESSED_RGBA_ASTC_10x8_KHR; 263becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x10_RGBA: return GL_COMPRESSED_RGBA_ASTC_10x10_KHR; 264becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_12x10_RGBA: return GL_COMPRESSED_RGBA_ASTC_12x10_KHR; 265becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_12x12_RGBA: return GL_COMPRESSED_RGBA_ASTC_12x12_KHR; 266becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; 267becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; 268becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; 269becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_6x5_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; 270becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; 271becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; 272becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; 273becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_8x8_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; 274becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x5_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; 275becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x6_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; 276becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x8_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; 277becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_10x10_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; 278becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_12x10_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; 279becd5d53015521acf7536ba754de326d8b1da2f3Mika Isojärvi case tcu::COMPRESSEDTEXFORMAT_ASTC_12x12_SRGB8_ALPHA8: return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; 2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map compressed format to GL format"); 2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 286b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi/*--------------------------------------------------------------------*//*! 287b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi * \brief Map compressed GL format to generic compressed format. 288b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi * 289b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi * Maps compressed GL format to generic compressed format. 290b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi * If no mapping is found, throws tcu::InternalError. 291b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi * 292b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi * \param GL compressed texture format. 293b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi * \return format Generic compressed format. 294b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi *//*--------------------------------------------------------------------*/ 295b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvitcu::CompressedTexFormat mapGLCompressedTexFormat (deUint32 format) 296b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi{ 297b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi switch (format) 298b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi { 299b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_ETC1_RGB8_OES: return tcu::COMPRESSEDTEXFORMAT_ETC1_RGB8; 300b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_R11_EAC: return tcu::COMPRESSEDTEXFORMAT_EAC_R11; 301b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SIGNED_R11_EAC: return tcu::COMPRESSEDTEXFORMAT_EAC_SIGNED_R11; 302b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RG11_EAC: return tcu::COMPRESSEDTEXFORMAT_EAC_RG11; 303b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SIGNED_RG11_EAC: return tcu::COMPRESSEDTEXFORMAT_EAC_SIGNED_RG11; 304b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGB8_ETC2: return tcu::COMPRESSEDTEXFORMAT_ETC2_RGB8; 305b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ETC2: return tcu::COMPRESSEDTEXFORMAT_ETC2_SRGB8; 306b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: return tcu::COMPRESSEDTEXFORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1; 307b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: return tcu::COMPRESSEDTEXFORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1; 308b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA8_ETC2_EAC: return tcu::COMPRESSEDTEXFORMAT_ETC2_EAC_RGBA8; 309b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: return tcu::COMPRESSEDTEXFORMAT_ETC2_EAC_SRGB8_ALPHA8; 310b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi 311b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_RGBA; 312b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_RGBA; 313b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_5x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_RGBA; 314b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_6x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_6x5_RGBA; 315b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_6x6_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_RGBA; 316b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_8x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_RGBA; 317b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_8x6_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_RGBA; 318b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_8x8_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x8_RGBA; 319b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_10x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x5_RGBA; 320b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_10x6_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x6_RGBA; 321b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_10x8_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x8_RGBA; 322b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_10x10_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x10_RGBA; 323b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_12x10_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_12x10_RGBA; 324b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_RGBA_ASTC_12x12_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_12x12_RGBA; 325b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_4x4_SRGB8_ALPHA8; 326b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x4_SRGB8_ALPHA8; 327b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_5x5_SRGB8_ALPHA8; 328b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_6x5_SRGB8_ALPHA8; 329b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_6x6_SRGB8_ALPHA8; 330b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x5_SRGB8_ALPHA8; 331b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x6_SRGB8_ALPHA8; 332b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_8x8_SRGB8_ALPHA8; 333b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x5_SRGB8_ALPHA8; 334b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x6_SRGB8_ALPHA8; 335b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x8_SRGB8_ALPHA8; 336b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_10x10_SRGB8_ALPHA8; 337b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_12x10_SRGB8_ALPHA8; 338b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: return tcu::COMPRESSEDTEXFORMAT_ASTC_12x12_SRGB8_ALPHA8; 339b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi 340b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi default: 341b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi throw tcu::InternalError("Can't map compressed GL format to compressed format"); 342b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi } 343b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi} 344b0f5bf50aa6a56357da18ee3147612fbaca19ab8Mika Isojärvi 345238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyrybool isCompressedFormat (deUint32 internalFormat) 346238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry{ 347238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry switch (internalFormat) 348238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry { 349238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_ETC1_RGB8_OES: 350238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_R11_EAC: 351238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SIGNED_R11_EAC: 352238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RG11_EAC: 353238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SIGNED_RG11_EAC: 354238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGB8_ETC2: 355238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ETC2: 356238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 357238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 358238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA8_ETC2_EAC: 359238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 360238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: 361238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: 362238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_5x5_KHR: 363238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_6x5_KHR: 364238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_6x6_KHR: 365238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_8x5_KHR: 366238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_8x6_KHR: 367238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_8x8_KHR: 368238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_10x5_KHR: 369238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_10x6_KHR: 370238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_10x8_KHR: 371238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_10x10_KHR: 372238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_12x10_KHR: 373238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_RGBA_ASTC_12x12_KHR: 374238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: 375238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: 376238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: 377238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: 378238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: 379238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: 380238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: 381238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: 382238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: 383238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: 384238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: 385238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: 386238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: 387238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: 388238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry return true; 389238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry 390238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry default: 391238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry return false; 392238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry } 393238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry} 394238d2aee289b3bc19b059ddbfc9e83892be1d8a6Jarkko Pöyry 3953c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystatic tcu::TextureFormat::ChannelType mapGLChannelType (deUint32 dataType, bool normalized) 3963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 3973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \note Normalized bit is ignored where it doesn't apply. 3983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 3993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (dataType) 4013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 4023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_BYTE: return normalized ? TextureFormat::UNORM_INT8 : TextureFormat::UNSIGNED_INT8; 4033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_BYTE: return normalized ? TextureFormat::SNORM_INT8 : TextureFormat::SIGNED_INT8; 4043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_SHORT: return normalized ? TextureFormat::UNORM_INT16 : TextureFormat::UNSIGNED_INT16; 4053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SHORT: return normalized ? TextureFormat::SNORM_INT16 : TextureFormat::SIGNED_INT16; 4063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT: return normalized ? TextureFormat::UNORM_INT32 : TextureFormat::UNSIGNED_INT32; 4073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT: return normalized ? TextureFormat::SNORM_INT32 : TextureFormat::SIGNED_INT32; 4083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT: return TextureFormat::FLOAT; 4093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_SHORT_4_4_4_4: return TextureFormat::UNORM_SHORT_4444; 4103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_SHORT_5_5_5_1: return TextureFormat::UNORM_SHORT_5551; 4113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_SHORT_5_6_5: return TextureFormat::UNORM_SHORT_565; 4123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_HALF_FLOAT: return TextureFormat::HALF_FLOAT; 4133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_2_10_10_10_REV: return normalized ? TextureFormat::UNORM_INT_1010102_REV : TextureFormat::UNSIGNED_INT_1010102_REV; 4143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_10F_11F_11F_REV: return TextureFormat::UNSIGNED_INT_11F_11F_10F_REV; 4153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_24_8: return TextureFormat::UNSIGNED_INT_24_8; 4163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: return TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV; 4173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_5_9_9_9_REV: return TextureFormat::UNSIGNED_INT_999_E5_REV; 4183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 4203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(false); 4213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TextureFormat::CHANNELTYPE_LAST; 4223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 4233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 4243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 4263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map GL pixel transfer format to tcu::TextureFormat. 4273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 4283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 4293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 4303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format GL pixel format. 4313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param dataType GL data type. 4323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return Generic texture format. 4333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 4343c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::TextureFormat mapGLTransferFormat (deUint32 format, deUint32 dataType) 4353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 4363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 4373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (format) 4383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 4393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_ALPHA: return TextureFormat(TextureFormat::A, mapGLChannelType(dataType, true)); 4403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_LUMINANCE: return TextureFormat(TextureFormat::L, mapGLChannelType(dataType, true)); 4413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_LUMINANCE_ALPHA: return TextureFormat(TextureFormat::LA, mapGLChannelType(dataType, true)); 4423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB: return TextureFormat(TextureFormat::RGB, mapGLChannelType(dataType, true)); 4433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA: return TextureFormat(TextureFormat::RGBA, mapGLChannelType(dataType, true)); 4443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_BGRA: return TextureFormat(TextureFormat::BGRA, mapGLChannelType(dataType, true)); 4453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG: return TextureFormat(TextureFormat::RG, mapGLChannelType(dataType, true)); 4463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RED: return TextureFormat(TextureFormat::R, mapGLChannelType(dataType, true)); 4473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA_INTEGER: return TextureFormat(TextureFormat::RGBA, mapGLChannelType(dataType, false)); 4483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB_INTEGER: return TextureFormat(TextureFormat::RGB, mapGLChannelType(dataType, false)); 4493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG_INTEGER: return TextureFormat(TextureFormat::RG, mapGLChannelType(dataType, false)); 4503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RED_INTEGER: return TextureFormat(TextureFormat::R, mapGLChannelType(dataType, false)); 4513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT: return TextureFormat(TextureFormat::D, mapGLChannelType(dataType, true)); 4533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_STENCIL: return TextureFormat(TextureFormat::DS, mapGLChannelType(dataType, true)); 4543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 4563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError(string("Can't map GL pixel format (") + tcu::toHex(format).toString() + ", " + tcu::toHex(dataType).toString() + ") to texture format"); 4573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 4583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 4593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 4613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map GL internal texture format to tcu::TextureFormat. 4623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 4633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 4643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 4653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param internalFormat Sized internal format. 4663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return Generic texture format. 4673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 4683c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::TextureFormat mapGLInternalFormat (deUint32 internalFormat) 4693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 4703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 4713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (internalFormat) 4723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 4733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB5_A1: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_SHORT_5551); 4743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA4: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_SHORT_4444); 4753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB565: return TextureFormat(TextureFormat::RGB, TextureFormat::UNORM_SHORT_565); 4763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT16: return TextureFormat(TextureFormat::D, TextureFormat::UNORM_INT16); 4773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_STENCIL_INDEX8: return TextureFormat(TextureFormat::S, TextureFormat::UNSIGNED_INT8); 4783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32F: return TextureFormat(TextureFormat::RGBA, TextureFormat::FLOAT); 4803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32I: return TextureFormat(TextureFormat::RGBA, TextureFormat::SIGNED_INT32); 4813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32UI: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNSIGNED_INT32); 4823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_INT16); 4833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16_SNORM: return TextureFormat(TextureFormat::RGBA, TextureFormat::SNORM_INT16); 4843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16F: return TextureFormat(TextureFormat::RGBA, TextureFormat::HALF_FLOAT); 4853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16I: return TextureFormat(TextureFormat::RGBA, TextureFormat::SIGNED_INT16); 4863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16UI: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNSIGNED_INT16); 4873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_INT8); 4883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8I: return TextureFormat(TextureFormat::RGBA, TextureFormat::SIGNED_INT8); 4893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8UI: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNSIGNED_INT8); 4903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SRGB8_ALPHA8: return TextureFormat(TextureFormat::sRGBA, TextureFormat::UNORM_INT8); 4913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB10_A2: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNORM_INT_1010102_REV); 4923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB10_A2UI: return TextureFormat(TextureFormat::RGBA, TextureFormat::UNSIGNED_INT_1010102_REV); 4933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8_SNORM: return TextureFormat(TextureFormat::RGBA, TextureFormat::SNORM_INT8); 4943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8: return TextureFormat(TextureFormat::RGB, TextureFormat::UNORM_INT8); 4963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R11F_G11F_B10F: return TextureFormat(TextureFormat::RGB, TextureFormat::UNSIGNED_INT_11F_11F_10F_REV); 4973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB32F: return TextureFormat(TextureFormat::RGB, TextureFormat::FLOAT); 4983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB32I: return TextureFormat(TextureFormat::RGB, TextureFormat::SIGNED_INT32); 4993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB32UI: return TextureFormat(TextureFormat::RGB, TextureFormat::UNSIGNED_INT32); 5003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16: return TextureFormat(TextureFormat::RGB, TextureFormat::UNORM_INT16); 5013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16_SNORM: return TextureFormat(TextureFormat::RGB, TextureFormat::SNORM_INT16); 5023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16F: return TextureFormat(TextureFormat::RGB, TextureFormat::HALF_FLOAT); 5033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16I: return TextureFormat(TextureFormat::RGB, TextureFormat::SIGNED_INT16); 5043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16UI: return TextureFormat(TextureFormat::RGB, TextureFormat::UNSIGNED_INT16); 5053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8_SNORM: return TextureFormat(TextureFormat::RGB, TextureFormat::SNORM_INT8); 5063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8I: return TextureFormat(TextureFormat::RGB, TextureFormat::SIGNED_INT8); 5073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8UI: return TextureFormat(TextureFormat::RGB, TextureFormat::UNSIGNED_INT8); 5083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SRGB8: return TextureFormat(TextureFormat::sRGB, TextureFormat::UNORM_INT8); 5093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB9_E5: return TextureFormat(TextureFormat::RGB, TextureFormat::UNSIGNED_INT_999_E5_REV); 5103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB10: return TextureFormat(TextureFormat::RGB, TextureFormat::UNORM_INT_1010102_REV); 5113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32F: return TextureFormat(TextureFormat::RG, TextureFormat::FLOAT); 5133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32I: return TextureFormat(TextureFormat::RG, TextureFormat::SIGNED_INT32); 5143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32UI: return TextureFormat(TextureFormat::RG, TextureFormat::UNSIGNED_INT32); 5153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16: return TextureFormat(TextureFormat::RG, TextureFormat::UNORM_INT16); 5163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16_SNORM: return TextureFormat(TextureFormat::RG, TextureFormat::SNORM_INT16); 5173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16F: return TextureFormat(TextureFormat::RG, TextureFormat::HALF_FLOAT); 5183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16I: return TextureFormat(TextureFormat::RG, TextureFormat::SIGNED_INT16); 5193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16UI: return TextureFormat(TextureFormat::RG, TextureFormat::UNSIGNED_INT16); 5203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8: return TextureFormat(TextureFormat::RG, TextureFormat::UNORM_INT8); 5213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8I: return TextureFormat(TextureFormat::RG, TextureFormat::SIGNED_INT8); 5223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8UI: return TextureFormat(TextureFormat::RG, TextureFormat::UNSIGNED_INT8); 5233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8_SNORM: return TextureFormat(TextureFormat::RG, TextureFormat::SNORM_INT8); 5248bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case GL_SRG8_EXT: return TextureFormat(TextureFormat::sRG, TextureFormat::UNORM_INT8); 5253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32F: return TextureFormat(TextureFormat::R, TextureFormat::FLOAT); 5273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32I: return TextureFormat(TextureFormat::R, TextureFormat::SIGNED_INT32); 5283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32UI: return TextureFormat(TextureFormat::R, TextureFormat::UNSIGNED_INT32); 5293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16: return TextureFormat(TextureFormat::R, TextureFormat::UNORM_INT16); 5303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16_SNORM: return TextureFormat(TextureFormat::R, TextureFormat::SNORM_INT16); 5313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16F: return TextureFormat(TextureFormat::R, TextureFormat::HALF_FLOAT); 5323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16I: return TextureFormat(TextureFormat::R, TextureFormat::SIGNED_INT16); 5333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16UI: return TextureFormat(TextureFormat::R, TextureFormat::UNSIGNED_INT16); 5343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8: return TextureFormat(TextureFormat::R, TextureFormat::UNORM_INT8); 5353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8I: return TextureFormat(TextureFormat::R, TextureFormat::SIGNED_INT8); 5363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8UI: return TextureFormat(TextureFormat::R, TextureFormat::UNSIGNED_INT8); 5373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8_SNORM: return TextureFormat(TextureFormat::R, TextureFormat::SNORM_INT8); 5388bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case GL_SR8_EXT: return TextureFormat(TextureFormat::sR, TextureFormat::UNORM_INT8); 5393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT32F: return TextureFormat(TextureFormat::D, TextureFormat::FLOAT); 5413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT24: return TextureFormat(TextureFormat::D, TextureFormat::UNSIGNED_INT_24_8); 5423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT32: return TextureFormat(TextureFormat::D, TextureFormat::UNSIGNED_INT32); 5433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH32F_STENCIL8: return TextureFormat(TextureFormat::DS, TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV); 5443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH24_STENCIL8: return TextureFormat(TextureFormat::DS, TextureFormat::UNSIGNED_INT_24_8); 5453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 5473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError(string("Can't map GL sized internal format (") + tcu::toHex(internalFormat).toString() + ") to texture format"); 5483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 5493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5513c827367444ee418f129b2c238299f49d3264554Jarkko Poyrybool isGLInternalColorFormatFilterable (deUint32 format) 5523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (format) 5543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 5553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8: 5563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8_SNORM: 5573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8: 5583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8_SNORM: 5593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8: 5603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8_SNORM: 5613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB565: 5623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA4: 5633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB5_A1: 5643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8: 5653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8_SNORM: 5663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB10_A2: 5678bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case GL_SR8_EXT: 5688bf16f28be688a52f616aa830f95a94c53144cc3Jarkko Pöyry case GL_SRG8_EXT: 5693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SRGB8: 5703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SRGB8_ALPHA8: 5713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16F: 5723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16F: 5733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16F: 5743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16F: 5753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R11F_G11F_B10F: 5763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB9_E5: 5773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return true; 5783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB10_A2UI: 5803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32F: 5813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32F: 5823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB32F: 5833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32F: 5843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8I: 5853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8UI: 5863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16I: 5873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16UI: 5883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32I: 5893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32UI: 5903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8I: 5913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8UI: 5923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16I: 5933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16UI: 5943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32I: 5953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32UI: 5963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8I: 5973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8UI: 5983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16I: 5993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB16UI: 6003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB32I: 6013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB32UI: 6023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8I: 6033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8UI: 6043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16I: 6053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16UI: 6063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32I: 6073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32UI: 6083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return false; 6093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 6113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(false); 6123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return false; 6133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 6143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 6153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6163c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystatic inline tcu::Sampler::WrapMode mapGLWrapMode (deUint32 wrapMode) 6173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 6183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (wrapMode) 6193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 6203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_CLAMP_TO_EDGE: return tcu::Sampler::CLAMP_TO_EDGE; 6213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_CLAMP_TO_BORDER: return tcu::Sampler::CLAMP_TO_BORDER; 6223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_REPEAT: return tcu::Sampler::REPEAT_GL; 6233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_MIRRORED_REPEAT: return tcu::Sampler::MIRRORED_REPEAT_GL; 6243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 6253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map GL wrap mode " + tcu::toHex(wrapMode).toString()); 6263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 6273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 6283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 629834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyrystatic inline tcu::Sampler::FilterMode mapGLMinFilterMode (deUint32 filterMode) 6303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 6313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (filterMode) 6323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 6333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_NEAREST: return tcu::Sampler::NEAREST; 6343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_LINEAR: return tcu::Sampler::LINEAR; 6353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_NEAREST_MIPMAP_NEAREST: return tcu::Sampler::NEAREST_MIPMAP_NEAREST; 6363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_NEAREST_MIPMAP_LINEAR: return tcu::Sampler::NEAREST_MIPMAP_LINEAR; 6373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_LINEAR_MIPMAP_NEAREST: return tcu::Sampler::LINEAR_MIPMAP_NEAREST; 6383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_LINEAR_MIPMAP_LINEAR: return tcu::Sampler::LINEAR_MIPMAP_LINEAR; 6393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 640834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry throw tcu::InternalError("Can't map GL min filter mode" + tcu::toHex(filterMode).toString()); 641834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry } 642834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry} 643834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry 644834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyrystatic inline tcu::Sampler::FilterMode mapGLMagFilterMode (deUint32 filterMode) 645834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry{ 646834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry switch (filterMode) 647834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry { 648834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry case GL_NEAREST: return tcu::Sampler::NEAREST; 649834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry case GL_LINEAR: return tcu::Sampler::LINEAR; 650834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry default: 651834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry throw tcu::InternalError("Can't map GL mag filter mode" + tcu::toHex(filterMode).toString()); 6523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 6533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 6543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 6563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map GL sampler parameters to tcu::Sampler. 6573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 6583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 6593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 6603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param wrapS S-component wrap mode 6613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param minFilter Minification filter mode 6623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param magFilter Magnification filter mode 6633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return Sampler description. 6643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 6653c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::Sampler mapGLSampler (deUint32 wrapS, deUint32 minFilter, deUint32 magFilter) 6663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 6673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return mapGLSampler(wrapS, wrapS, wrapS, minFilter, magFilter); 6683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 6693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 6723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map GL sampler parameters to tcu::Sampler. 6733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 6743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 6753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 6763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param wrapS S-component wrap mode 6773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param wrapT T-component wrap mode 6783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param minFilter Minification filter mode 6793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param magFilter Magnification filter mode 6803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return Sampler description. 6813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 6823c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::Sampler mapGLSampler (deUint32 wrapS, deUint32 wrapT, deUint32 minFilter, deUint32 magFilter) 6833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 6843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return mapGLSampler(wrapS, wrapT, wrapS, minFilter, magFilter); 6853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 6863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 6883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map GL sampler parameters to tcu::Sampler. 6893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 6903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 6913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 6923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param wrapS S-component wrap mode 6933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param wrapT T-component wrap mode 6943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param wrapR R-component wrap mode 6953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param minFilter Minification filter mode 6963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param magFilter Magnification filter mode 6973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return Sampler description. 6983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 6993c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::Sampler mapGLSampler (deUint32 wrapS, deUint32 wrapT, deUint32 wrapR, deUint32 minFilter, deUint32 magFilter) 7003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 7013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return tcu::Sampler(mapGLWrapMode(wrapS), mapGLWrapMode(wrapT), mapGLWrapMode(wrapR), 702834954305bcda8cf3eab410710fdd5e18bf81ecfJarkko Pöyry mapGLMinFilterMode(minFilter), mapGLMagFilterMode(magFilter), 7033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 0.0f /* lod threshold */, 7043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry true /* normalized coords */, 7053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry tcu::Sampler::COMPAREMODE_NONE /* no compare */, 7063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 0 /* compare channel */, 7073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry tcu::Vec4(0.0f) /* border color, not used */); 7083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 7093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 7103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 7113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Map GL compare function to tcu::Sampler::CompareMode. 7123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 7143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param mode GL compare mode 7163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return Compare mode 7173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 7183c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::Sampler::CompareMode mapGLCompareFunc (deUint32 mode) 7193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 7203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (mode) 7213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 7223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_LESS: return tcu::Sampler::COMPAREMODE_LESS; 7233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_LEQUAL: return tcu::Sampler::COMPAREMODE_LESS_OR_EQUAL; 7243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_GREATER: return tcu::Sampler::COMPAREMODE_GREATER; 7253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_GEQUAL: return tcu::Sampler::COMPAREMODE_GREATER_OR_EQUAL; 7263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_EQUAL: return tcu::Sampler::COMPAREMODE_EQUAL; 7273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_NOTEQUAL: return tcu::Sampler::COMPAREMODE_NOT_EQUAL; 7283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_ALWAYS: return tcu::Sampler::COMPAREMODE_ALWAYS; 7293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_NEVER: return tcu::Sampler::COMPAREMODE_NEVER; 7303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 7313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map GL compare mode " + tcu::toHex(mode).toString()); 7323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 7333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 7343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 7353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 7363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GL wrap mode. 7373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 7393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param wrapMode Wrap mode 7413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GL wrap mode 7423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 7433c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydeUint32 getGLWrapMode (tcu::Sampler::WrapMode wrapMode) 7443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 7453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(wrapMode != tcu::Sampler::WRAPMODE_LAST); 7463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (wrapMode) 7473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 7483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::CLAMP_TO_EDGE: return GL_CLAMP_TO_EDGE; 7493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::CLAMP_TO_BORDER: return GL_CLAMP_TO_BORDER; 7503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::REPEAT_GL: return GL_REPEAT; 7513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::MIRRORED_REPEAT_GL: return GL_MIRRORED_REPEAT; 7523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 7533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map wrap mode"); 7543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 7553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 7563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 7573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 7583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GL filter mode. 7593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 7613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param filterMode Filter mode 7633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GL filter mode 7643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 7653c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydeUint32 getGLFilterMode (tcu::Sampler::FilterMode filterMode) 7663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 7673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(filterMode != tcu::Sampler::FILTERMODE_LAST); 7683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (filterMode) 7693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 7703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::NEAREST: return GL_NEAREST; 7713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::LINEAR: return GL_LINEAR; 7723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::NEAREST_MIPMAP_NEAREST: return GL_NEAREST_MIPMAP_NEAREST; 7733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::NEAREST_MIPMAP_LINEAR: return GL_NEAREST_MIPMAP_LINEAR; 7743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::LINEAR_MIPMAP_NEAREST: return GL_LINEAR_MIPMAP_NEAREST; 7753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::LINEAR_MIPMAP_LINEAR: return GL_LINEAR_MIPMAP_LINEAR; 7763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 7773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map filter mode"); 7783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 7793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 7803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 7813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 7823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GL compare mode. 7833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 7853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 7863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param compareMode Compare mode 7873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GL compare mode 7883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 7893c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydeUint32 getGLCompareFunc (tcu::Sampler::CompareMode compareMode) 7903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 7913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(compareMode != tcu::Sampler::COMPAREMODE_NONE); 7923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (compareMode) 7933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 7943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_NONE: return GL_NONE; 7953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_LESS: return GL_LESS; 7963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_LESS_OR_EQUAL: return GL_LEQUAL; 7973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_GREATER: return GL_GREATER; 7983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_GREATER_OR_EQUAL: return GL_GEQUAL; 7993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_EQUAL: return GL_EQUAL; 8003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_NOT_EQUAL: return GL_NOTEQUAL; 8013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_ALWAYS: return GL_ALWAYS; 8023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::Sampler::COMPAREMODE_NEVER: return GL_NEVER; 8033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 8043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map compare mode"); 8053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 8063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 8073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 8093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GL cube face. 8103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 8113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, throws tcu::InternalError. 8123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 8133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param face Cube face 8143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GL cube face 8153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 8163c827367444ee418f129b2c238299f49d3264554Jarkko PoyrydeUint32 getGLCubeFace (tcu::CubeFace face) 8173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 8183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(face != tcu::CUBEFACE_LAST); 8193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (face) 8203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 8213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::CUBEFACE_NEGATIVE_X: return GL_TEXTURE_CUBE_MAP_NEGATIVE_X; 8223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::CUBEFACE_POSITIVE_X: return GL_TEXTURE_CUBE_MAP_POSITIVE_X; 8233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::CUBEFACE_NEGATIVE_Y: return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y; 8243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::CUBEFACE_POSITIVE_Y: return GL_TEXTURE_CUBE_MAP_POSITIVE_Y; 8253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::CUBEFACE_NEGATIVE_Z: return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; 8263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::CUBEFACE_POSITIVE_Z: return GL_TEXTURE_CUBE_MAP_POSITIVE_Z; 8273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 8283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Can't map cube face"); 8293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 8303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 8313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 83207b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvitcu::CubeFace getCubeFaceFromGL (deUint32 face) 83307b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi{ 83407b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi switch (face) 83507b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi { 83607b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: return tcu::CUBEFACE_NEGATIVE_X; 83707b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi case GL_TEXTURE_CUBE_MAP_POSITIVE_X: return tcu::CUBEFACE_POSITIVE_X; 83807b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: return tcu::CUBEFACE_NEGATIVE_Y; 83907b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: return tcu::CUBEFACE_POSITIVE_Y; 84007b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: return tcu::CUBEFACE_NEGATIVE_Z; 84107b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: return tcu::CUBEFACE_POSITIVE_Z; 84207b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi default: 84307b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi throw tcu::InternalError("Can't map cube face"); 84407b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi } 84507b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi} 84607b89ce0885a4a9e02b7057d45a4260d24740ba9Mika Isojärvi 8473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 8483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GLSL sampler type for texture format. 8493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 8503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, glu::TYPE_LAST is returned. 8513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 8523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format Texture format 8533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GLSL 1D sampler type for format 8543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 8553c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getSampler1DType (tcu::TextureFormat format) 8563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 8573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 8583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::D || format.order == TextureFormat::DS) 8603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_SAMPLER_1D; 8613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::S) 8633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_LAST; 8643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (tcu::getTextureChannelClass(format.type)) 8663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 8673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_FLOATING_POINT: 8683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT: 8693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT: 8703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_SAMPLER_1D; 8713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER: 8733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_INT_SAMPLER_1D; 8743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER: 8763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_UINT_SAMPLER_1D; 8773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 8793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_LAST; 8803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 8813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 8823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 8843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GLSL sampler type for texture format. 8853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 8863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, glu::TYPE_LAST is returned. 8873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 8883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format Texture format 8893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GLSL 2D sampler type for format 8903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 8913c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getSampler2DType (tcu::TextureFormat format) 8923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 8933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 8943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::D || format.order == TextureFormat::DS) 8963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_SAMPLER_2D; 8973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::S) 8993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_LAST; 9003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (tcu::getTextureChannelClass(format.type)) 9023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 9033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_FLOATING_POINT: 9043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT: 9053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT: 9063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_SAMPLER_2D; 9073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER: 9093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_INT_SAMPLER_2D; 9103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER: 9123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_UINT_SAMPLER_2D; 9133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 9153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_LAST; 9163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 9173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 9183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 9203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GLSL sampler type for texture format. 9213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 9223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, glu::TYPE_LAST is returned. 9233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 9243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format Texture format 9253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GLSL cube map sampler type for format 9263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 9273c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getSamplerCubeType (tcu::TextureFormat format) 9283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 9293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 9303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::D || format.order == TextureFormat::DS) 9323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_SAMPLER_CUBE; 9333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::S) 9353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_LAST; 9363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (tcu::getTextureChannelClass(format.type)) 9383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 9393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_FLOATING_POINT: 9403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT: 9413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT: 9423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_SAMPLER_CUBE; 9433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER: 9453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_INT_SAMPLER_CUBE; 9463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER: 9483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_UINT_SAMPLER_CUBE; 9493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 9513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_LAST; 9523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 9533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 9543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 9563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GLSL sampler type for texture format. 9573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 9583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, glu::TYPE_LAST is returned. 9593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 9603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format Texture format 9613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GLSL 2D array sampler type for format 9623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 9633c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getSampler2DArrayType (tcu::TextureFormat format) 9643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 9653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 9663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::D || format.order == TextureFormat::DS) 9683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_SAMPLER_2D_ARRAY; 9693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::S) 9713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_LAST; 9723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (tcu::getTextureChannelClass(format.type)) 9743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 9753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_FLOATING_POINT: 9763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT: 9773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT: 9783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_SAMPLER_2D_ARRAY; 9793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER: 9813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_INT_SAMPLER_2D_ARRAY; 9823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER: 9843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_UINT_SAMPLER_2D_ARRAY; 9853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 9873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_LAST; 9883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 9893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 9903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 9923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GLSL sampler type for texture format. 9933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 9943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, glu::TYPE_LAST is returned. 9953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 9963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format Texture format 9973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GLSL 3D sampler type for format 9983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 9993c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getSampler3DType (tcu::TextureFormat format) 10003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 10013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 10023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::D || format.order == TextureFormat::DS) 10043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_SAMPLER_3D; 10053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::S) 10073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_LAST; 10083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (tcu::getTextureChannelClass(format.type)) 10103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 10113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_FLOATING_POINT: 10123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT: 10133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT: 10143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_SAMPLER_3D; 10153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER: 10173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_INT_SAMPLER_3D; 10183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER: 10203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_UINT_SAMPLER_3D; 10213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 10233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_LAST; 10243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 10253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 10263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 10283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Get GLSL sampler type for texture format. 10293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 10303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * If no mapping is found, glu::TYPE_LAST is returned. 10313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 10323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \param format Texture format 10333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \return GLSL cube map array sampler type for format 10343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 10353c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getSamplerCubeArrayType (tcu::TextureFormat format) 10363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 10373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry using tcu::TextureFormat; 10383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::D || format.order == TextureFormat::DS) 10403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_SAMPLER_CUBE_ARRAY; 10413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (format.order == TextureFormat::S) 10433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_LAST; 10443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (tcu::getTextureChannelClass(format.type)) 10463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 10473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_FLOATING_POINT: 10483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT: 10493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT: 10503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_SAMPLER_CUBE_ARRAY; 10513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER: 10533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_INT_SAMPLER_CUBE_ARRAY; 10543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER: 10563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_UINT_SAMPLER_CUBE_ARRAY; 10573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 10593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return glu::TYPE_LAST; 10603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 10613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 10623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10633c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum RenderableType 10643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 10653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RENDERABLE_COLOR = (1<<0), 10663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RENDERABLE_DEPTH = (1<<1), 10673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RENDERABLE_STENCIL = (1<<2) 10683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 10693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10703c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystatic deUint32 getRenderableBitsES3 (const ContextInfo& contextInfo, deUint32 internalFormat) 10713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 10723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (internalFormat) 10733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 10743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Color-renderable formats 10753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32I: 10763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32UI: 10773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16I: 10783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16UI: 10793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8: 10803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8I: 10813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA8UI: 10823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SRGB8_ALPHA8: 10833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB10_A2: 10843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB10_A2UI: 10853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA4: 10863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB5_A1: 10873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB8: 10883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGB565: 10893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32I: 10903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32UI: 10913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16I: 10923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16UI: 10933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8: 10943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8I: 10953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG8UI: 10963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32I: 10973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32UI: 10983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16I: 10993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16UI: 11003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8: 11013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8I: 11023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R8UI: 11033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return RENDERABLE_COLOR; 11043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // GL_EXT_color_buffer_float 11063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA32F: 11073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R11F_G11F_B10F: 11083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG32F: 11093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R32F: 11103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (contextInfo.isExtensionSupported("GL_EXT_color_buffer_float")) 11113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return RENDERABLE_COLOR; 11123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else 11133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 0; 11143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // GL_EXT_color_buffer_float / GL_EXT_color_buffer_half_float 11163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RGBA16F: 11173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_RG16F: 11183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_R16F: 11193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (contextInfo.isExtensionSupported("GL_EXT_color_buffer_float") || 11203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry contextInfo.isExtensionSupported("GL_EXT_color_buffer_half_float")) 11213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return RENDERABLE_COLOR; 11223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else 11233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 0; 11243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Depth formats 11263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT32F: 11273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT24: 11283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH_COMPONENT16: 11293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return RENDERABLE_DEPTH; 11303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Depth+stencil formats 11323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH32F_STENCIL8: 11333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_DEPTH24_STENCIL8: 11343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return RENDERABLE_DEPTH|RENDERABLE_STENCIL; 11353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Stencil formats 11373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_STENCIL_INDEX8: 11383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return RENDERABLE_STENCIL; 11393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 11413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 0; 11423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 11433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 11443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 11463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Check if sized internal format is color-renderable. 11473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \note Works currently only on ES3 context. 11483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 11493c827367444ee418f129b2c238299f49d3264554Jarkko Poyrybool isSizedFormatColorRenderable (const RenderContext& renderCtx, const ContextInfo& contextInfo, deUint32 sizedFormat) 11503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 11513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 renderable = 0; 11523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (renderCtx.getType().getAPI() == ApiType::es(3,0)) 11543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry renderable = getRenderableBitsES3(contextInfo, sizedFormat); 11553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else 11563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry throw tcu::InternalError("Context type not supported in query"); 11573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 11583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return (renderable & RENDERABLE_COLOR) != 0; 11593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 11603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 116145b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyryconst tcu::IVec2 (&getDefaultGatherOffsets (void))[4] 116245b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry{ 116345b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry static const tcu::IVec2 s_defaultOffsets[4] = 116445b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry { 116545b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry tcu::IVec2(0, 1), 116645b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry tcu::IVec2(1, 1), 116745b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry tcu::IVec2(1, 0), 116845b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry tcu::IVec2(0, 0), 116945b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry }; 117045b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry return s_defaultOffsets; 117145b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry} 117245b7dbbfe93d87336754e8c06380953ec003aeafJarkko Pöyry 11733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // glu 1174