From e5418a956a80266c1bf0728ddd59b6bd863f6106 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Sun, 18 Dec 2022 17:44:59 +0000 Subject: [PATCH] [vulkan] Add setHdrMetadata method to Presenter --- src/d3d11/d3d11_swapchain.cpp | 1 + src/vulkan/vulkan_presenter.cpp | 6 ++++++ src/vulkan/vulkan_presenter.h | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/src/d3d11/d3d11_swapchain.cpp b/src/d3d11/d3d11_swapchain.cpp index 17669ec62..7c52bb776 100644 --- a/src/d3d11/d3d11_swapchain.cpp +++ b/src/d3d11/d3d11_swapchain.cpp @@ -446,6 +446,7 @@ namespace dxvk { presenterDevice.queue = graphicsQueue.queueHandle; presenterDevice.adapter = m_device->adapter()->handle(); presenterDevice.features.fullScreenExclusive = m_device->features().extFullScreenExclusive; + presenterDevice.features.hdrMetadata = m_device->features().extHdrMetadata; vk::PresenterDesc presenterDesc; presenterDesc.imageExtent = { m_desc.Width, m_desc.Height }; diff --git a/src/vulkan/vulkan_presenter.cpp b/src/vulkan/vulkan_presenter.cpp index 5bcebfaec..694f2dbb0 100644 --- a/src/vulkan/vulkan_presenter.cpp +++ b/src/vulkan/vulkan_presenter.cpp @@ -238,6 +238,12 @@ namespace dxvk::vk { } + void Presenter::setHdrMetadata(const VkHdrMetadataEXT& hdrMetadata) { + if (m_device.features.hdrMetadata) + m_vkd->vkSetHdrMetadataEXT(m_vkd->device(), 1, &m_swapchain, &hdrMetadata); + } + + VkResult Presenter::getSupportedFormats(std::vector& formats, VkFullScreenExclusiveEXT fullScreenExclusive) const { uint32_t numFormats = 0; diff --git a/src/vulkan/vulkan_presenter.h b/src/vulkan/vulkan_presenter.h index 0de46d44c..641956f90 100644 --- a/src/vulkan/vulkan_presenter.h +++ b/src/vulkan/vulkan_presenter.h @@ -49,6 +49,7 @@ namespace dxvk::vk { */ struct PresenterFeatures { bool fullScreenExclusive : 1; + bool hdrMetadata : 1; }; /** @@ -191,6 +192,13 @@ namespace dxvk::vk { */ bool supportsColorSpace(VkColorSpaceKHR colorspace); + /** + * \brief Sets HDR metadata + * + * \param [in] hdrMetadata HDR Metadata + */ + void setHdrMetadata(const VkHdrMetadataEXT& hdrMetadata); + private: Rc m_vki;