[dxso] Don't assume 32 registers.

This commit is contained in:
Etaash Mathamsetty 2023-08-12 15:06:57 -04:00 committed by Joshie
parent 295a58afdf
commit 037669f715
2 changed files with 4 additions and 3 deletions

View File

@ -41,6 +41,7 @@ namespace dxvk {
m_usedSamplers = 0;
m_usedRTs = 0;
m_rRegs.reserve(DxsoMaxTempRegs);
for (uint32_t i = 0; i < m_rRegs.size(); i++)
m_rRegs.at(i) = DxsoRegisterPointer{ };
@ -1043,6 +1044,8 @@ namespace dxvk {
const DxsoBaseRegister* relative) {
switch (reg.id.type) {
case DxsoRegisterType::Temp: {
if (reg.id.num >= m_rRegs.size())
m_rRegs.resize( reg.id.num + 1, DxsoRegisterPointer { } );
DxsoRegisterPointer& ptr = m_rRegs.at(reg.id.num);
if (ptr.id == 0) {
std::string name = str::format("r", reg.id.num);

View File

@ -272,9 +272,7 @@ namespace dxvk {
////////////////////////////////////////////////
// Temporary r# vector registers with immediate
// indexing, and x# vector array registers.
std::array<
DxsoRegisterPointer,
DxsoMaxTempRegs> m_rRegs;
std::vector<DxsoRegisterPointer> m_rRegs;
////////////////////////////////////////////////
// Predicate registers