chromium/third_party/angle/src/common/linux/dma_buf_utils.cpp

//
// Copyright 2021 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//

// dma_buf_utils.cpp: Utilities to interact with Linux dma bufs.

#include "dma_buf_utils.h"

#include "common/debug.h"

#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

#include <array>

namespace angle
{
GLenum DrmFourCCFormatToGLInternalFormat(int fourccFormat, bool *isYUV)
{}

#if defined(ANGLE_ENABLE_VULKAN)
std::vector<int> VkFormatToDrmFourCCFormat(VkFormat format)
{}

std::vector<VkFormat> DrmFourCCFormatToVkFormats(int fourccFormat)
{}

#endif  // ANGLE_ENABLE_VULKAN

#if defined(ANGLE_PLATFORM_LINUX) && defined(ANGLE_USES_GBM)
#    include <gbm.h>

int GLInternalFormatToGbmFourCCFormat(GLenum internalFormat)
{
    switch (internalFormat)
    {
        case GL_R8:
            return GBM_FORMAT_R8;
        case GL_RGB8:
            return GBM_FORMAT_GR88;
        case GL_RGB565:
            return GBM_FORMAT_RGB565;
        case GL_RGBA8:
            return GBM_FORMAT_ABGR8888;
        case GL_BGRA8_EXT:
            return GBM_FORMAT_ARGB8888;
        case GL_BGRX8_ANGLEX:
            return GBM_FORMAT_XRGB8888;
        case GL_RGBX8_ANGLE:
            return GBM_FORMAT_XBGR8888;
        case GL_RGB10_A2:
            return GBM_FORMAT_ABGR2101010;
        default:
            WARN() << "Unknown internalFormat: " << internalFormat << ". Treating as 0";
            return 0;
    }
}
#endif

}  // namespace angle