Commit 710e408e by Geoff Lang Committed by Commit Bot

Add support for P010 IOSurfaces

Add test coverage of multi-plane IOSurfaces. Bug: chromium:1115621 Change-Id: Ib2150c4221a3e49f01ab016cebba4830194ab2b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2376174Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 8970ad3f
...@@ -21,7 +21,7 @@ Status ...@@ -21,7 +21,7 @@ Status
Draft Draft
Version Version
Version 4, Dec 28, 2019 Version 6, Aug 25, 2020
Number Number
...@@ -109,8 +109,10 @@ Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors) ...@@ -109,8 +109,10 @@ Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
Texture Type Texture Internal Format Texture Type Texture Internal Format
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
GL_UNSIGNED_BYTE GL_RED GL_UNSIGNED_BYTE GL_RED
GL_UNSIGNED_SHORT GL_RED
GL_UNSIGNED_SHORT GL_R16UI GL_UNSIGNED_SHORT GL_R16UI
GL_UNSIGNED_BYTE GL_RG GL_UNSIGNED_BYTE GL_RG
GL_UNSIGNED_SHORT GL_RG
GL_UNSIGNED_BYTE GL_RGB GL_UNSIGNED_BYTE GL_RGB
GL_UNSIGNED_BYTE GL_BGRA_EXT GL_UNSIGNED_BYTE GL_BGRA_EXT
GL_UNSIGNED_INT_2_10_10_10_REV GL_RGB10_A2 GL_UNSIGNED_INT_2_10_10_10_REV GL_RGB10_A2
...@@ -150,3 +152,4 @@ Revision History ...@@ -150,3 +152,4 @@ Revision History
Version 4, 2019/12/28 - Add usage hint; require TEXTURE_RECTANGLE on macOS Version 4, 2019/12/28 - Add usage hint; require TEXTURE_RECTANGLE on macOS
and TEXTURE_2D on iOS and TEXTURE_2D on iOS
Version 5, 2020/06/30 - Allow RGB10_A2 internal formats Version 5, 2020/06/30 - Allow RGB10_A2 internal formats
Version 6, 2020/08/25 - Allow R16 and RG16 formats for P010 surfaces
...@@ -48,8 +48,10 @@ struct IOSurfaceFormatInfo ...@@ -48,8 +48,10 @@ struct IOSurfaceFormatInfo
// clang-format off // clang-format off
static const IOSurfaceFormatInfo kIOSurfaceFormats[] = { static const IOSurfaceFormatInfo kIOSurfaceFormats[] = {
{GL_RED, GL_UNSIGNED_BYTE, 1, GL_RED, GL_RED, GL_UNSIGNED_BYTE }, {GL_RED, GL_UNSIGNED_BYTE, 1, GL_RED, GL_RED, GL_UNSIGNED_BYTE },
{GL_RED, GL_UNSIGNED_SHORT, 2, GL_RED, GL_RED, GL_UNSIGNED_SHORT },
{GL_R16UI, GL_UNSIGNED_SHORT, 2, GL_RED, GL_RED, GL_UNSIGNED_SHORT }, {GL_R16UI, GL_UNSIGNED_SHORT, 2, GL_RED, GL_RED, GL_UNSIGNED_SHORT },
{GL_RG, GL_UNSIGNED_BYTE, 2, GL_RG, GL_RG, GL_UNSIGNED_BYTE }, {GL_RG, GL_UNSIGNED_BYTE, 2, GL_RG, GL_RG, GL_UNSIGNED_BYTE },
{GL_RG, GL_UNSIGNED_SHORT, 4, GL_RG, GL_RG, GL_UNSIGNED_SHORT },
{GL_RGB, GL_UNSIGNED_BYTE, 4, GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV }, {GL_RGB, GL_UNSIGNED_BYTE, 4, GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV },
{GL_BGRA_EXT, GL_UNSIGNED_BYTE, 4, GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV }, {GL_BGRA_EXT, GL_UNSIGNED_BYTE, 4, GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV },
{GL_RGB10_A2, GL_UNSIGNED_INT_2_10_10_10_REV, 4, GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV}, {GL_RGB10_A2, GL_UNSIGNED_INT_2_10_10_10_REV, 4, GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV},
......
...@@ -57,9 +57,11 @@ struct IOSurfaceFormatInfo ...@@ -57,9 +57,11 @@ struct IOSurfaceFormatInfo
// clang-format off // clang-format off
// NOTE(hqle): Support R16_UINT once GLES3 is complete. // NOTE(hqle): Support R16_UINT once GLES3 is complete.
constexpr std::array<IOSurfaceFormatInfo, 6> kIOSurfaceFormats = {{ constexpr std::array<IOSurfaceFormatInfo, 8> kIOSurfaceFormats = {{
{GL_RED, GL_UNSIGNED_BYTE, 1, angle::FormatID::R8_UNORM}, {GL_RED, GL_UNSIGNED_BYTE, 1, angle::FormatID::R8_UNORM},
{GL_RED, GL_UNSIGNED_SHORT, 2, angle::FormatID::R16_UNORM},
{GL_RG, GL_UNSIGNED_BYTE, 2, angle::FormatID::R8G8_UNORM}, {GL_RG, GL_UNSIGNED_BYTE, 2, angle::FormatID::R8G8_UNORM},
{GL_RG, GL_UNSIGNED_SHORT, 4, angle::FormatID::R16G16_UNORM},
{GL_RGB, GL_UNSIGNED_BYTE, 4, angle::FormatID::B8G8R8A8_UNORM}, {GL_RGB, GL_UNSIGNED_BYTE, 4, angle::FormatID::B8G8R8A8_UNORM},
{GL_BGRA_EXT, GL_UNSIGNED_BYTE, 4, angle::FormatID::B8G8R8A8_UNORM}, {GL_BGRA_EXT, GL_UNSIGNED_BYTE, 4, angle::FormatID::B8G8R8A8_UNORM},
{GL_RGBA, GL_HALF_FLOAT, 8, angle::FormatID::R16G16B16A16_FLOAT}, {GL_RGBA, GL_HALF_FLOAT, 8, angle::FormatID::R16G16B16A16_FLOAT},
......
...@@ -35,10 +35,12 @@ struct IOSurfaceFormatInfo ...@@ -35,10 +35,12 @@ struct IOSurfaceFormatInfo
}; };
// clang-format off // clang-format off
constexpr std::array<IOSurfaceFormatInfo, 7> kIOSurfaceFormats = {{ constexpr std::array<IOSurfaceFormatInfo, 9> kIOSurfaceFormats = {{
{GL_RED, GL_UNSIGNED_BYTE, 1, GL_R8 }, {GL_RED, GL_UNSIGNED_BYTE, 1, GL_R8 },
{GL_RED, GL_UNSIGNED_SHORT, 2, GL_R16_EXT },
{GL_R16UI, GL_UNSIGNED_SHORT, 2, GL_R16UI }, {GL_R16UI, GL_UNSIGNED_SHORT, 2, GL_R16UI },
{GL_RG, GL_UNSIGNED_BYTE, 2, GL_RG8 }, {GL_RG, GL_UNSIGNED_BYTE, 2, GL_RG8 },
{GL_RG, GL_UNSIGNED_SHORT, 4, GL_RG16_EXT },
{GL_RGB, GL_UNSIGNED_BYTE, 4, GL_BGRA8_EXT}, {GL_RGB, GL_UNSIGNED_BYTE, 4, GL_BGRA8_EXT},
{GL_BGRA_EXT, GL_UNSIGNED_BYTE, 4, GL_BGRA8_EXT}, {GL_BGRA_EXT, GL_UNSIGNED_BYTE, 4, GL_BGRA8_EXT},
{GL_RGB10_A2, GL_UNSIGNED_INT_2_10_10_10_REV, 4, GL_BGR10_A2_ANGLEX }, {GL_RGB10_A2, GL_UNSIGNED_INT_2_10_10_10_REV, 4, GL_BGR10_A2_ANGLEX },
......
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