// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/gl/buffer_format_utils.h" #include "base/notreached.h" #include "ui/gl/gl_bindings.h" namespace gl { unsigned BufferFormatToGLInternalFormat(gfx::BufferFormat format) { switch (format) { case gfx::BufferFormat::R_8: return GL_RED_EXT; case gfx::BufferFormat::R_16: return GL_R16_EXT; case gfx::BufferFormat::RG_88: return GL_RG_EXT; case gfx::BufferFormat::RG_1616: return GL_RG16_EXT; case gfx::BufferFormat::BGR_565: return GL_RGB; case gfx::BufferFormat::RGBA_4444: return GL_RGBA; case gfx::BufferFormat::RGBX_8888: return GL_RGB; case gfx::BufferFormat::RGBA_8888: return GL_RGBA; case gfx::BufferFormat::BGRX_8888: return GL_RGB; case gfx::BufferFormat::BGRA_1010102: return GL_RGB10_A2_EXT; case gfx::BufferFormat::RGBA_1010102: return GL_RGB10_A2_EXT; case gfx::BufferFormat::BGRA_8888: return GL_BGRA_EXT; case gfx::BufferFormat::RGBA_F16: return GL_RGBA; case gfx::BufferFormat::YVU_420: return GL_RGB_YCRCB_420_CHROMIUM; case gfx::BufferFormat::YUV_420_BIPLANAR: return GL_RGB_YCBCR_420V_CHROMIUM; case gfx::BufferFormat::P010: return GL_RGB_YCBCR_P010_CHROMIUM; } NOTREACHED(); return GL_NONE; } unsigned BufferFormatToGLDataType(gfx::BufferFormat format) { switch (format) { case gfx::BufferFormat::R_8: case gfx::BufferFormat::RG_88: case gfx::BufferFormat::RGBX_8888: case gfx::BufferFormat::BGRX_8888: case gfx::BufferFormat::RGBA_8888: case gfx::BufferFormat::BGRA_8888: return GL_UNSIGNED_BYTE; case gfx::BufferFormat::R_16: case gfx::BufferFormat::RG_1616: return GL_UNSIGNED_SHORT; case gfx::BufferFormat::BGR_565: return GL_UNSIGNED_SHORT_5_6_5; case gfx::BufferFormat::RGBA_4444: return GL_UNSIGNED_SHORT_4_4_4_4; case gfx::BufferFormat::RGBA_1010102: case gfx::BufferFormat::BGRA_1010102: return GL_UNSIGNED_INT_2_10_10_10_REV; case gfx::BufferFormat::RGBA_F16: return GL_HALF_FLOAT_OES; case gfx::BufferFormat::YVU_420: case gfx::BufferFormat::YUV_420_BIPLANAR: case gfx::BufferFormat::P010: return GL_NONE; } NOTREACHED(); return GL_NONE; } } // namespace gl