|
|
|
@ -24,9 +24,6 @@ namespace Tegra {
|
|
|
|
|
|
|
|
|
|
enum class BufferMethods {
|
|
|
|
|
BindObject = 0,
|
|
|
|
|
SetGraphMacroCode = 0x45,
|
|
|
|
|
SetGraphMacroCodeArg = 0x46,
|
|
|
|
|
SetGraphMacroEntry = 0x47,
|
|
|
|
|
CountBufferMethods = 0x40,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -36,28 +33,6 @@ void GPU::WriteReg(u32 method, u32 subchannel, u32 value, u32 remaining_params)
|
|
|
|
|
"{:08X} remaining params {}",
|
|
|
|
|
method, subchannel, value, remaining_params);
|
|
|
|
|
|
|
|
|
|
if (method == static_cast<u32>(BufferMethods::SetGraphMacroEntry)) {
|
|
|
|
|
// Prepare to upload a new macro, reset the upload counter.
|
|
|
|
|
NGLOG_DEBUG(HW_GPU, "Uploading GPU macro {:08X}", value);
|
|
|
|
|
current_macro_entry = value;
|
|
|
|
|
current_macro_code.clear();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (method == static_cast<u32>(BufferMethods::SetGraphMacroCodeArg)) {
|
|
|
|
|
// Append a new code word to the current macro.
|
|
|
|
|
current_macro_code.push_back(value);
|
|
|
|
|
|
|
|
|
|
// There are no more params remaining, submit the code to the 3D engine.
|
|
|
|
|
if (remaining_params == 0) {
|
|
|
|
|
maxwell_3d->SubmitMacroCode(current_macro_entry, std::move(current_macro_code));
|
|
|
|
|
current_macro_entry = InvalidGraphMacroEntry;
|
|
|
|
|
current_macro_code.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (method == static_cast<u32>(BufferMethods::BindObject)) {
|
|
|
|
|
// Bind the current subchannel to the desired engine id.
|
|
|
|
|
NGLOG_DEBUG(HW_GPU, "Binding subchannel {} to engine {}", subchannel, value);
|
|
|
|
|