From 403ab75aebb4df79f4aa2878a94849415510f0b8 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 7 Nov 2017 15:11:09 +0100 Subject: [PATCH] [dxbc] More sophisticated component mask/swizzle classes --- src/dxbc/dxbc_type.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/dxbc/dxbc_type.cpp diff --git a/src/dxbc/dxbc_type.cpp b/src/dxbc/dxbc_type.cpp new file mode 100644 index 00000000..81366b10 --- /dev/null +++ b/src/dxbc/dxbc_type.cpp @@ -0,0 +1,25 @@ +#include "dxbc_type.h" + +namespace dxvk { + + DxbcComponentSwizzle DxbcComponentSwizzle::extract(DxbcComponentMask mask) const { + DxbcComponentSwizzle result; + + uint32_t j = 0; + for (uint32_t i = 0; i < m_components.size(); i++) { + if (mask.test(i)) + result[j++] = m_components.at(i); + } + + return result; + } + + + DxbcComponentMask DxbcComponentSwizzle::mask(uint32_t n) const { + DxbcComponentMask mask; + for (uint32_t i = 0; i < n; i++) + mask.set(m_components.at(i)); + return mask; + } + +} \ No newline at end of file