Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Unified Diff: gpu/vulkan/vulkan_surface.cc

Issue 1963983002: Support vulkan surface formats for Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/vulkan/vulkan_surface.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/vulkan/vulkan_surface.cc
diff --git a/gpu/vulkan/vulkan_surface.cc b/gpu/vulkan/vulkan_surface.cc
index 63e01c36c32c42dfbb2c86453760d6214846d9b5..6c07d31af807a6b02dd207d84a593a0aa22d08cf 100644
--- a/gpu/vulkan/vulkan_surface.cc
+++ b/gpu/vulkan/vulkan_surface.cc
@@ -22,9 +22,21 @@ namespace gpu {
namespace {
const VkFormat kNativeVkFormat[] = {
piman 2016/05/11 17:11:56 This is not used anymore, please remove.
sohanjg 2016/05/12 06:34:30 Done.
VK_FORMAT_B8G8R8A8_UNORM, // FORMAT_BGRA8888,
+ VK_FORMAT_R8G8B8A8_UNORM, // FORMAT_RGBA8888,
VK_FORMAT_R5G6B5_UNORM_PACK16, // FORMAT_RGB565,
};
-static_assert(arraysize(kNativeVkFormat) == VulkanSurface::NUM_SURFACE_FORMATS,
+
+const VkFormat kPreferredVkFormats32[] = {
+ VK_FORMAT_B8G8R8A8_UNORM, // FORMAT_BGRA8888,
+ VK_FORMAT_R8G8B8A8_UNORM, // FORMAT_RGBA8888,
+};
+
+const VkFormat kPreferredVkFormats16[] = {
+ VK_FORMAT_R5G6B5_UNORM_PACK16, // FORMAT_RGB565,
+};
+
+static_assert(arraysize(kNativeVkFormat) ==
+ VulkanSurface::NUM_SURFACE_FORMATS + 1,
"Array size for kNativeVkFormat must match surface formats.");
} // namespace
@@ -94,19 +106,30 @@ class VulkanWSISurface : public VulkanSurface {
return false;
}
- const VkFormat preferred_format = kNativeVkFormat[format];
+ const VkFormat* preferred_formats = (format == FORMAT_RGBA_32)
+ ? kPreferredVkFormats32
+ : kPreferredVkFormats16;
+
if (formats.size() == 1 && VK_FORMAT_UNDEFINED == formats[0].format) {
- surface_format_.format = preferred_format;
+ surface_format_.format = preferred_formats[0];
surface_format_.colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;
} else {
bool format_set = false;
for (VkSurfaceFormatKHR supported_format : formats) {
- if (supported_format.format == preferred_format) {
- surface_format_ = supported_format;
- surface_format_.colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;
- format_set = true;
- break;
+ uint counter = 0;
piman 2016/05/11 17:11:56 nit: uint->unsigned int
sohanjg 2016/05/12 06:34:30 Done.
+ uint size = (format == FORMAT_RGBA_32)
piman 2016/05/11 17:11:56 nit: uint->unsigned int. This can be hoisted out o
sohanjg 2016/05/12 06:34:30 Done.
+ ? arraysize(kPreferredVkFormats32)
+ : arraysize(kPreferredVkFormats16);
+ while (counter < size && format_set == false) {
+ if (supported_format.format == *(preferred_formats + counter)) {
piman 2016/05/11 17:11:56 nit: *(preferred_formats + counter) -> preferred_f
sohanjg 2016/05/12 06:34:30 Done.
+ surface_format_ = supported_format;
+ surface_format_.colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;
+ format_set = true;
+ }
+ counter++;
}
+ if (format_set)
+ break;
}
if (!format_set) {
DLOG(ERROR) << "Format not supported.";
« no previous file with comments | « gpu/vulkan/vulkan_surface.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698