From 0b61901424895a940bf1db1bf05a3b23cd8a19be Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 14 May 2019 21:21:14 +0200 Subject: [PATCH] [dxvk] Add method to swizzle clear color values --- src/dxvk/dxvk_util.cpp | 15 +++++++++++++++ src/dxvk/dxvk_util.h | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/src/dxvk/dxvk_util.cpp b/src/dxvk/dxvk_util.cpp index 726d7acc..a600f015 100644 --- a/src/dxvk/dxvk_util.cpp +++ b/src/dxvk/dxvk_util.cpp @@ -150,6 +150,21 @@ namespace dxvk::util { } + VkClearColorValue swizzleClearColor( + VkClearColorValue color, + VkComponentMapping mapping) { + VkClearColorValue result; + auto swizzles = &mapping.r; + + for (uint32_t i = 0; i < 4; i++) { + uint32_t index = getComponentIndex(swizzles[i], i); + result.uint32[i] = color.uint32[index]; + } + + return result; + } + + bool isBlendConstantBlendFactor(VkBlendFactor factor) { return factor == VK_BLEND_FACTOR_CONSTANT_COLOR || factor == VK_BLEND_FACTOR_CONSTANT_ALPHA diff --git a/src/dxvk/dxvk_util.h b/src/dxvk/dxvk_util.h index cfa6d509..cde2e8a9 100644 --- a/src/dxvk/dxvk_util.h +++ b/src/dxvk/dxvk_util.h @@ -223,6 +223,10 @@ namespace dxvk::util { VkComponentSwizzle component, uint32_t identity); + VkClearColorValue swizzleClearColor( + VkClearColorValue color, + VkComponentMapping mapping); + bool isBlendConstantBlendFactor( VkBlendFactor factor);