1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-13 19:29:14 +01:00

[dxso] Count max constants after we pull out pre-defines

This commit is contained in:
Joshua Ashton 2020-01-26 17:17:22 +00:00
parent c77a9e3bfe
commit b4666ac044

View File

@ -857,8 +857,29 @@ namespace dxvk {
case DxsoRegisterType::Const:
result.type = { DxsoScalarType::Float32, 4 };
if (!relative) {
if (!relative)
result.id = m_cFloat.at(reg.id.num);
break;
case DxsoRegisterType::ConstInt:
result.type = { DxsoScalarType::Sint32, 4 };
result.id = m_cInt.at(reg.id.num);
break;
case DxsoRegisterType::ConstBool:
result.type = { DxsoScalarType::Bool, 1 };
result.id = m_cBool.at(reg.id.num);
break;
default: break;
}
if (result.id)
return result;
switch (reg.id.type) {
case DxsoRegisterType::Const:
if (!relative) {
m_meta.maxConstIndexF = std::max(m_meta.maxConstIndexF, reg.id.num + 1);
m_meta.maxConstIndexF = std::min(m_meta.maxConstIndexF, m_layout->floatCount);
} else {
@ -869,15 +890,11 @@ namespace dxvk {
break;
case DxsoRegisterType::ConstInt:
result.type = { DxsoScalarType::Sint32, 4 };
result.id = m_cInt.at(reg.id.num);
m_meta.maxConstIndexI = std::max(m_meta.maxConstIndexI, reg.id.num + 1);
m_meta.maxConstIndexI = std::min(m_meta.maxConstIndexI, m_layout->intCount);
break;
case DxsoRegisterType::ConstBool:
result.type = { DxsoScalarType::Bool, 1 };
result.id = m_cBool.at(reg.id.num);
m_meta.maxConstIndexB = std::max(m_meta.maxConstIndexB, reg.id.num + 1);
m_meta.maxConstIndexB = std::min(m_meta.maxConstIndexB, m_layout->boolCount);
break;
@ -885,9 +902,6 @@ namespace dxvk {
default: break;
}
if (result.id)
return result;
uint32_t relativeIdx = this->emitArrayIndex(reg.id.num, relative);
if (reg.id.type != DxsoRegisterType::ConstBool) {