Loading vulkan/api/vulkan.api +28 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,8 @@ define NULL_HANDLE 0 @extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 @extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" @extension("VK_EXT_HDR_METADATA_SPEC_VERSION") define VK_EXT_HDR_METADATA_SPEC_VERSION 1 @extension("VK_EXT_HDR_METADATA_EXTENSION_NAME") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" ///////////// Loading Loading @@ -3303,6 +3305,24 @@ class VkObjectTablePushConstantEntryNVX { VkShaderStageFlags stageFlags } @extension("VK_EXT_hdr_metadata") class VkXYColorEXT { f32 x f32 y } @extension("VK_EXT_hdr_metadata") class VkHdrMetadataEXT { VkXYColorEXT displayPrimaryRed VkXYColorEXT displayPrimaryGreen VkXYColorEXT displayPrimaryBlue VkXYColorEXT whitePoint f32 maxLuminance f32 minLuminance f32 maxContentLightLevel f32 maxFrameAverageLightLevel } //////////////// Loading Loading @@ -6147,6 +6167,14 @@ cmd VkResult vkGetSwapchainStatusKHR( return ? } @extension("VK_EXT_hdr_metadata") cmd void vkSetHdrMetadataEXT( VkDevice device, u32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { } //////////////// // Validation // Loading vulkan/include/vulkan/vulkan.h +34 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ extern "C" { #endif /* ** Copyright (c) 2015-2016 The Khronos Group Inc. ** Copyright (c) 2015-2017 The Khronos Group Inc. ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. Loading Loading @@ -4608,6 +4608,39 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkDeviceGeneratedCommandsLimitsNVX* pLimits); #endif #define VK_EXT_hdr_metadata 1 #define VK_EXT_HDR_METADATA_SPEC_VERSION 0 #define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" typedef struct VkXYColorEXT { float x; float y; } VkXYColorEXT; typedef struct VkHdrMetadataEXT { VkStructureType sType; const void* pNext; VkXYColorEXT displayPrimaryRed; VkXYColorEXT displayPrimaryGreen; VkXYColorEXT displayPrimaryBlue; VkXYColorEXT whitePoint; float maxLuminance; float minLuminance; float maxContentLightLevel; float maxFrameAverageLightLevel; } VkHdrMetadataEXT; typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); #endif #ifdef __cplusplus } #endif Loading vulkan/libvulkan/code-generator.tmpl +5 −3 Original line number Diff line number Diff line Loading @@ -682,11 +682,12 @@ bool InitDriverTable(VkDevice dev, PFN_vkGetDeviceProcAddr get_proc, {{define "driver.InterceptedExtensions"}} VK_ANDROID_native_buffer VK_EXT_debug_report VK_EXT_hdr_metadata VK_GOOGLE_display_timing VK_KHR_android_surface VK_KHR_incremental_present VK_KHR_surface VK_KHR_swapchain VK_GOOGLE_display_timing VK_KHR_shared_presentable_image {{end}} Loading Loading @@ -1127,8 +1128,9 @@ VK_KHR_shared_presentable_image {{/* ------------------------------------------------------------------------------ Reports whether an extension is implemented entirely by the loader, so drivers should not enumerate it. Reports whether an extension has functions exported by the loader. E.g. applications can directly link to an extension function. Currently only support WSI extensions this way. ------------------------------------------------------------------------------ */}} {{define "IsExtensionExported"}} Loading vulkan/libvulkan/driver.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -472,6 +472,9 @@ void CreateInfoWrapper::FilterExtension(const char* name) { hook_extensions_.set(ext_bit); // return now as these extensions do not require HAL support return; case ProcHook::EXT_hdr_metadata: hook_extensions_.set(ext_bit); break; case ProcHook::EXTENSION_UNKNOWN: // HAL's extensions break; Loading Loading @@ -737,12 +740,14 @@ VkResult EnumerateDeviceExtensionProperties( uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { const InstanceData& data = GetData(physicalDevice); static const std::array<VkExtensionProperties, 2> loader_extensions = {{ static const std::array<VkExtensionProperties, 3> loader_extensions = {{ // WSI extensions {VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME, VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION}, {VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME, VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION}, {VK_EXT_HDR_METADATA_EXTENSION_NAME, VK_EXT_HDR_METADATA_SPEC_VERSION}, }}; // enumerate our extensions first Loading vulkan/libvulkan/driver_gen.cpp +17 −1 Original line number Diff line number Diff line Loading @@ -102,6 +102,14 @@ VKAPI_ATTR VkResult checkedGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR } } VKAPI_ATTR void checkedSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { if (GetData(device).hook_extensions[ProcHook::EXT_hdr_metadata]) { SetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata); } else { Logger(device).Err(device, "VK_EXT_hdr_metadata not enabled. vkSetHdrMetadataEXT not executed."); } } // clang-format on const ProcHook g_proc_hooks[] = { Loading Loading @@ -330,6 +338,13 @@ const ProcHook g_proc_hooks[] = { nullptr, nullptr, }, { "vkSetHdrMetadataEXT", ProcHook::DEVICE, ProcHook::EXT_hdr_metadata, reinterpret_cast<PFN_vkVoidFunction>(SetHdrMetadataEXT), reinterpret_cast<PFN_vkVoidFunction>(checkedSetHdrMetadataEXT), }, // clang-format on }; Loading @@ -349,11 +364,12 @@ ProcHook::Extension GetProcHookExtension(const char* name) { // clang-format off if (strcmp(name, "VK_ANDROID_native_buffer") == 0) return ProcHook::ANDROID_native_buffer; if (strcmp(name, "VK_EXT_debug_report") == 0) return ProcHook::EXT_debug_report; if (strcmp(name, "VK_EXT_hdr_metadata") == 0) return ProcHook::EXT_hdr_metadata; if (strcmp(name, "VK_GOOGLE_display_timing") == 0) return ProcHook::GOOGLE_display_timing; if (strcmp(name, "VK_KHR_android_surface") == 0) return ProcHook::KHR_android_surface; if (strcmp(name, "VK_KHR_incremental_present") == 0) return ProcHook::KHR_incremental_present; if (strcmp(name, "VK_KHR_surface") == 0) return ProcHook::KHR_surface; if (strcmp(name, "VK_KHR_swapchain") == 0) return ProcHook::KHR_swapchain; if (strcmp(name, "VK_GOOGLE_display_timing") == 0) return ProcHook::GOOGLE_display_timing; if (strcmp(name, "VK_KHR_shared_presentable_image") == 0) return ProcHook::KHR_shared_presentable_image; // clang-format on return ProcHook::EXTENSION_UNKNOWN; Loading Loading
vulkan/api/vulkan.api +28 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,8 @@ define NULL_HANDLE 0 @extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 @extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" @extension("VK_EXT_HDR_METADATA_SPEC_VERSION") define VK_EXT_HDR_METADATA_SPEC_VERSION 1 @extension("VK_EXT_HDR_METADATA_EXTENSION_NAME") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" ///////////// Loading Loading @@ -3303,6 +3305,24 @@ class VkObjectTablePushConstantEntryNVX { VkShaderStageFlags stageFlags } @extension("VK_EXT_hdr_metadata") class VkXYColorEXT { f32 x f32 y } @extension("VK_EXT_hdr_metadata") class VkHdrMetadataEXT { VkXYColorEXT displayPrimaryRed VkXYColorEXT displayPrimaryGreen VkXYColorEXT displayPrimaryBlue VkXYColorEXT whitePoint f32 maxLuminance f32 minLuminance f32 maxContentLightLevel f32 maxFrameAverageLightLevel } //////////////// Loading Loading @@ -6147,6 +6167,14 @@ cmd VkResult vkGetSwapchainStatusKHR( return ? } @extension("VK_EXT_hdr_metadata") cmd void vkSetHdrMetadataEXT( VkDevice device, u32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { } //////////////// // Validation // Loading
vulkan/include/vulkan/vulkan.h +34 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ extern "C" { #endif /* ** Copyright (c) 2015-2016 The Khronos Group Inc. ** Copyright (c) 2015-2017 The Khronos Group Inc. ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. Loading Loading @@ -4608,6 +4608,39 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkDeviceGeneratedCommandsLimitsNVX* pLimits); #endif #define VK_EXT_hdr_metadata 1 #define VK_EXT_HDR_METADATA_SPEC_VERSION 0 #define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" typedef struct VkXYColorEXT { float x; float y; } VkXYColorEXT; typedef struct VkHdrMetadataEXT { VkStructureType sType; const void* pNext; VkXYColorEXT displayPrimaryRed; VkXYColorEXT displayPrimaryGreen; VkXYColorEXT displayPrimaryBlue; VkXYColorEXT whitePoint; float maxLuminance; float minLuminance; float maxContentLightLevel; float maxFrameAverageLightLevel; } VkHdrMetadataEXT; typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); #endif #ifdef __cplusplus } #endif Loading
vulkan/libvulkan/code-generator.tmpl +5 −3 Original line number Diff line number Diff line Loading @@ -682,11 +682,12 @@ bool InitDriverTable(VkDevice dev, PFN_vkGetDeviceProcAddr get_proc, {{define "driver.InterceptedExtensions"}} VK_ANDROID_native_buffer VK_EXT_debug_report VK_EXT_hdr_metadata VK_GOOGLE_display_timing VK_KHR_android_surface VK_KHR_incremental_present VK_KHR_surface VK_KHR_swapchain VK_GOOGLE_display_timing VK_KHR_shared_presentable_image {{end}} Loading Loading @@ -1127,8 +1128,9 @@ VK_KHR_shared_presentable_image {{/* ------------------------------------------------------------------------------ Reports whether an extension is implemented entirely by the loader, so drivers should not enumerate it. Reports whether an extension has functions exported by the loader. E.g. applications can directly link to an extension function. Currently only support WSI extensions this way. ------------------------------------------------------------------------------ */}} {{define "IsExtensionExported"}} Loading
vulkan/libvulkan/driver.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -472,6 +472,9 @@ void CreateInfoWrapper::FilterExtension(const char* name) { hook_extensions_.set(ext_bit); // return now as these extensions do not require HAL support return; case ProcHook::EXT_hdr_metadata: hook_extensions_.set(ext_bit); break; case ProcHook::EXTENSION_UNKNOWN: // HAL's extensions break; Loading Loading @@ -737,12 +740,14 @@ VkResult EnumerateDeviceExtensionProperties( uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { const InstanceData& data = GetData(physicalDevice); static const std::array<VkExtensionProperties, 2> loader_extensions = {{ static const std::array<VkExtensionProperties, 3> loader_extensions = {{ // WSI extensions {VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME, VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION}, {VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME, VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION}, {VK_EXT_HDR_METADATA_EXTENSION_NAME, VK_EXT_HDR_METADATA_SPEC_VERSION}, }}; // enumerate our extensions first Loading
vulkan/libvulkan/driver_gen.cpp +17 −1 Original line number Diff line number Diff line Loading @@ -102,6 +102,14 @@ VKAPI_ATTR VkResult checkedGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR } } VKAPI_ATTR void checkedSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { if (GetData(device).hook_extensions[ProcHook::EXT_hdr_metadata]) { SetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata); } else { Logger(device).Err(device, "VK_EXT_hdr_metadata not enabled. vkSetHdrMetadataEXT not executed."); } } // clang-format on const ProcHook g_proc_hooks[] = { Loading Loading @@ -330,6 +338,13 @@ const ProcHook g_proc_hooks[] = { nullptr, nullptr, }, { "vkSetHdrMetadataEXT", ProcHook::DEVICE, ProcHook::EXT_hdr_metadata, reinterpret_cast<PFN_vkVoidFunction>(SetHdrMetadataEXT), reinterpret_cast<PFN_vkVoidFunction>(checkedSetHdrMetadataEXT), }, // clang-format on }; Loading @@ -349,11 +364,12 @@ ProcHook::Extension GetProcHookExtension(const char* name) { // clang-format off if (strcmp(name, "VK_ANDROID_native_buffer") == 0) return ProcHook::ANDROID_native_buffer; if (strcmp(name, "VK_EXT_debug_report") == 0) return ProcHook::EXT_debug_report; if (strcmp(name, "VK_EXT_hdr_metadata") == 0) return ProcHook::EXT_hdr_metadata; if (strcmp(name, "VK_GOOGLE_display_timing") == 0) return ProcHook::GOOGLE_display_timing; if (strcmp(name, "VK_KHR_android_surface") == 0) return ProcHook::KHR_android_surface; if (strcmp(name, "VK_KHR_incremental_present") == 0) return ProcHook::KHR_incremental_present; if (strcmp(name, "VK_KHR_surface") == 0) return ProcHook::KHR_surface; if (strcmp(name, "VK_KHR_swapchain") == 0) return ProcHook::KHR_swapchain; if (strcmp(name, "VK_GOOGLE_display_timing") == 0) return ProcHook::GOOGLE_display_timing; if (strcmp(name, "VK_KHR_shared_presentable_image") == 0) return ProcHook::KHR_shared_presentable_image; // clang-format on return ProcHook::EXTENSION_UNKNOWN; Loading