diff --git a/src/dxbc/dxbc_decoder.cpp b/src/dxbc/dxbc_decoder.cpp index de99958a9..73980b053 100644 --- a/src/dxbc/dxbc_decoder.cpp +++ b/src/dxbc/dxbc_decoder.cpp @@ -168,8 +168,9 @@ namespace dxvk { uint32_t numOpcodeTokens = 1; if (token.isExtended()) { - while (DxbcOpcodeTokenExt(m_op.getWord(numOpcodeTokens++)).isExtended()) - continue; + numOpcodeTokens += 1; + while (DxbcOpcodeTokenExt(m_op.getWord(numOpcodeTokens)).isExtended()) + numOpcodeTokens += 1; } m_args = m_op + numOpcodeTokens; diff --git a/src/dxbc/dxbc_decoder.h b/src/dxbc/dxbc_decoder.h index 3bafe3428..c77edc668 100644 --- a/src/dxbc/dxbc_decoder.h +++ b/src/dxbc/dxbc_decoder.h @@ -284,7 +284,8 @@ namespace dxvk { * \c DxbcComponentSelectionMode::Select1. */ DxbcComponentMask componentSelection() const { - return DxbcComponentMask(bit::extract(m_token, 4, 5)); + uint32_t id = bit::extract(m_token, 4, 5); + return DxbcComponentMask(id == 0, id == 1, id == 2, id == 3); } /**