Hash :
9ded03b4
Author :
Date :
2022-12-20T07:09:36
Revert "Vulkan: Make available GLInternalFormatToGbmFourCCFormat" This reverts commit 402e7f7a634b1170d0feae52a44168731a7489f9. Reason for revert: Chromium android-binary-size build failed. Original change's description: > Vulkan: Make available GLInternalFormatToGbmFourCCFormat > > GLInternalFormatToGbmFourCCFormat() is not available on Linux > because of the guard with the wrong definition, ANGLE_USES_GBM. > This also fixes build errors that were occurred after enabling. > > Bug: angleproject:7829 > Change-Id: If7c7543270cc127945149927be0fc3ffdd49163b > Signed-off-by: Sungyong Choi <sywow.choi@samsung.com> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4022963 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jeff Vigil <j.vigil@samsung.com> > Commit-Queue: mohan maiya <m.maiya@samsung.com> > Reviewed-by: mohan maiya <m.maiya@samsung.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:7901 Bug: angleproject:7829 Change-Id: I256d51f78ff0d3ced9920c3ea1d2bfceba43a1ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4113577 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
//
// 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)
{
*isYUV = false;
switch (fourccFormat)
{
case DRM_FORMAT_R8:
return GL_R8;
case DRM_FORMAT_R16:
return GL_R16_EXT;
case DRM_FORMAT_GR88:
return GL_RG8_EXT;
case DRM_FORMAT_ABGR8888:
return GL_RGBA8;
case DRM_FORMAT_XBGR8888:
return GL_RGBX8_ANGLE;
case DRM_FORMAT_ARGB8888:
return GL_BGRA8_EXT;
case DRM_FORMAT_XRGB8888:
return GL_BGRX8_ANGLEX;
case DRM_FORMAT_ABGR2101010:
case DRM_FORMAT_ARGB2101010:
return GL_RGB10_A2_EXT;
case DRM_FORMAT_RGB565:
return GL_RGB565;
case DRM_FORMAT_NV12:
case DRM_FORMAT_YVU420:
case DRM_FORMAT_P010:
*isYUV = true;
return GL_RGB8;
default:
UNREACHABLE();
WARN() << "Unknown dma_buf format " << fourccFormat
<< " used to initialize an EGL image.";
return GL_RGB8;
}
}
#if defined(ANGLE_ENABLE_VULKAN)
std::vector<int> VkFormatToDrmFourCCFormat(VkFormat format)
{
switch (format)
{
case VK_FORMAT_R8_UNORM:
case VK_FORMAT_R8_SRGB:
return {DRM_FORMAT_R8};
case VK_FORMAT_R16_UNORM:
return {DRM_FORMAT_R16};
case VK_FORMAT_R8G8_UNORM:
case VK_FORMAT_R8G8_SRGB:
return {DRM_FORMAT_GR88};
case VK_FORMAT_R8G8B8_UNORM:
case VK_FORMAT_R8G8B8_SRGB:
return {DRM_FORMAT_BGR888};
case VK_FORMAT_B8G8R8_UNORM:
case VK_FORMAT_B8G8R8_SRGB:
return {DRM_FORMAT_RGB888};
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
return {DRM_FORMAT_ABGR8888, DRM_FORMAT_XBGR8888};
case VK_FORMAT_B8G8R8A8_UNORM:
case VK_FORMAT_B8G8R8A8_SRGB:
return {DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB8888};
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
return {DRM_FORMAT_ARGB2101010};
case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
return {DRM_FORMAT_ABGR2101010};
case VK_FORMAT_B5G6R5_UNORM_PACK16:
return {DRM_FORMAT_RGB565};
default:
return {};
}
}
std::vector<VkFormat> DrmFourCCFormatToVkFormats(int fourccFormat)
{
switch (fourccFormat)
{
case DRM_FORMAT_R8:
return {VK_FORMAT_R8_SRGB, VK_FORMAT_R8_UNORM};
case DRM_FORMAT_R16:
return {VK_FORMAT_R16_UNORM};
case DRM_FORMAT_GR88:
return {VK_FORMAT_R8G8_SRGB, VK_FORMAT_R8G8_UNORM};
case DRM_FORMAT_BGR888:
return {VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_R8G8B8_UNORM};
case DRM_FORMAT_RGB888:
return {VK_FORMAT_B8G8R8_SRGB, VK_FORMAT_B8G8R8_UNORM};
case DRM_FORMAT_ABGR8888:
case DRM_FORMAT_XBGR8888:
return {VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_R8G8B8A8_UNORM};
case DRM_FORMAT_ARGB8888:
case DRM_FORMAT_XRGB8888:
return {VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM};
case DRM_FORMAT_ABGR2101010:
return {VK_FORMAT_A2R10G10B10_UNORM_PACK32};
case DRM_FORMAT_ARGB2101010:
return {VK_FORMAT_A2B10G10R10_UNORM_PACK32};
case DRM_FORMAT_RGB565:
return {VK_FORMAT_B5G6R5_UNORM_PACK16};
default:
WARN() << "Unknown dma_buf format " << fourccFormat
<< " used to initialize an EGL image.";
return {};
}
}
#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