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