| // GENERATED FILE - DO NOT EDIT. |
| // Generated by gen_load_functions_table.py using data from load_functions_data.json |
| // |
| // Copyright 2015 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // load_functions_table: |
| // Contains the GetLoadFunctionsMap for texture_format_util.h |
| // |
| |
| #include "libANGLE/renderer/d3d/d3d11/load_functions_table.h" |
| #include "libANGLE/renderer/d3d/d3d11/formatutils11.h" |
| #include "libANGLE/renderer/d3d/d3d11/texture_format_table.h" |
| #include "libANGLE/renderer/d3d/loadimage.h" |
| #include "libANGLE/renderer/d3d/loadimage_etc.h" |
| |
| namespace rx |
| { |
| |
| namespace d3d11 |
| { |
| |
| namespace |
| { |
| |
| // ES3 image loading functions vary based on: |
| // - the GL internal format (supplied to glTex*Image*D) |
| // - the GL data type given (supplied to glTex*Image*D) |
| // - the target DXGI_FORMAT that the image will be loaded into (which is chosen based on the D3D |
| // device's capabilities) |
| // This map type determines which loading function to use, based on these three parameters. |
| // Source formats and types are taken from Tables 3.2 and 3.3 of the ES 3 spec. |
| void UnimplementedLoadFunction(size_t width, |
| size_t height, |
| size_t depth, |
| const uint8_t *input, |
| size_t inputRowPitch, |
| size_t inputDepthPitch, |
| uint8_t *output, |
| size_t outputRowPitch, |
| size_t outputDepthPitch) |
| { |
| UNIMPLEMENTED(); |
| } |
| |
| void UnreachableLoadFunction(size_t width, |
| size_t height, |
| size_t depth, |
| const uint8_t *input, |
| size_t inputRowPitch, |
| size_t inputDepthPitch, |
| uint8_t *output, |
| size_t outputRowPitch, |
| size_t outputDepthPitch) |
| { |
| UNREACHABLE(); |
| } |
| |
| } // namespace |
| |
| // TODO we can replace these maps with more generated code |
| const std::map<GLenum, LoadImageFunctionInfo> &GetLoadFunctionsMap(GLenum internalFormat, |
| DXGI_FORMAT dxgiFormat) |
| { |
| // clang-format off |
| switch (internalFormat) |
| { |
| case GL_ALPHA: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadA16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadA16FToRGBA16F, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R32G32B32A32_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadA32FToRGBA32F, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_ALPHA16F_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadA16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadA16FToRGBA16F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadA16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadA16FToRGBA16F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_ALPHA32F_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadA32FToRGBA32F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadA32FToRGBA32F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_ALPHA8_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadA8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_BGR5_A1_ANGLEX: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT, LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, true) }, |
| { GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT, LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_BGRA4_ANGLEX: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT, LoadImageFunctionInfo(LoadRGBA4ToRGBA8, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, true) }, |
| { GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT, LoadImageFunctionInfo(LoadRGBA4ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_BGRA8_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_BGRA_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_COMPRESSED_R11_EAC: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadEACR11ToR8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_RG11_EAC: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadEACRG11ToRG8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_RGB8_ETC2: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC2RGB8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC2RGB8A1ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_RGBA8_ETC2_EAC: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC2RGBA8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,8>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,8>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,16>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,16>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,16>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,16>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,8>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadCompressedToNative<4,4,8>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_COMPRESSED_SIGNED_R11_EAC: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadEACR11SToR8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_SIGNED_RG11_EAC: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadEACRG11SToRG8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC2SRGBA8ToSRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_SRGB8_ETC2: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC2SRGB8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC2SRGB8A1ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_DEPTH24_STENCIL8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_D24_UNORM_S8_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT_24_8, LoadImageFunctionInfo(LoadR32ToR24G8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R24G8_TYPELESS: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT_24_8, LoadImageFunctionInfo(LoadR32ToR24G8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_DEPTH32F_STENCIL8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G8X24_TYPELESS: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT_32_UNSIGNED_INT_24_8_REV, LoadImageFunctionInfo(LoadToNative<GLuint,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT_32_UNSIGNED_INT_24_8_REV, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT_32_UNSIGNED_INT_24_8_REV, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_DEPTH_COMPONENT16: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_D16_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R16_TYPELESS: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadR32ToR16, true) }, |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_DEPTH_COMPONENT24: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_D24_UNORM_S8_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadR32ToR24G8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R24G8_TYPELESS: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadR32ToR24G8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_DEPTH_COMPONENT32F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32_TYPELESS: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadToNative<GLfloat,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_DEPTH_COMPONENT32_OES: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadR32ToR24G8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadR32ToR24G8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_BC1_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC1RGB8ToBC1, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_ETC1_RGB8_OES: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadETC1RGB8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_LUMINANCE: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadL16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadL16FToRGBA16F, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R32G32B32A32_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadL32FToRGBA32F, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_LUMINANCE16F_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadL16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadL16FToRGBA16F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadL16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadL16FToRGBA16F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_LUMINANCE32F_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadL32FToRGBA32F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadL32FToRGBA32F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_LUMINANCE8_ALPHA8_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadLA8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadLA8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_LUMINANCE8_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadL8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadL8ToRGBA8, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_LUMINANCE_ALPHA: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadLA16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadLA16FToRGBA16F, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R32G32B32A32_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadLA32FToRGBA32F, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_LUMINANCE_ALPHA16F_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadLA16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadLA16FToRGBA16F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadLA16FToRGBA16F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadLA16FToRGBA16F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_LUMINANCE_ALPHA32F_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadLA32FToRGBA32F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadLA32FToRGBA32F, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_R11F_G11F_B10F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R11G11B10_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true) }, |
| { GL_FLOAT, LoadImageFunctionInfo(LoadRGB32FToRG11B10F, true) }, |
| { GL_UNSIGNED_INT_10F_11F_11F_REV, LoadImageFunctionInfo(LoadToNative<GLuint,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R16F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(Load32FTo16F<1>, true) }, |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadToNative<GLhalf,1>, false) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadToNative<GLhalf,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R16I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative<GLshort,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R16UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R16_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R16_SNORM_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R32F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadToNative<GLfloat,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R32I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_INT, LoadImageFunctionInfo(LoadToNative<GLint,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R32UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadToNative<GLuint,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R8I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative<GLbyte,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R8UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_R8_SNORM: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative<GLbyte,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG16F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(Load32FTo16F<2>, true) }, |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadToNative<GLhalf,2>, false) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadToNative<GLhalf,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG16I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative<GLshort,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG16UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG16_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG16_SNORM_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG32F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadToNative<GLfloat,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG32I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_INT, LoadImageFunctionInfo(LoadToNative<GLint,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG32UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadToNative<GLuint,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG8I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative<GLbyte,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG8UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RG8_SNORM: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative<GLbyte,2>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| { GL_UNSIGNED_SHORT_5_6_5, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| { GL_UNSIGNED_SHORT_5_6_5, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_RGB10_A2: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R10G10B10A2_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT_2_10_10_10_REV, LoadImageFunctionInfo(LoadToNative<GLuint,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB10_A2UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R10G10B10A2_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT_2_10_10_10_REV, LoadImageFunctionInfo(LoadToNative<GLuint,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB16F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadRGB32FToRGBA16F, true) }, |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadToNative3To4<GLhalf,gl::Float16One>, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadToNative3To4<GLhalf,gl::Float16One>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB16I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative3To4<GLshort,0x0001>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB16UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative3To4<GLushort,0x0001>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB16_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative3To4<GLushort,0xFFFF>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB16_SNORM_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative3To4<GLushort,0x7FFF>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB32F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32B32A32_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadToNative3To4<GLfloat,gl::Float32One>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB32I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32B32A32_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_INT, LoadImageFunctionInfo(LoadToNative3To4<GLint,0x00000001>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB32UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32B32A32_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadToNative3To4<GLuint,0x00000001>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB565: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_B5G6R5_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadRGB8ToBGR565, true) }, |
| { GL_UNSIGNED_SHORT_5_6_5, LoadImageFunctionInfo(LoadToNative<GLushort,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT_5_6_5, LoadImageFunctionInfo(LoadR5G6B5ToRGBA8, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative3To4<GLubyte,0xFF>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB5_A1: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_B5G5R5A1_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT_5_5_5_1, LoadImageFunctionInfo(LoadRGB5A1ToA1RGB5, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT_2_10_10_10_REV, LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true) }, |
| { GL_UNSIGNED_SHORT_5_5_5_1, LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative3To4<GLubyte,0xFF>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB8I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative3To4<GLbyte,0x01>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB8UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative3To4<GLubyte,0x01>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB8_SNORM: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative3To4<GLbyte,0x7F>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGB9_E5: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadRGB16FToRGB9E5, true) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadRGB16FToRGB9E5, true) }, |
| { GL_FLOAT, LoadImageFunctionInfo(LoadRGB32FToRGB9E5, true) }, |
| { GL_UNSIGNED_INT_5_9_9_9_REV, LoadImageFunctionInfo(LoadToNative<GLuint,1>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| { GL_UNSIGNED_SHORT_4_4_4_4, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| { GL_UNSIGNED_SHORT_5_5_5_1, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| { GL_UNSIGNED_SHORT_4_4_4_4, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| { GL_UNSIGNED_SHORT_5_5_5_1, LoadImageFunctionInfo(UnreachableLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| case GL_RGBA16F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(Load32FTo16F<4>, true) }, |
| { GL_HALF_FLOAT, LoadImageFunctionInfo(LoadToNative<GLhalf,4>, false) }, |
| { GL_HALF_FLOAT_OES, LoadImageFunctionInfo(LoadToNative<GLhalf,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA16I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative<GLshort,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA16UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA16_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA16_SNORM_EXT: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R16G16B16A16_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_SHORT, LoadImageFunctionInfo(LoadToNative<GLushort,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA32F: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32B32A32_FLOAT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_FLOAT, LoadImageFunctionInfo(LoadToNative<GLfloat,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA32I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32B32A32_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_INT, LoadImageFunctionInfo(LoadToNative<GLint,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA32UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R32G32B32A32_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_INT, LoadImageFunctionInfo(LoadToNative<GLuint,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA4: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_B4G4R4A4_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT_4_4_4_4, LoadImageFunctionInfo(LoadRGBA4ToARGB4, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadRGBA8ToBGRA4, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_SHORT_4_4_4_4, LoadImageFunctionInfo(LoadRGBA4ToRGBA8, true) }, |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA8I: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_SINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative<GLbyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA8UI: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UINT: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_RGBA8_SNORM: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_SNORM: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_BYTE, LoadImageFunctionInfo(LoadToNative<GLbyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_SRGB8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative3To4<GLubyte,0xFF>, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_SRGB8_ALPHA8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { GL_UNSIGNED_BYTE, LoadImageFunctionInfo(LoadToNative<GLubyte,4>, false) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| break; |
| } |
| } |
| case GL_STENCIL_INDEX8: |
| { |
| switch (dxgiFormat) |
| { |
| case DXGI_FORMAT_UNKNOWN: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { DXGI_FORMAT_D24_UNORM_S8_UINT, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| { DXGI_FORMAT_R24G8_TYPELESS, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| default: |
| { |
| static const std::map<GLenum, LoadImageFunctionInfo> loadFunctionsMap = { |
| { DXGI_FORMAT_D24_UNORM_S8_UINT, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| { DXGI_FORMAT_R24G8_TYPELESS, LoadImageFunctionInfo(UnimplementedLoadFunction, true) }, |
| }; |
| |
| return loadFunctionsMap; |
| } |
| } |
| } |
| |
| default: |
| { |
| static std::map<GLenum, LoadImageFunctionInfo> emptyLoadFunctionsMap; |
| return emptyLoadFunctionsMap; |
| } |
| } |
| // clang-format on |
| |
| } // GetLoadFunctionsMap |
| |
| } // namespace d3d11 |
| |
| } // namespace rx |