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);