Add HDR support to Vulkan
bug: 63710530
Test: adb -d shell am start -n \
com.drawelements.deqp/android.app.NativeActivity \
-e cmdLine '"deqp --deqp-case=dEQP-VK.wsi.android.colorspace.* \
--deqp-log-filename=/sdcard/dEQP-Log.qpa"'
Change-Id: Ia5a5349aed06d875965972a2d809738329196e5a
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp
index 26f60fb..97d7865 100644
--- a/vulkan/libvulkan/driver.cpp
+++ b/vulkan/libvulkan/driver.cpp
@@ -27,6 +27,8 @@
#include <log/log.h>
#include <android/dlext.h>
+#include <android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h>
+#include <configstore/Utils.h>
#include <cutils/properties.h>
#include <graphicsenv/GraphicsEnv.h>
#include <utils/Vector.h>
@@ -36,6 +38,9 @@
#include "driver.h"
#include "stubhal.h"
+using namespace android::hardware::configstore;
+using namespace android::hardware::configstore::V1_0;
+
// TODO(b/37049319) Get this from a header once one exists
extern "C" {
android_namespace_t* android_get_exported_namespace(const char*);
@@ -814,6 +819,14 @@
VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME,
VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION});
+ bool hdrBoardConfig =
+ getBool<ISurfaceFlingerConfigs, &ISurfaceFlingerConfigs::hasHDRDisplay>(
+ false);
+ if (hdrBoardConfig) {
+ loader_extensions.push_back({VK_EXT_HDR_METADATA_EXTENSION_NAME,
+ VK_EXT_HDR_METADATA_SPEC_VERSION});
+ }
+
VkPhysicalDevicePresentationPropertiesANDROID presentation_properties;
if (QueryPresentationProperties(physicalDevice, &presentation_properties) &&
presentation_properties.sharedImage) {