Commit 507e8d30 by Shahbaz Youssefi Committed by Commit Bot

Add missing entries in texture load functions map

GetLoadFunctionsMap() is expected to cover all possible combinations of texture internalformat and upload data format. Several of these combinations were missing, especially w.r.t to compressed types. This change adds the missing combinations that are hit on any of the configurations being tested. An assert is added to catch missing conversion functions in the future. Bug: angleproject:2670 Change-Id: I793ac2c57f65eeb1cc8da8f1b223f6a9a44c7708 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1524462Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent eaf56133
...@@ -12,11 +12,11 @@ ...@@ -12,11 +12,11 @@
"ANGLE format:src/libANGLE/renderer/gen_angle_format_table.py": "ANGLE format:src/libANGLE/renderer/gen_angle_format_table.py":
"3d9f679b65f39ccf19bd7bdf5498f837", "3d9f679b65f39ccf19bd7bdf5498f837",
"ANGLE load functions table:src/libANGLE/renderer/gen_load_functions_table.py": "ANGLE load functions table:src/libANGLE/renderer/gen_load_functions_table.py":
"475de30b8552795ca928096543cec7f2", "2dcc3aa0cd700165b588cf53441e243b",
"ANGLE load functions table:src/libANGLE/renderer/load_functions_data.json": "ANGLE load functions table:src/libANGLE/renderer/load_functions_data.json":
"4253e14cd3217f42b6fec75ee400655a", "eaca9d5068380214c416bb8e23ca2f99",
"ANGLE load functions table:src/libANGLE/renderer/load_functions_table_autogen.cpp": "ANGLE load functions table:src/libANGLE/renderer/load_functions_table_autogen.cpp":
"557e3a1de1f2373d6a7520a5b21d52ee", "da4924c3be631b8c2abed3023860299b",
"D3D11 blit shader selection:src/libANGLE/renderer/d3d/d3d11/Blit11Helper_autogen.inc": "D3D11 blit shader selection:src/libANGLE/renderer/d3d/d3d11/Blit11Helper_autogen.inc":
"f69cf03a3d868a977fad9e9c0eb0652a", "f69cf03a3d868a977fad9e9c0eb0652a",
"D3D11 blit shader selection:src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni": "D3D11 blit shader selection:src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni":
......
...@@ -1180,6 +1180,36 @@ void LoadG8R24ToR24G8(size_t width, ...@@ -1180,6 +1180,36 @@ void LoadG8R24ToR24G8(size_t width,
} }
} }
void LoadD24S8ToD32FS8X24(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)
{
for (size_t z = 0; z < depth; z++)
{
for (size_t y = 0; y < height; y++)
{
const uint32_t *source =
priv::OffsetDataPointer<uint32_t>(input, y, z, inputRowPitch, inputDepthPitch);
float *destDepth =
priv::OffsetDataPointer<float>(output, y, z, outputRowPitch, outputDepthPitch);
uint32_t *destStencil =
priv::OffsetDataPointer<uint32_t>(output, y, z, outputRowPitch, outputDepthPitch) +
1;
for (size_t x = 0; x < width; x++)
{
destDepth[x * 2] = (source[x] & 0xFFFFFF) / static_cast<float>(0xFFFFFF);
destStencil[x * 2] = source[x] & 0xFF000000;
}
}
}
}
void LoadD32FToD32F(size_t width, void LoadD32FToD32F(size_t width,
size_t height, size_t height,
size_t depth, size_t depth,
...@@ -1206,6 +1236,36 @@ void LoadD32FToD32F(size_t width, ...@@ -1206,6 +1236,36 @@ void LoadD32FToD32F(size_t width,
} }
} }
void LoadD32FS8X24ToD24S8(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)
{
for (size_t z = 0; z < depth; z++)
{
for (size_t y = 0; y < height; y++)
{
const float *sourceDepth =
priv::OffsetDataPointer<float>(input, y, z, inputRowPitch, inputDepthPitch);
const uint32_t *sourceStencil =
priv::OffsetDataPointer<uint32_t>(input, y, z, inputRowPitch, inputDepthPitch) + 1;
uint32_t *dest =
priv::OffsetDataPointer<uint32_t>(output, y, z, outputRowPitch, outputDepthPitch);
for (size_t x = 0; x < width; x++)
{
uint32_t d = static_cast<uint32_t>(gl::clamp01(sourceDepth[x * 2]) * 0xFFFFFF);
uint32_t s = sourceStencil[x * 2] & 0xFF000000;
dest[x] = d | s;
}
}
}
}
void LoadD32FS8X24ToD32FS8X24(size_t width, void LoadD32FS8X24ToD32FS8X24(size_t width,
size_t height, size_t height,
size_t depth, size_t depth,
...@@ -1267,6 +1327,34 @@ void LoadRGB32FToRGBA16F(size_t width, ...@@ -1267,6 +1327,34 @@ void LoadRGB32FToRGBA16F(size_t width,
} }
} }
void LoadRGB32FToRGB16F(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)
{
for (size_t z = 0; z < depth; z++)
{
for (size_t y = 0; y < height; y++)
{
const float *source =
priv::OffsetDataPointer<float>(input, y, z, inputRowPitch, inputDepthPitch);
uint16_t *dest =
priv::OffsetDataPointer<uint16_t>(output, y, z, outputRowPitch, outputDepthPitch);
for (size_t x = 0; x < width; x++)
{
dest[x * 3 + 0] = gl::float32ToFloat16(source[x * 3 + 0]);
dest[x * 3 + 1] = gl::float32ToFloat16(source[x * 3 + 1]);
dest[x * 3 + 2] = gl::float32ToFloat16(source[x * 3 + 2]);
}
}
}
}
void LoadR32ToR16(size_t width, void LoadR32ToR16(size_t width,
size_t height, size_t height,
size_t depth, size_t depth,
......
...@@ -385,6 +385,16 @@ void LoadG8R24ToR24G8(size_t width, ...@@ -385,6 +385,16 @@ void LoadG8R24ToR24G8(size_t width,
size_t outputRowPitch, size_t outputRowPitch,
size_t outputDepthPitch); size_t outputDepthPitch);
void LoadD24S8ToD32FS8X24(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);
void LoadD32FToD32F(size_t width, void LoadD32FToD32F(size_t width,
size_t height, size_t height,
size_t depth, size_t depth,
...@@ -395,6 +405,16 @@ void LoadD32FToD32F(size_t width, ...@@ -395,6 +405,16 @@ void LoadD32FToD32F(size_t width,
size_t outputRowPitch, size_t outputRowPitch,
size_t outputDepthPitch); size_t outputDepthPitch);
void LoadD32FS8X24ToD24S8(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);
void LoadD32FS8X24ToD32FS8X24(size_t width, void LoadD32FS8X24ToD32FS8X24(size_t width,
size_t height, size_t height,
size_t depth, size_t depth,
...@@ -448,6 +468,16 @@ void LoadRGB32FToRGBA16F(size_t width, ...@@ -448,6 +468,16 @@ void LoadRGB32FToRGBA16F(size_t width,
size_t outputRowPitch, size_t outputRowPitch,
size_t outputDepthPitch); size_t outputDepthPitch);
void LoadRGB32FToRGB16F(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);
template <size_t blockWidth, size_t blockHeight, size_t blockSize> template <size_t blockWidth, size_t blockHeight, size_t blockSize>
inline void LoadCompressedToNative(size_t width, inline void LoadCompressedToNative(size_t width,
size_t height, size_t height,
......
...@@ -86,6 +86,7 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum {internal_format}, FormatID {angle_fo ...@@ -86,6 +86,7 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum {internal_format}, FormatID {angle_fo
break; break;
}} }}
// clang-format on // clang-format on
ASSERT(internalFormat == GL_NONE || angleFormat == angle::FormatID::NONE);
static LoadFunctionMap emptyLoadFunctionsMap; static LoadFunctionMap emptyLoadFunctionsMap;
return emptyLoadFunctionsMap; return emptyLoadFunctionsMap;
......
...@@ -32,16 +32,25 @@ ...@@ -32,16 +32,25 @@
"GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC": { "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC": {
"R8G8B8A8_UNORM_SRGB": { "R8G8B8A8_UNORM_SRGB": {
"GL_UNSIGNED_BYTE": "LoadETC2SRGBA8ToSRGBA8" "GL_UNSIGNED_BYTE": "LoadETC2SRGBA8ToSRGBA8"
},
"ETC2_R8G8B8A8_SRGB_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>"
} }
}, },
"GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2": { "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2": {
"R8G8B8A8_UNORM": { "R8G8B8A8_UNORM": {
"GL_UNSIGNED_BYTE": "LoadETC2RGB8A1ToRGBA8" "GL_UNSIGNED_BYTE": "LoadETC2RGB8A1ToRGBA8"
},
"ETC2_R8G8B8A1_UNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 8>"
} }
}, },
"GL_RGB32UI": { "GL_RGB32UI": {
"R32G32B32A32_UINT": { "R32G32B32A32_UINT": {
"GL_UNSIGNED_INT": "LoadToNative3To4<GLuint, 0x00000001>" "GL_UNSIGNED_INT": "LoadToNative3To4<GLuint, 0x00000001>"
},
"R32G32B32_UINT": {
"GL_UNSIGNED_INT": "LoadToNative<GLuint, 3>"
} }
}, },
"GL_ALPHA32F_EXT": { "GL_ALPHA32F_EXT": {
...@@ -65,6 +74,9 @@ ...@@ -65,6 +74,9 @@
"GL_COMPRESSED_R11_EAC": { "GL_COMPRESSED_R11_EAC": {
"R16_UNORM": { "R16_UNORM": {
"GL_UNSIGNED_BYTE": "LoadEACR11ToR16" "GL_UNSIGNED_BYTE": "LoadEACR11ToR16"
},
"EAC_R11_UNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 8>"
} }
}, },
"GL_RGBA32UI": { "GL_RGBA32UI": {
...@@ -85,6 +97,9 @@ ...@@ -85,6 +97,9 @@
"GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2": { "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2": {
"R8G8B8A8_UNORM_SRGB": { "R8G8B8A8_UNORM_SRGB": {
"GL_UNSIGNED_BYTE": "LoadETC2SRGB8A1ToRGBA8" "GL_UNSIGNED_BYTE": "LoadETC2SRGB8A1ToRGBA8"
},
"ETC2_R8G8B8A1_SRGB_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 8>"
} }
}, },
"GL_R16F": { "GL_R16F": {
...@@ -99,12 +114,6 @@ ...@@ -99,12 +114,6 @@
"GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>" "GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>"
} }
}, },
"GL_BGRA4_ANGLEX": {
"NONE": {
"GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT": "LoadRGBA4ToRGBA8",
"GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>"
}
},
"GL_RGBA16F": { "GL_RGBA16F": {
"R16G16B16A16_FLOAT": { "R16G16B16A16_FLOAT": {
"GL_HALF_FLOAT": "LoadToNative<GLhalf, 4>", "GL_HALF_FLOAT": "LoadToNative<GLhalf, 4>",
...@@ -149,6 +158,9 @@ ...@@ -149,6 +158,9 @@
"GL_RGB16UI": { "GL_RGB16UI": {
"R16G16B16A16_UINT": { "R16G16B16A16_UINT": {
"GL_UNSIGNED_SHORT": "LoadToNative3To4<GLushort, 0x0001>" "GL_UNSIGNED_SHORT": "LoadToNative3To4<GLushort, 0x0001>"
},
"R16G16B16_UINT": {
"GL_UNSIGNED_SHORT": "LoadToNative<GLushort, 3>"
} }
}, },
"GL_BGRA_EXT": { "GL_BGRA_EXT": {
...@@ -159,6 +171,9 @@ ...@@ -159,6 +171,9 @@
"GL_COMPRESSED_RGB8_ETC2": { "GL_COMPRESSED_RGB8_ETC2": {
"R8G8B8A8_UNORM": { "R8G8B8A8_UNORM": {
"GL_UNSIGNED_BYTE": "LoadETC2RGB8ToRGBA8" "GL_UNSIGNED_BYTE": "LoadETC2RGB8ToRGBA8"
},
"ETC2_R8G8B8_UNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 8>"
} }
}, },
"GL_RGBA32F": { "GL_RGBA32F": {
...@@ -192,6 +207,9 @@ ...@@ -192,6 +207,9 @@
"GL_COMPRESSED_SIGNED_RG11_EAC": { "GL_COMPRESSED_SIGNED_RG11_EAC": {
"R16G16_SNORM": { "R16G16_SNORM": {
"GL_UNSIGNED_BYTE": "LoadEACRG11SToRG16" "GL_UNSIGNED_BYTE": "LoadEACRG11SToRG16"
},
"EAC_R11G11_SNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>"
} }
}, },
"GL_DEPTH_COMPONENT16": { "GL_DEPTH_COMPONENT16": {
...@@ -203,6 +221,9 @@ ...@@ -203,6 +221,9 @@
"GL_RGB32I": { "GL_RGB32I": {
"R32G32B32A32_SINT": { "R32G32B32A32_SINT": {
"GL_INT": "LoadToNative3To4<GLint, 0x00000001>" "GL_INT": "LoadToNative3To4<GLint, 0x00000001>"
},
"R32G32B32_SINT": {
"GL_INT": "LoadToNative<GLint, 3>"
} }
}, },
"GL_R8": { "GL_R8": {
...@@ -213,6 +234,9 @@ ...@@ -213,6 +234,9 @@
"GL_RGB32F": { "GL_RGB32F": {
"R32G32B32A32_FLOAT": { "R32G32B32A32_FLOAT": {
"GL_FLOAT": "LoadToNative3To4<GLfloat, gl::Float32One>" "GL_FLOAT": "LoadToNative3To4<GLfloat, gl::Float32One>"
},
"R32G32B32_FLOAT": {
"GL_FLOAT": "LoadToNative<GLfloat, 3>"
} }
}, },
"GL_R11F_G11F_B10F": { "GL_R11F_G11F_B10F": {
...@@ -253,6 +277,9 @@ ...@@ -253,6 +277,9 @@
"GL_RGB8_SNORM": { "GL_RGB8_SNORM": {
"R8G8B8A8_SNORM": { "R8G8B8A8_SNORM": {
"GL_BYTE": "LoadToNative3To4<GLbyte, 0x7F>" "GL_BYTE": "LoadToNative3To4<GLbyte, 0x7F>"
},
"R8G8B8_SNORM": {
"GL_BYTE": "LoadToNative<GLbyte, 3>"
} }
}, },
"GL_RG32F": { "GL_RG32F": {
...@@ -294,21 +321,33 @@ ...@@ -294,21 +321,33 @@
"GL_COMPRESSED_RGBA8_ETC2_EAC": { "GL_COMPRESSED_RGBA8_ETC2_EAC": {
"R8G8B8A8_UNORM": { "R8G8B8A8_UNORM": {
"GL_UNSIGNED_BYTE": "LoadETC2RGBA8ToRGBA8" "GL_UNSIGNED_BYTE": "LoadETC2RGBA8ToRGBA8"
},
"ETC2_R8G8B8A8_UNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>"
} }
}, },
"GL_RGB8I": { "GL_RGB8I": {
"R8G8B8A8_SINT": { "R8G8B8A8_SINT": {
"GL_BYTE": "LoadToNative3To4<GLbyte, 0x01>" "GL_BYTE": "LoadToNative3To4<GLbyte, 0x01>"
},
"R8G8B8_SINT": {
"GL_BYTE": "LoadToNative<GLbyte, 3>"
} }
}, },
"GL_COMPRESSED_SRGB8_ETC2": { "GL_COMPRESSED_SRGB8_ETC2": {
"R8G8B8A8_UNORM_SRGB": { "R8G8B8A8_UNORM_SRGB": {
"GL_UNSIGNED_BYTE": "LoadETC2SRGB8ToRGBA8" "GL_UNSIGNED_BYTE": "LoadETC2SRGB8ToRGBA8"
},
"ETC2_R8G8B8_SRGB_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 8>"
} }
}, },
"GL_DEPTH32F_STENCIL8": { "GL_DEPTH32F_STENCIL8": {
"D32_FLOAT_S8X24_UINT": { "D32_FLOAT_S8X24_UINT": {
"GL_FLOAT_32_UNSIGNED_INT_24_8_REV": "LoadD32FS8X24ToD32FS8X24" "GL_FLOAT_32_UNSIGNED_INT_24_8_REV": "LoadD32FS8X24ToD32FS8X24"
},
"D24_UNORM_S8_UINT": {
"GL_FLOAT_32_UNSIGNED_INT_24_8_REV": "LoadD32FS8X24ToD24S8"
} }
}, },
"GL_RG8I": { "GL_RG8I": {
...@@ -321,21 +360,151 @@ ...@@ -321,21 +360,151 @@
"GL_UNSIGNED_INT": "LoadToNative<GLuint, 1>" "GL_UNSIGNED_INT": "LoadToNative<GLuint, 1>"
} }
}, },
"GL_BGR5_A1_ANGLEX": { "GL_BGRX8_ANGLEX" : {
"NONE": { "B8G8R8X8_UNORM": {
"GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>", "GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>"
"GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT": "LoadRGB5A1ToRGBA8" },
"B8G8R8A8_UNORM": {
"GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>"
} }
}, },
"GL_BGR565_ANGLEX": { "GL_BGR565_ANGLEX": {
"B5G6R5_UNORM": { "B5G6R5_UNORM": {
"GL_UNSIGNED_SHORT_5_6_5": "LoadRGB565ToBGR565", "GL_UNSIGNED_SHORT_5_6_5": "LoadRGB565ToBGR565",
"GL_UNSIGNED_BYTE": "LoadToNative<GLushort, 1>" "GL_UNSIGNED_BYTE": "LoadRGB8ToBGR565"
}
},
"GL_BGRA4_ANGLEX": {
"NONE": {
"GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT": "LoadRGBA4ToRGBA8",
"GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>"
}
},
"GL_BGR5_A1_ANGLEX": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadRGB5A1ToRGBA8",
"GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT": "LoadToNative<GLushort, 1>"
}
},
"GL_BGRA8_SRGB_ANGLEX" : {
"B8G8R8A8_UNORM_SRGB": {
"GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 4>"
}
},
"GL_A1RGB5_ANGLEX" : {
"A1R5G5B5_UNORM": {
"GL_UNSIGNED_BYTE": "LoadRGB5A1ToRGBA8",
"GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT": "LoadToNative<GLushort, 1>"
}
},
"GL_R8_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RG8_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGB8_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGBA8_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_R8_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RG8_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGB8_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGBA8_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_R16_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RG16_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGB16_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGBA16_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_R16_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RG16_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGB16_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGBA16_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGB10_A2_SINT_ANGLEX" : {
"R10G10B10A2_SINT": {
"GL_UNSIGNED_BYTE": "LoadRGB10A2ToRGBA8",
"GL_UNSIGNED_INT_2_10_10_10_REV": "LoadToNative<GLuint, 1>"
}
},
"GL_RGB10_A2_SNORM_ANGLEX" : {
"R10G10B10A2_SNORM": {
"GL_UNSIGNED_BYTE": "LoadRGB10A2ToRGBA8",
"GL_UNSIGNED_INT_2_10_10_10_REV": "LoadToNative<GLuint, 1>"
}
},
"GL_RGB10_A2_SSCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
}
},
"GL_RGB10_A2_USCALED_ANGLEX" : {
"NONE": {
"GL_UNSIGNED_BYTE": "UnreachableLoadFunction"
} }
}, },
"GL_COMPRESSED_RG11_EAC": { "GL_COMPRESSED_RG11_EAC": {
"R16G16_UNORM": { "R16G16_UNORM": {
"GL_UNSIGNED_BYTE": "LoadEACRG11ToRG16" "GL_UNSIGNED_BYTE": "LoadEACRG11ToRG16"
},
"EAC_R11G11_UNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>"
} }
}, },
"GL_SRGB8_ALPHA8": { "GL_SRGB8_ALPHA8": {
...@@ -359,11 +528,17 @@ ...@@ -359,11 +528,17 @@
"GL_DEPTH24_STENCIL8": { "GL_DEPTH24_STENCIL8": {
"D24_UNORM_S8_UINT": { "D24_UNORM_S8_UINT": {
"GL_UNSIGNED_INT_24_8": "LoadR32ToR24G8" "GL_UNSIGNED_INT_24_8": "LoadR32ToR24G8"
},
"D32_FLOAT_S8X24_UINT": {
"GL_UNSIGNED_INT_24_8": "LoadD24S8ToD32FS8X24"
} }
}, },
"GL_RGB16I": { "GL_RGB16I": {
"R16G16B16A16_SINT": { "R16G16B16A16_SINT": {
"GL_SHORT": "LoadToNative3To4<GLshort, 0x0001>" "GL_SHORT": "LoadToNative3To4<GLshort, 0x0001>"
},
"R16G16B16_SINT": {
"GL_SHORT": "LoadToNative<GLshort, 3>"
} }
}, },
"GL_R8UI": { "GL_R8UI": {
...@@ -388,11 +563,19 @@ ...@@ -388,11 +563,19 @@
"GL_HALF_FLOAT": "LoadToNative3To4<GLhalf, gl::Float16One>", "GL_HALF_FLOAT": "LoadToNative3To4<GLhalf, gl::Float16One>",
"GL_FLOAT": "LoadRGB32FToRGBA16F", "GL_FLOAT": "LoadRGB32FToRGBA16F",
"GL_HALF_FLOAT_OES": "LoadToNative3To4<GLhalf, gl::Float16One>" "GL_HALF_FLOAT_OES": "LoadToNative3To4<GLhalf, gl::Float16One>"
},
"R16G16B16_FLOAT": {
"GL_HALF_FLOAT": "LoadToNative<GLhalf, 3>",
"GL_FLOAT": "LoadRGB32FToRGB16F",
"GL_HALF_FLOAT_OES": "LoadToNative<GLhalf, 3>"
} }
}, },
"GL_COMPRESSED_SIGNED_R11_EAC": { "GL_COMPRESSED_SIGNED_R11_EAC": {
"R16_SNORM": { "R16_SNORM": {
"GL_UNSIGNED_BYTE": "LoadEACR11SToR16" "GL_UNSIGNED_BYTE": "LoadEACR11SToR16"
},
"EAC_R11_SNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 8>"
} }
}, },
"GL_COMPRESSED_RGB_S3TC_DXT1_EXT": { "GL_COMPRESSED_RGB_S3TC_DXT1_EXT": {
...@@ -418,11 +601,17 @@ ...@@ -418,11 +601,17 @@
"GL_RGB8UI": { "GL_RGB8UI": {
"R8G8B8A8_UINT": { "R8G8B8A8_UINT": {
"GL_UNSIGNED_BYTE": "LoadToNative3To4<GLubyte, 0x01>" "GL_UNSIGNED_BYTE": "LoadToNative3To4<GLubyte, 0x01>"
},
"R8G8B8_UINT": {
"GL_UNSIGNED_BYTE": "LoadToNative<GLubyte, 3>"
} }
}, },
"GL_DEPTH_COMPONENT24": { "GL_DEPTH_COMPONENT24": {
"D24_UNORM_S8_UINT": { "D24_UNORM_S8_UINT": {
"GL_UNSIGNED_INT": "LoadR32ToR24G8" "GL_UNSIGNED_INT": "LoadR32ToR24G8"
},
"D32_FLOAT_S8X24_UINT": {
"GL_UNSIGNED_INT_24_8": "LoadD24S8ToD32FS8X24"
} }
}, },
"GL_R32I": { "GL_R32I": {
...@@ -527,6 +716,9 @@ ...@@ -527,6 +716,9 @@
"GL_ETC1_RGB8_OES": { "GL_ETC1_RGB8_OES": {
"R8G8B8A8_UNORM": { "R8G8B8A8_UNORM": {
"GL_UNSIGNED_BYTE": "LoadETC1RGB8ToRGBA8" "GL_UNSIGNED_BYTE": "LoadETC1RGB8ToRGBA8"
},
"ETC1_R8G8B8_UNORM_BLOCK": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 8>"
} }
}, },
"GL_ETC1_RGB8_LOSSY_DECODE_ANGLE": { "GL_ETC1_RGB8_LOSSY_DECODE_ANGLE": {
...@@ -567,6 +759,9 @@ ...@@ -567,6 +759,9 @@
"GL_RGB16_EXT": { "GL_RGB16_EXT": {
"R16G16B16A16_UNORM": { "R16G16B16A16_UNORM": {
"GL_UNSIGNED_SHORT": "LoadToNative3To4<GLushort, 0xFFFF>" "GL_UNSIGNED_SHORT": "LoadToNative3To4<GLushort, 0xFFFF>"
},
"R16G16B16_UNORM": {
"GL_UNSIGNED_SHORT": "LoadToNative<GLushort, 3>"
} }
}, },
"GL_RGBA16_EXT": { "GL_RGBA16_EXT": {
...@@ -587,6 +782,9 @@ ...@@ -587,6 +782,9 @@
"GL_RGB16_SNORM_EXT": { "GL_RGB16_SNORM_EXT": {
"R16G16B16A16_SNORM": { "R16G16B16A16_SNORM": {
"GL_SHORT": "LoadToNative3To4<GLushort, 0x7FFF>" "GL_SHORT": "LoadToNative3To4<GLushort, 0x7FFF>"
},
"R16G16B16_SNORM": {
"GL_SHORT": "LoadToNative<GLushort, 3>"
} }
}, },
"GL_RGBA16_SNORM_EXT": { "GL_RGBA16_SNORM_EXT": {
...@@ -633,5 +831,145 @@ ...@@ -633,5 +831,145 @@
"NONE": { "NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>" "GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>"
} }
},
"GL_COMPRESSED_RGBA_ASTC_4x4_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_5x4_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<5, 4, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_5x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<5, 5, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_6x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<6, 5, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_6x6_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<6, 6, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_8x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<8, 5, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_8x6_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<8, 6, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_8x8_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<8, 8, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_10x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 5, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_10x6_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 6, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_10x8_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 8, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_10x10_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 10, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_12x10_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<12, 10, 16>"
}
},
"GL_COMPRESSED_RGBA_ASTC_12x12_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<12, 12, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<4, 4, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<5, 4, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<5, 5, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<6, 5, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<6, 6, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<8, 5, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<8, 6, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<8, 8, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 5, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 6, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 8, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<10, 10, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<12, 10, 16>"
}
},
"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR": {
"NONE": {
"GL_UNSIGNED_BYTE": "LoadCompressedToNative<12, 12, 16>"
}
} }
} }
...@@ -56,6 +56,20 @@ void UnreachableLoadFunction(size_t width, ...@@ -56,6 +56,20 @@ void UnreachableLoadFunction(size_t width,
UNREACHABLE(); UNREACHABLE();
} }
LoadImageFunctionInfo A1RGB5_ANGLEX_to_A1R5G5B5_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo ALPHA_to_R16G16B16A16_FLOAT(GLenum type) LoadImageFunctionInfo ALPHA_to_R16G16B16A16_FLOAT(GLenum type)
{ {
switch (type) switch (type)
...@@ -165,7 +179,7 @@ LoadImageFunctionInfo BGR565_ANGLEX_to_B5G6R5_UNORM(GLenum type) ...@@ -165,7 +179,7 @@ LoadImageFunctionInfo BGR565_ANGLEX_to_B5G6R5_UNORM(GLenum type)
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false); return LoadImageFunctionInfo(LoadRGB8ToBGR565, true);
case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5:
return LoadImageFunctionInfo(LoadRGB565ToBGR565, true); return LoadImageFunctionInfo(LoadRGB565ToBGR565, true);
default: default:
...@@ -179,9 +193,9 @@ LoadImageFunctionInfo BGR5_A1_ANGLEX_to_default(GLenum type) ...@@ -179,9 +193,9 @@ LoadImageFunctionInfo BGR5_A1_ANGLEX_to_default(GLenum type)
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:
return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true); return LoadImageFunctionInfo(LoadRGB5A1ToRGBA8, true);
case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
...@@ -214,275 +228,273 @@ LoadImageFunctionInfo BGRA8_EXT_to_default(GLenum type) ...@@ -214,275 +228,273 @@ LoadImageFunctionInfo BGRA8_EXT_to_default(GLenum type)
} }
} }
LoadImageFunctionInfo BGRA_EXT_to_default(GLenum type) LoadImageFunctionInfo BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_R11_EAC_to_R16_UNORM(GLenum type) LoadImageFunctionInfo BGRA_EXT_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadEACR11ToR16, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_R16G16_UNORM(GLenum type) LoadImageFunctionInfo BGRX8_ANGLEX_to_B8G8R8A8_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadEACRG11ToRG16, true); return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM(GLenum type) LoadImageFunctionInfo BGRX8_ANGLEX_to_B8G8R8X8_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2RGB8ToRGBA8, true); return LoadImageFunctionInfo(LoadToNative<GLubyte, 4>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type) LoadImageFunctionInfo COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2RGB8ToBC1, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_R11_EAC_to_R16_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2RGB8A1ToRGBA8, true); return LoadImageFunctionInfo(LoadEACR11ToR16, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK(GLenum type)
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2RGB8A1ToBC1, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_RG11_EAC_to_R16G16_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2RGBA8ToRGBA8, true); return LoadImageFunctionInfo(LoadEACRG11ToRG16, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true); return LoadImageFunctionInfo(LoadETC2RGB8ToRGBA8, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true); return LoadImageFunctionInfo(LoadETC2RGB8ToBC1, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK(
GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true); return LoadImageFunctionInfo(LoadETC2RGB8A1ToRGBA8, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default(GLenum type) LoadImageFunctionInfo
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true); return LoadImageFunctionInfo(LoadETC2RGB8A1ToBC1, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_RGB_S3TC_DXT1_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadEACR11SToR16, true); return LoadImageFunctionInfo(LoadETC2RGBA8ToRGBA8, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x10_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadEACRG11SToRG16, true); return LoadImageFunctionInfo(LoadCompressedToNative<10, 10, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGBA8ToSRGBA8, true); return LoadImageFunctionInfo(LoadCompressedToNative<10, 5, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x6_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8ToRGBA8, true); return LoadImageFunctionInfo(LoadCompressedToNative<10, 6, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK( LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_10x8_KHR_to_default(GLenum type)
GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8ToBC1, true); return LoadImageFunctionInfo(LoadCompressedToNative<10, 8, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x10_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8A1ToRGBA8, true); return LoadImageFunctionInfo(LoadCompressedToNative<12, 10, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_12x12_KHR_to_default(GLenum type)
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK(
GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8A1ToBC1, true); return LoadImageFunctionInfo(LoadCompressedToNative<12, 12, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_4x4_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
...@@ -494,455 +506,1023 @@ LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum typ ...@@ -494,455 +506,1023 @@ LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum typ
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x4_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true); return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_5x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true); return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true); return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_6x6_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true); return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT_24_8: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadR32ToR24G8, true); return LoadImageFunctionInfo(LoadCompressedToNative<8, 5, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x6_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadD32FS8X24ToD32FS8X24, true); return LoadImageFunctionInfo(LoadCompressedToNative<8, 6, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo DEPTH_COMPONENT16_to_D16_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_ASTC_8x8_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadR32ToR16, true); return LoadImageFunctionInfo(LoadCompressedToNative<8, 8, 16>, true);
case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadR32ToR24G8, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo DEPTH_COMPONENT32F_to_D32_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT1_EXT_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadD32FToD32F, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo DEPTH_COMPONENT32_OES_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT3_ANGLE_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadR32ToR24G8, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type) LoadImageFunctionInfo COMPRESSED_RGBA_S3TC_DXT5_ANGLE_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC1RGB8ToBC1, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC1RGB8ToRGBA8, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_to_R16G16B16A16_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_to_R32G32B32A32_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_RGB_S3TC_DXT1_EXT_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT:
return LoadImageFunctionInfo(LoadL32FToRGBA32F, true);
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE16F_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_HALF_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true); return LoadImageFunctionInfo(LoadEACR11SToR16, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE32F_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadL32FToRGBA32F, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadLA8ToRGBA8, true); return LoadImageFunctionInfo(LoadEACRG11SToRG16, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false); return LoadImageFunctionInfo(LoadCompressedToNative<10, 10, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE8_EXT_to_R8G8B8A8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadL8ToRGBA8, true); return LoadImageFunctionInfo(LoadCompressedToNative<10, 5, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE8_EXT_to_R8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false); return LoadImageFunctionInfo(LoadCompressedToNative<10, 6, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadCompressedToNative<10, 8, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT:
return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true);
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadCompressedToNative<12, 10, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_ALPHA_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadCompressedToNative<12, 12, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_HALF_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_default(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true); return LoadImageFunctionInfo(LoadCompressedToNative<5, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R11F_G11F_B10F_to_R11G11B10_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadRGB32FToRG11B10F, true); return LoadImageFunctionInfo(LoadCompressedToNative<5, 5, 16>, true);
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
case GL_UNSIGNED_INT_10F_11F_11F_REV:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R16F_to_R16_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(Load32FTo16F<1>, true); return LoadImageFunctionInfo(LoadCompressedToNative<6, 5, 16>, true);
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R16I_to_R16_SINT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLshort, 1>, false); return LoadImageFunctionInfo(LoadCompressedToNative<6, 6, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R16UI_to_R16_UINT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false); return LoadImageFunctionInfo(LoadCompressedToNative<8, 5, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R16_EXT_to_R16_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false); return LoadImageFunctionInfo(LoadCompressedToNative<8, 6, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R16_SNORM_EXT_to_R16_SNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false); return LoadImageFunctionInfo(LoadCompressedToNative<8, 8, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R32F_to_R32_FLOAT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R32I_to_R32_SINT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_INT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLint, 1>, false); return LoadImageFunctionInfo(LoadETC2SRGBA8ToSRGBA8, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R32UI_to_R32_UINT(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false); return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo R8_to_R8_UNORM(GLenum type) LoadImageFunctionInfo COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8ToRGBA8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB8_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGB_UNORM_SRGB_BLOCK(
GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8ToBC1, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK(
GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8A1ToRGBA8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_LOSSY_DECODE_ETC2_ANGLE_to_BC1_RGBA_UNORM_SRGB_BLOCK(
GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC2SRGB8A1ToBC1, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 16>, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo COMPRESSED_SRGB_S3TC_DXT1_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT_24_8:
return LoadImageFunctionInfo(LoadR32ToR24G8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT_24_8:
return LoadImageFunctionInfo(LoadD24S8ToD32FS8X24, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT(GLenum type)
{
switch (type)
{
case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
return LoadImageFunctionInfo(LoadD32FS8X24ToD24S8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT(GLenum type)
{
switch (type)
{
case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
return LoadImageFunctionInfo(LoadD32FS8X24ToD32FS8X24, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH_COMPONENT16_to_D16_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT:
return LoadImageFunctionInfo(LoadR32ToR16, true);
case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT:
return LoadImageFunctionInfo(LoadR32ToR24G8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT_24_8:
return LoadImageFunctionInfo(LoadD24S8ToD32FS8X24, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH_COMPONENT32F_to_D32_FLOAT(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadD32FToD32F, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo DEPTH_COMPONENT32_OES_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT:
return LoadImageFunctionInfo(LoadR32ToR24G8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo ETC1_RGB8_LOSSY_DECODE_ANGLE_to_BC1_RGB_UNORM_BLOCK(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC1RGB8ToBC1, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadCompressedToNative<4, 4, 8>, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadETC1RGB8ToRGBA8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_to_R16G16B16A16_FLOAT(GLenum type)
{
switch (type)
{
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_to_R32G32B32A32_FLOAT(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadL32FToRGBA32F, true);
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE16F_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadL16FToRGBA16F, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE32F_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadL32FToRGBA32F, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8B8A8_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadLA8ToRGBA8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE8_ALPHA8_EXT_to_R8G8_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE8_EXT_to_R8G8B8A8_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadL8ToRGBA8, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE8_EXT_to_R8_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_ALPHA_to_R16G16B16A16_FLOAT(GLenum type)
{
switch (type)
{
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_ALPHA_to_R32G32B32A32_FLOAT(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true);
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_ALPHA_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadLA16FToRGBA16F, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_default(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadLA32FToRGBA32F, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R11F_G11F_B10F_to_R11G11B10_FLOAT(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadRGB32FToRG11B10F, true);
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadRGB16FToRG11B10F, true);
case GL_UNSIGNED_INT_10F_11F_11F_REV:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R16F_to_R16_FLOAT(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(Load32FTo16F<1>, true);
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R16I_to_R16_SINT(GLenum type)
{
switch (type)
{
case GL_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLshort, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R16UI_to_R16_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R16_EXT_to_R16_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R16_SNORM_EXT_to_R16_SNORM(GLenum type)
{
switch (type)
{
case GL_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R16_SSCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R16_USCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R32F_to_R32_FLOAT(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R32I_to_R32_SINT(GLenum type)
{
switch (type)
{
case GL_INT:
return LoadImageFunctionInfo(LoadToNative<GLint, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R32UI_to_R32_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R8_to_R8_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
...@@ -990,6 +1570,30 @@ LoadImageFunctionInfo R8_SNORM_to_R8_SNORM(GLenum type) ...@@ -990,6 +1570,30 @@ LoadImageFunctionInfo R8_SNORM_to_R8_SNORM(GLenum type)
} }
} }
LoadImageFunctionInfo R8_SSCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo R8_USCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG16F_to_R16G16_FLOAT(GLenum type) LoadImageFunctionInfo RG16F_to_R16G16_FLOAT(GLenum type)
{ {
switch (type) switch (type)
...@@ -1018,258 +1622,482 @@ LoadImageFunctionInfo RG16I_to_R16G16_SINT(GLenum type) ...@@ -1018,258 +1622,482 @@ LoadImageFunctionInfo RG16I_to_R16G16_SINT(GLenum type)
} }
} }
LoadImageFunctionInfo RG16UI_to_R16G16_UINT(GLenum type) LoadImageFunctionInfo RG16UI_to_R16G16_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG16_EXT_to_R16G16_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG16_SNORM_EXT_to_R16G16_SNORM(GLenum type)
{
switch (type)
{
case GL_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG16_SSCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG16_USCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG32F_to_R32G32_FLOAT(GLenum type)
{
switch (type)
{
case GL_FLOAT:
return LoadImageFunctionInfo(LoadToNative<GLfloat, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG32I_to_R32G32_SINT(GLenum type)
{
switch (type)
{
case GL_INT:
return LoadImageFunctionInfo(LoadToNative<GLint, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG32UI_to_R32G32_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT:
return LoadImageFunctionInfo(LoadToNative<GLuint, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG8_to_R8G8_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG8I_to_R8G8_SINT(GLenum type)
{
switch (type)
{
case GL_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG8UI_to_R8G8_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG8_SNORM_to_R8G8_SNORM(GLenum type)
{
switch (type)
{
case GL_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG8_SSCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RG8_USCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
case GL_UNSIGNED_SHORT_5_6_5:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB10_A2_to_R10G10B10A2_UNORM(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT_2_10_10_10_REV:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB10_A2UI_to_R10G10B10A2_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_INT_2_10_10_10_REV:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
case GL_UNSIGNED_INT_2_10_10_10_REV:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false); return LoadImageFunctionInfo(LoadRGB10A2ToRGBA8, true);
case GL_UNSIGNED_INT_2_10_10_10_REV:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG16_EXT_to_R16G16_UNORM(GLenum type) LoadImageFunctionInfo RGB10_A2_SSCALED_ANGLEX_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG16_SNORM_EXT_to_R16G16_SNORM(GLenum type) LoadImageFunctionInfo RGB10_A2_USCALED_ANGLEX_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLushort, 2>, false); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG32F_to_R32G32_FLOAT(GLenum type) LoadImageFunctionInfo RGB16F_to_R16G16B16A16_FLOAT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_FLOAT:
return LoadImageFunctionInfo(LoadToNative<GLfloat, 2>, false); return LoadImageFunctionInfo(LoadRGB32FToRGBA16F, true);
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG32I_to_R32G32_SINT(GLenum type) LoadImageFunctionInfo RGB16F_to_R16G16B16_FLOAT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_INT: case GL_FLOAT:
return LoadImageFunctionInfo(LoadToNative<GLint, 2>, false); return LoadImageFunctionInfo(LoadRGB32FToRGB16F, true);
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadToNative<GLhalf, 3>, false);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadToNative<GLhalf, 3>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG32UI_to_R32G32_UINT(GLenum type) LoadImageFunctionInfo RGB16I_to_R16G16B16A16_SINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT: case GL_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLuint, 2>, false); return LoadImageFunctionInfo(LoadToNative3To4<GLshort, 0x0001>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG8_to_R8G8_UNORM(GLenum type) LoadImageFunctionInfo RGB16I_to_R16G16B16_SINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false); return LoadImageFunctionInfo(LoadToNative<GLshort, 3>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG8I_to_R8G8_SINT(GLenum type) LoadImageFunctionInfo RGB16UI_to_R16G16B16A16_UINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_BYTE: case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false); return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x0001>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG8UI_to_R8G8_UINT(GLenum type) LoadImageFunctionInfo RGB16UI_to_R16G16B16_UINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 2>, false); return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RG8_SNORM_to_R8G8_SNORM(GLenum type) LoadImageFunctionInfo RGB16_EXT_to_R16G16B16A16_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_BYTE: case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLbyte, 2>, false); return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0xFFFF>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB_to_default(GLenum type) LoadImageFunctionInfo RGB16_EXT_to_R16G16B16_UNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_BYTE: case GL_UNSIGNED_SHORT:
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
case GL_UNSIGNED_SHORT_5_6_5:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB10_A2_to_R10G10B10A2_UNORM(GLenum type) LoadImageFunctionInfo RGB16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT_2_10_10_10_REV: case GL_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false); return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x7FFF>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB10_A2UI_to_R10G10B10A2_UINT(GLenum type) LoadImageFunctionInfo RGB16_SNORM_EXT_to_R16G16B16_SNORM(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT_2_10_10_10_REV: case GL_SHORT:
return LoadImageFunctionInfo(LoadToNative<GLuint, 1>, false); return LoadImageFunctionInfo(LoadToNative<GLushort, 3>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB16F_to_R16G16B16A16_FLOAT(GLenum type) LoadImageFunctionInfo RGB16_SSCALED_ANGLEX_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadRGB32FToRGBA16F, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
case GL_HALF_FLOAT:
return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
case GL_HALF_FLOAT_OES:
return LoadImageFunctionInfo(LoadToNative3To4<GLhalf, gl::Float16One>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB16I_to_R16G16B16A16_SINT(GLenum type) LoadImageFunctionInfo RGB16_USCALED_ANGLEX_to_default(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_SHORT: case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative3To4<GLshort, 0x0001>, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB16UI_to_R16G16B16A16_UINT(GLenum type) LoadImageFunctionInfo RGB32F_to_R32G32B32A32_FLOAT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_SHORT: case GL_FLOAT:
return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x0001>, true); return LoadImageFunctionInfo(LoadToNative3To4<GLfloat, gl::Float32One>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB16_EXT_to_R16G16B16A16_UNORM(GLenum type) LoadImageFunctionInfo RGB32F_to_R32G32B32_FLOAT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_SHORT: case GL_FLOAT:
return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0xFFFF>, true); return LoadImageFunctionInfo(LoadToNative<GLfloat, 3>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type) LoadImageFunctionInfo RGB32I_to_R32G32B32A32_SINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_SHORT: case GL_INT:
return LoadImageFunctionInfo(LoadToNative3To4<GLushort, 0x7FFF>, true); return LoadImageFunctionInfo(LoadToNative3To4<GLint, 0x00000001>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB32F_to_R32G32B32A32_FLOAT(GLenum type) LoadImageFunctionInfo RGB32I_to_R32G32B32_SINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_FLOAT: case GL_INT:
return LoadImageFunctionInfo(LoadToNative3To4<GLfloat, gl::Float32One>, true); return LoadImageFunctionInfo(LoadToNative<GLint, 3>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB32I_to_R32G32B32A32_SINT(GLenum type) LoadImageFunctionInfo RGB32UI_to_R32G32B32A32_UINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_INT: case GL_UNSIGNED_INT:
return LoadImageFunctionInfo(LoadToNative3To4<GLint, 0x00000001>, true); return LoadImageFunctionInfo(LoadToNative3To4<GLuint, 0x00000001>, true);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
} }
} }
LoadImageFunctionInfo RGB32UI_to_R32G32B32A32_UINT(GLenum type) LoadImageFunctionInfo RGB32UI_to_R32G32B32_UINT(GLenum type)
{ {
switch (type) switch (type)
{ {
case GL_UNSIGNED_INT: case GL_UNSIGNED_INT:
return LoadImageFunctionInfo(LoadToNative3To4<GLuint, 0x00000001>, true); return LoadImageFunctionInfo(LoadToNative<GLuint, 3>, false);
default: default:
UNREACHABLE(); UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true); return LoadImageFunctionInfo(UnreachableLoadFunction, true);
...@@ -1384,6 +2212,18 @@ LoadImageFunctionInfo RGB8I_to_R8G8B8A8_SINT(GLenum type) ...@@ -1384,6 +2212,18 @@ LoadImageFunctionInfo RGB8I_to_R8G8B8A8_SINT(GLenum type)
} }
} }
LoadImageFunctionInfo RGB8I_to_R8G8B8_SINT(GLenum type)
{
switch (type)
{
case GL_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB8UI_to_R8G8B8A8_UINT(GLenum type) LoadImageFunctionInfo RGB8UI_to_R8G8B8A8_UINT(GLenum type)
{ {
switch (type) switch (type)
...@@ -1396,6 +2236,18 @@ LoadImageFunctionInfo RGB8UI_to_R8G8B8A8_UINT(GLenum type) ...@@ -1396,6 +2236,18 @@ LoadImageFunctionInfo RGB8UI_to_R8G8B8A8_UINT(GLenum type)
} }
} }
LoadImageFunctionInfo RGB8UI_to_R8G8B8_UINT(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLubyte, 3>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type) LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type)
{ {
switch (type) switch (type)
...@@ -1408,6 +2260,42 @@ LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type) ...@@ -1408,6 +2260,42 @@ LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8A8_SNORM(GLenum type)
} }
} }
LoadImageFunctionInfo RGB8_SNORM_to_R8G8B8_SNORM(GLenum type)
{
switch (type)
{
case GL_BYTE:
return LoadImageFunctionInfo(LoadToNative<GLbyte, 3>, false);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB8_SSCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB8_USCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGB9_E5_to_R9G9B9E5_SHAREDEXP(GLenum type) LoadImageFunctionInfo RGB9_E5_to_R9G9B9E5_SHAREDEXP(GLenum type)
{ {
switch (type) switch (type)
...@@ -1506,6 +2394,30 @@ LoadImageFunctionInfo RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type) ...@@ -1506,6 +2394,30 @@ LoadImageFunctionInfo RGBA16_SNORM_EXT_to_R16G16B16A16_SNORM(GLenum type)
} }
} }
LoadImageFunctionInfo RGBA16_SSCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGBA16_USCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGBA32F_to_R32G32B32A32_FLOAT(GLenum type) LoadImageFunctionInfo RGBA32F_to_R32G32B32A32_FLOAT(GLenum type)
{ {
switch (type) switch (type)
...@@ -1618,6 +2530,30 @@ LoadImageFunctionInfo RGBA8_SNORM_to_R8G8B8A8_SNORM(GLenum type) ...@@ -1618,6 +2530,30 @@ LoadImageFunctionInfo RGBA8_SNORM_to_R8G8B8A8_SNORM(GLenum type)
} }
} }
LoadImageFunctionInfo RGBA8_SSCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo RGBA8_USCALED_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo SRGB8_to_R8G8B8A8_UNORM_SRGB(GLenum type) LoadImageFunctionInfo SRGB8_to_R8G8B8A8_UNORM_SRGB(GLenum type)
{ {
switch (type) switch (type)
...@@ -1661,6 +2597,17 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1661,6 +2597,17 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
// clang-format off // clang-format off
switch (internalFormat) switch (internalFormat)
{ {
case GL_A1RGB5_ANGLEX:
{
switch (angleFormat)
{
case FormatID::A1R5G5B5_UNORM:
return A1RGB5_ANGLEX_to_A1R5G5B5_UNORM;
default:
break;
}
break;
}
case GL_ALPHA: case GL_ALPHA:
{ {
switch (angleFormat) switch (angleFormat)
...@@ -1709,12 +2656,38 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1709,12 +2656,38 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
return BGRA4_ANGLEX_to_default; return BGRA4_ANGLEX_to_default;
case GL_BGRA8_EXT: case GL_BGRA8_EXT:
return BGRA8_EXT_to_default; return BGRA8_EXT_to_default;
case GL_BGRA8_SRGB_ANGLEX:
{
switch (angleFormat)
{
case FormatID::B8G8R8A8_UNORM_SRGB:
return BGRA8_SRGB_ANGLEX_to_B8G8R8A8_UNORM_SRGB;
default:
break;
}
break;
}
case GL_BGRA_EXT: case GL_BGRA_EXT:
return BGRA_EXT_to_default; return BGRA_EXT_to_default;
case GL_BGRX8_ANGLEX:
{
switch (angleFormat)
{
case FormatID::B8G8R8A8_UNORM:
return BGRX8_ANGLEX_to_B8G8R8A8_UNORM;
case FormatID::B8G8R8X8_UNORM:
return BGRX8_ANGLEX_to_B8G8R8X8_UNORM;
default:
break;
}
break;
}
case GL_COMPRESSED_R11_EAC: case GL_COMPRESSED_R11_EAC:
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::EAC_R11_UNORM_BLOCK:
return COMPRESSED_R11_EAC_to_EAC_R11_UNORM_BLOCK;
case FormatID::R16_UNORM: case FormatID::R16_UNORM:
return COMPRESSED_R11_EAC_to_R16_UNORM; return COMPRESSED_R11_EAC_to_R16_UNORM;
default: default:
...@@ -1726,6 +2699,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1726,6 +2699,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::EAC_R11G11_UNORM_BLOCK:
return COMPRESSED_RG11_EAC_to_EAC_R11G11_UNORM_BLOCK;
case FormatID::R16G16_UNORM: case FormatID::R16G16_UNORM:
return COMPRESSED_RG11_EAC_to_R16G16_UNORM; return COMPRESSED_RG11_EAC_to_R16G16_UNORM;
default: default:
...@@ -1737,6 +2712,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1737,6 +2712,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::ETC2_R8G8B8_UNORM_BLOCK:
return COMPRESSED_RGB8_ETC2_to_ETC2_R8G8B8_UNORM_BLOCK;
case FormatID::R8G8B8A8_UNORM: case FormatID::R8G8B8A8_UNORM:
return COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM; return COMPRESSED_RGB8_ETC2_to_R8G8B8A8_UNORM;
default: default:
...@@ -1759,6 +2736,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1759,6 +2736,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::ETC2_R8G8B8A1_UNORM_BLOCK:
return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_UNORM_BLOCK;
case FormatID::R8G8B8A8_UNORM: case FormatID::R8G8B8A8_UNORM:
return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM; return COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM;
default: default:
...@@ -1781,6 +2760,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1781,6 +2760,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::ETC2_R8G8B8A8_UNORM_BLOCK:
return COMPRESSED_RGBA8_ETC2_EAC_to_ETC2_R8G8B8A8_UNORM_BLOCK;
case FormatID::R8G8B8A8_UNORM: case FormatID::R8G8B8A8_UNORM:
return COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM; return COMPRESSED_RGBA8_ETC2_EAC_to_R8G8B8A8_UNORM;
default: default:
...@@ -1788,6 +2769,34 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1788,6 +2769,34 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
return COMPRESSED_RGBA_ASTC_10x10_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
return COMPRESSED_RGBA_ASTC_10x5_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
return COMPRESSED_RGBA_ASTC_10x6_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
return COMPRESSED_RGBA_ASTC_10x8_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
return COMPRESSED_RGBA_ASTC_12x10_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
return COMPRESSED_RGBA_ASTC_12x12_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
return COMPRESSED_RGBA_ASTC_4x4_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
return COMPRESSED_RGBA_ASTC_5x4_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
return COMPRESSED_RGBA_ASTC_5x5_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
return COMPRESSED_RGBA_ASTC_6x5_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
return COMPRESSED_RGBA_ASTC_6x6_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
return COMPRESSED_RGBA_ASTC_8x5_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
return COMPRESSED_RGBA_ASTC_8x6_KHR_to_default;
case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
return COMPRESSED_RGBA_ASTC_8x8_KHR_to_default;
case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT: case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT:
return COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default; return COMPRESSED_RGBA_BPTC_UNORM_EXT_to_default;
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
...@@ -1806,6 +2815,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1806,6 +2815,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::EAC_R11_SNORM_BLOCK:
return COMPRESSED_SIGNED_R11_EAC_to_EAC_R11_SNORM_BLOCK;
case FormatID::R16_SNORM: case FormatID::R16_SNORM:
return COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM; return COMPRESSED_SIGNED_R11_EAC_to_R16_SNORM;
default: default:
...@@ -1817,6 +2828,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1817,6 +2828,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::EAC_R11G11_SNORM_BLOCK:
return COMPRESSED_SIGNED_RG11_EAC_to_EAC_R11G11_SNORM_BLOCK;
case FormatID::R16G16_SNORM: case FormatID::R16G16_SNORM:
return COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM; return COMPRESSED_SIGNED_RG11_EAC_to_R16G16_SNORM;
default: default:
...@@ -1824,10 +2837,40 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1824,10 +2837,40 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
return COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR_to_default;
case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::ETC2_R8G8B8A8_SRGB_BLOCK:
return COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_ETC2_R8G8B8A8_SRGB_BLOCK;
case FormatID::R8G8B8A8_UNORM_SRGB: case FormatID::R8G8B8A8_UNORM_SRGB:
return COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB; return COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_to_R8G8B8A8_UNORM_SRGB;
default: default:
...@@ -1839,6 +2882,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1839,6 +2882,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::ETC2_R8G8B8_SRGB_BLOCK:
return COMPRESSED_SRGB8_ETC2_to_ETC2_R8G8B8_SRGB_BLOCK;
case FormatID::R8G8B8A8_UNORM_SRGB: case FormatID::R8G8B8A8_UNORM_SRGB:
return COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB; return COMPRESSED_SRGB8_ETC2_to_R8G8B8A8_UNORM_SRGB;
default: default:
...@@ -1861,6 +2906,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1861,6 +2906,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::ETC2_R8G8B8A1_SRGB_BLOCK:
return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_ETC2_R8G8B8A1_SRGB_BLOCK;
case FormatID::R8G8B8A8_UNORM_SRGB: case FormatID::R8G8B8A8_UNORM_SRGB:
return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB; return COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_to_R8G8B8A8_UNORM_SRGB;
default: default:
...@@ -1895,6 +2942,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1895,6 +2942,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::D24_UNORM_S8_UINT: case FormatID::D24_UNORM_S8_UINT:
return DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT; return DEPTH24_STENCIL8_to_D24_UNORM_S8_UINT;
case FormatID::D32_FLOAT_S8X24_UINT:
return DEPTH24_STENCIL8_to_D32_FLOAT_S8X24_UINT;
default: default:
break; break;
} }
...@@ -1904,6 +2953,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1904,6 +2953,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::D24_UNORM_S8_UINT:
return DEPTH32F_STENCIL8_to_D24_UNORM_S8_UINT;
case FormatID::D32_FLOAT_S8X24_UINT: case FormatID::D32_FLOAT_S8X24_UINT:
return DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT; return DEPTH32F_STENCIL8_to_D32_FLOAT_S8X24_UINT;
default: default:
...@@ -1928,6 +2979,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1928,6 +2979,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::D24_UNORM_S8_UINT: case FormatID::D24_UNORM_S8_UINT:
return DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT; return DEPTH_COMPONENT24_to_D24_UNORM_S8_UINT;
case FormatID::D32_FLOAT_S8X24_UINT:
return DEPTH_COMPONENT24_to_D32_FLOAT_S8X24_UINT;
default: default:
break; break;
} }
...@@ -1961,6 +3014,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -1961,6 +3014,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::ETC1_R8G8B8_UNORM_BLOCK:
return ETC1_RGB8_OES_to_ETC1_R8G8B8_UNORM_BLOCK;
case FormatID::R8G8B8A8_UNORM: case FormatID::R8G8B8A8_UNORM:
return ETC1_RGB8_OES_to_R8G8B8A8_UNORM; return ETC1_RGB8_OES_to_R8G8B8A8_UNORM;
default: default:
...@@ -2092,6 +3147,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2092,6 +3147,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_R16_SSCALED_ANGLEX:
return R16_SSCALED_ANGLEX_to_default;
case GL_R16_USCALED_ANGLEX:
return R16_USCALED_ANGLEX_to_default;
case GL_R32F: case GL_R32F:
{ {
switch (angleFormat) switch (angleFormat)
...@@ -2169,6 +3228,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2169,6 +3228,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_R8_SSCALED_ANGLEX:
return R8_SSCALED_ANGLEX_to_default;
case GL_R8_USCALED_ANGLEX:
return R8_USCALED_ANGLEX_to_default;
case GL_RG16F: case GL_RG16F:
{ {
switch (angleFormat) switch (angleFormat)
...@@ -2224,6 +3287,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2224,6 +3287,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_RG16_SSCALED_ANGLEX:
return RG16_SSCALED_ANGLEX_to_default;
case GL_RG16_USCALED_ANGLEX:
return RG16_USCALED_ANGLEX_to_default;
case GL_RG32F: case GL_RG32F:
{ {
switch (angleFormat) switch (angleFormat)
...@@ -2301,6 +3368,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2301,6 +3368,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_RG8_SSCALED_ANGLEX:
return RG8_SSCALED_ANGLEX_to_default;
case GL_RG8_USCALED_ANGLEX:
return RG8_USCALED_ANGLEX_to_default;
case GL_RGB: case GL_RGB:
return RGB_to_default; return RGB_to_default;
case GL_RGB10_A2: case GL_RGB10_A2:
...@@ -2325,12 +3396,40 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2325,12 +3396,40 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_RGB10_A2_SINT_ANGLEX:
{
switch (angleFormat)
{
case FormatID::R10G10B10A2_SINT:
return RGB10_A2_SINT_ANGLEX_to_R10G10B10A2_SINT;
default:
break;
}
break;
}
case GL_RGB10_A2_SNORM_ANGLEX:
{
switch (angleFormat)
{
case FormatID::R10G10B10A2_SNORM:
return RGB10_A2_SNORM_ANGLEX_to_R10G10B10A2_SNORM;
default:
break;
}
break;
}
case GL_RGB10_A2_SSCALED_ANGLEX:
return RGB10_A2_SSCALED_ANGLEX_to_default;
case GL_RGB10_A2_USCALED_ANGLEX:
return RGB10_A2_USCALED_ANGLEX_to_default;
case GL_RGB16F: case GL_RGB16F:
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::R16G16B16A16_FLOAT: case FormatID::R16G16B16A16_FLOAT:
return RGB16F_to_R16G16B16A16_FLOAT; return RGB16F_to_R16G16B16A16_FLOAT;
case FormatID::R16G16B16_FLOAT:
return RGB16F_to_R16G16B16_FLOAT;
default: default:
break; break;
} }
...@@ -2342,6 +3441,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2342,6 +3441,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R16G16B16A16_SINT: case FormatID::R16G16B16A16_SINT:
return RGB16I_to_R16G16B16A16_SINT; return RGB16I_to_R16G16B16A16_SINT;
case FormatID::R16G16B16_SINT:
return RGB16I_to_R16G16B16_SINT;
default: default:
break; break;
} }
...@@ -2353,6 +3454,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2353,6 +3454,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R16G16B16A16_UINT: case FormatID::R16G16B16A16_UINT:
return RGB16UI_to_R16G16B16A16_UINT; return RGB16UI_to_R16G16B16A16_UINT;
case FormatID::R16G16B16_UINT:
return RGB16UI_to_R16G16B16_UINT;
default: default:
break; break;
} }
...@@ -2364,6 +3467,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2364,6 +3467,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R16G16B16A16_UNORM: case FormatID::R16G16B16A16_UNORM:
return RGB16_EXT_to_R16G16B16A16_UNORM; return RGB16_EXT_to_R16G16B16A16_UNORM;
case FormatID::R16G16B16_UNORM:
return RGB16_EXT_to_R16G16B16_UNORM;
default: default:
break; break;
} }
...@@ -2375,17 +3480,25 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2375,17 +3480,25 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R16G16B16A16_SNORM: case FormatID::R16G16B16A16_SNORM:
return RGB16_SNORM_EXT_to_R16G16B16A16_SNORM; return RGB16_SNORM_EXT_to_R16G16B16A16_SNORM;
case FormatID::R16G16B16_SNORM:
return RGB16_SNORM_EXT_to_R16G16B16_SNORM;
default: default:
break; break;
} }
break; break;
} }
case GL_RGB16_SSCALED_ANGLEX:
return RGB16_SSCALED_ANGLEX_to_default;
case GL_RGB16_USCALED_ANGLEX:
return RGB16_USCALED_ANGLEX_to_default;
case GL_RGB32F: case GL_RGB32F:
{ {
switch (angleFormat) switch (angleFormat)
{ {
case FormatID::R32G32B32A32_FLOAT: case FormatID::R32G32B32A32_FLOAT:
return RGB32F_to_R32G32B32A32_FLOAT; return RGB32F_to_R32G32B32A32_FLOAT;
case FormatID::R32G32B32_FLOAT:
return RGB32F_to_R32G32B32_FLOAT;
default: default:
break; break;
} }
...@@ -2397,6 +3510,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2397,6 +3510,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R32G32B32A32_SINT: case FormatID::R32G32B32A32_SINT:
return RGB32I_to_R32G32B32A32_SINT; return RGB32I_to_R32G32B32A32_SINT;
case FormatID::R32G32B32_SINT:
return RGB32I_to_R32G32B32_SINT;
default: default:
break; break;
} }
...@@ -2408,6 +3523,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2408,6 +3523,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R32G32B32A32_UINT: case FormatID::R32G32B32A32_UINT:
return RGB32UI_to_R32G32B32A32_UINT; return RGB32UI_to_R32G32B32A32_UINT;
case FormatID::R32G32B32_UINT:
return RGB32UI_to_R32G32B32_UINT;
default: default:
break; break;
} }
...@@ -2460,6 +3577,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2460,6 +3577,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R8G8B8A8_SINT: case FormatID::R8G8B8A8_SINT:
return RGB8I_to_R8G8B8A8_SINT; return RGB8I_to_R8G8B8A8_SINT;
case FormatID::R8G8B8_SINT:
return RGB8I_to_R8G8B8_SINT;
default: default:
break; break;
} }
...@@ -2471,6 +3590,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2471,6 +3590,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R8G8B8A8_UINT: case FormatID::R8G8B8A8_UINT:
return RGB8UI_to_R8G8B8A8_UINT; return RGB8UI_to_R8G8B8A8_UINT;
case FormatID::R8G8B8_UINT:
return RGB8UI_to_R8G8B8_UINT;
default: default:
break; break;
} }
...@@ -2482,11 +3603,17 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2482,11 +3603,17 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
{ {
case FormatID::R8G8B8A8_SNORM: case FormatID::R8G8B8A8_SNORM:
return RGB8_SNORM_to_R8G8B8A8_SNORM; return RGB8_SNORM_to_R8G8B8A8_SNORM;
case FormatID::R8G8B8_SNORM:
return RGB8_SNORM_to_R8G8B8_SNORM;
default: default:
break; break;
} }
break; break;
} }
case GL_RGB8_SSCALED_ANGLEX:
return RGB8_SSCALED_ANGLEX_to_default;
case GL_RGB8_USCALED_ANGLEX:
return RGB8_USCALED_ANGLEX_to_default;
case GL_RGB9_E5: case GL_RGB9_E5:
{ {
switch (angleFormat) switch (angleFormat)
...@@ -2555,6 +3682,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2555,6 +3682,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_RGBA16_SSCALED_ANGLEX:
return RGBA16_SSCALED_ANGLEX_to_default;
case GL_RGBA16_USCALED_ANGLEX:
return RGBA16_USCALED_ANGLEX_to_default;
case GL_RGBA32F: case GL_RGBA32F:
{ {
switch (angleFormat) switch (angleFormat)
...@@ -2645,6 +3776,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2645,6 +3776,10 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_RGBA8_SSCALED_ANGLEX:
return RGBA8_SSCALED_ANGLEX_to_default;
case GL_RGBA8_USCALED_ANGLEX:
return RGBA8_USCALED_ANGLEX_to_default;
case GL_SRGB8: case GL_SRGB8:
{ {
switch (angleFormat) switch (angleFormat)
...@@ -2674,6 +3809,7 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -2674,6 +3809,7 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
break; break;
} }
// clang-format on // clang-format on
ASSERT(internalFormat == GL_NONE || angleFormat == angle::FormatID::NONE);
static LoadFunctionMap emptyLoadFunctionsMap; static LoadFunctionMap emptyLoadFunctionsMap;
return emptyLoadFunctionsMap; return emptyLoadFunctionsMap;
......
...@@ -205,7 +205,6 @@ void FormatTable::initialize(RendererVk *renderer, ...@@ -205,7 +205,6 @@ void FormatTable::initialize(RendererVk *renderer,
format.initialize(renderer, angleFormat); format.initialize(renderer, angleFormat);
const GLenum internalFormat = format.internalFormat; const GLenum internalFormat = format.internalFormat;
format.textureLoadFunctions = GetLoadFunctionsMap(internalFormat, format.textureFormatID);
format.angleFormatID = formatID; format.angleFormatID = formatID;
if (!format.valid()) if (!format.valid())
...@@ -220,6 +219,12 @@ void FormatTable::initialize(RendererVk *renderer, ...@@ -220,6 +219,12 @@ void FormatTable::initialize(RendererVk *renderer,
FillTextureFormatCaps(renderer, format.vkTextureFormat, &textureCaps); FillTextureFormatCaps(renderer, format.vkTextureFormat, &textureCaps);
outTextureCapsMap->set(formatID, textureCaps); outTextureCapsMap->set(formatID, textureCaps);
if (textureCaps.texturable)
{
format.textureLoadFunctions =
GetLoadFunctionsMap(internalFormat, format.textureFormatID);
}
if (angleFormat.isBlock) if (angleFormat.isBlock)
{ {
outCompressedTextureFormats->push_back(internalFormat); outCompressedTextureFormats->push_back(internalFormat);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment