mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2025-08-13 06:48:58 +00:00
Merge commit 'bb142c9657
' into torzu-merging
This commit is contained in:
commit
13447b72e9
7 changed files with 40 additions and 27 deletions
|
@ -13,7 +13,7 @@
|
||||||
#include "common/polyfill_ranges.h"
|
#include "common/polyfill_ranges.h"
|
||||||
|
|
||||||
namespace AudioCore {
|
namespace AudioCore {
|
||||||
constexpr u32 CurrentRevision = 12;
|
constexpr u32 CurrentRevision = 13;
|
||||||
|
|
||||||
enum class SupportTags {
|
enum class SupportTags {
|
||||||
CommandProcessingTimeEstimatorVersion4,
|
CommandProcessingTimeEstimatorVersion4,
|
||||||
|
|
|
@ -14,13 +14,22 @@ void ArmInterface::LogBacktrace(Kernel::KProcess* process) const {
|
||||||
this->GetContext(ctx);
|
this->GetContext(ctx);
|
||||||
|
|
||||||
LOG_ERROR(Core_ARM, "Backtrace, sp={:016X}, pc={:016X}", ctx.sp, ctx.pc);
|
LOG_ERROR(Core_ARM, "Backtrace, sp={:016X}, pc={:016X}", ctx.sp, ctx.pc);
|
||||||
LOG_ERROR(Core_ARM, "{:20}{:20}{:20}{:20}{}", "Module Name", "Address", "Original Address",
|
LOG_ERROR(Core_ARM, "{:20}{:20}{:20}{:20}{}", "Module Name", "Address", "Original Address", "Offset", "Symbol");
|
||||||
"Offset", "Symbol");
|
|
||||||
LOG_ERROR(Core_ARM, "");
|
LOG_ERROR(Core_ARM, "");
|
||||||
|
|
||||||
const auto backtrace = GetBacktraceFromContext(process, ctx);
|
const auto backtrace = GetBacktraceFromContext(process, ctx);
|
||||||
|
u64 last_address = 0;
|
||||||
|
|
||||||
for (const auto& entry : backtrace) {
|
for (const auto& entry : backtrace) {
|
||||||
|
|
||||||
|
// Skip duplicate consecutive addresses
|
||||||
|
if (entry.address == last_address)
|
||||||
|
continue;
|
||||||
|
|
||||||
LOG_ERROR(Core_ARM, "{:20}{:016X} {:016X} {:016X} {}", entry.module, entry.address,
|
LOG_ERROR(Core_ARM, "{:20}{:016X} {:016X} {:016X} {}", entry.module, entry.address,
|
||||||
entry.original_address, entry.offset, entry.name);
|
entry.original_address, entry.offset, entry.name);
|
||||||
|
|
||||||
|
last_address = entry.address;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,9 @@ namespace HLE::ApiVersion {
|
||||||
|
|
||||||
// Horizon OS version constants.
|
// Horizon OS version constants.
|
||||||
|
|
||||||
constexpr u8 HOS_VERSION_MAJOR = 12;
|
constexpr u8 HOS_VERSION_MAJOR = 19;
|
||||||
constexpr u8 HOS_VERSION_MINOR = 1;
|
constexpr u8 HOS_VERSION_MINOR = 0;
|
||||||
constexpr u8 HOS_VERSION_MICRO = 0;
|
constexpr u8 HOS_VERSION_MICRO = 1;
|
||||||
|
|
||||||
// NintendoSDK version constants.
|
// NintendoSDK version constants.
|
||||||
|
|
||||||
|
@ -21,14 +21,14 @@ constexpr u8 SDK_REVISION_MAJOR = 1;
|
||||||
constexpr u8 SDK_REVISION_MINOR = 0;
|
constexpr u8 SDK_REVISION_MINOR = 0;
|
||||||
|
|
||||||
constexpr char PLATFORM_STRING[] = "NX";
|
constexpr char PLATFORM_STRING[] = "NX";
|
||||||
constexpr char VERSION_HASH[] = "76b10c2dab7d3aa73fc162f8dff1655e6a21caf4";
|
constexpr char VERSION_HASH[] = "835c78223df116284ef7e36e8441760edc81729c";
|
||||||
constexpr char DISPLAY_VERSION[] = "12.1.0";
|
constexpr char DISPLAY_VERSION[] = "19.0.1";
|
||||||
constexpr char DISPLAY_TITLE[] = "NintendoSDK Firmware for NX 12.1.0-1.0";
|
constexpr char DISPLAY_TITLE[] = "NintendoSDK Firmware for NX 19.0.1-1.0";
|
||||||
|
|
||||||
// Atmosphere version constants.
|
// Atmosphere version constants.
|
||||||
|
|
||||||
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MAJOR = 1;
|
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MAJOR = 1;
|
||||||
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MINOR = 0;
|
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MINOR = 8;
|
||||||
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MICRO = 0;
|
constexpr u8 ATMOSPHERE_RELEASE_VERSION_MICRO = 0;
|
||||||
|
|
||||||
constexpr u32 AtmosphereTargetFirmwareWithRevision(u8 major, u8 minor, u8 micro, u8 rev) {
|
constexpr u32 AtmosphereTargetFirmwareWithRevision(u8 major, u8 minor, u8 micro, u8 rev) {
|
||||||
|
|
|
@ -185,16 +185,28 @@ enum class ErrorModule : u32 {
|
||||||
Fst2 = 251,
|
Fst2 = 251,
|
||||||
Nex = 306,
|
Nex = 306,
|
||||||
NPLN = 321,
|
NPLN = 321,
|
||||||
|
Libnx = 345,
|
||||||
|
HomebrewAbi = 346,
|
||||||
|
HomebrewLoader = 347,
|
||||||
|
LibnxNvidia = 348,
|
||||||
|
LibnxBinder = 349,
|
||||||
TSPM = 499,
|
TSPM = 499,
|
||||||
DevMenu = 500,
|
DevMenu = 500,
|
||||||
Nverpt = 520,
|
Nverpt = 520,
|
||||||
Am_StuckMonitor = 521,
|
Am_StuckMonitor = 521,
|
||||||
Pia = 618,
|
Pia = 618,
|
||||||
Eagle = 623,
|
Eagle = 623,
|
||||||
|
LibAppletWeb = 800,
|
||||||
|
LibAppletAuth = 809,
|
||||||
|
LibAppletLns = 810,
|
||||||
|
LibAppletShop = 811,
|
||||||
|
|
||||||
|
// NOTE(EmulationEnjoyer): Keeping old applet entry names in the case there's some lookup by name happening somewhere
|
||||||
GeneralWebApplet = 800,
|
GeneralWebApplet = 800,
|
||||||
WifiWebAuthApplet = 809,
|
WifiWebAuthApplet = 809,
|
||||||
WhitelistedApplet = 810,
|
WhitelistedApplet = 810,
|
||||||
ShopN = 811,
|
ShopN = 811,
|
||||||
|
|
||||||
Coral = 815
|
Coral = 815
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -548,10 +548,9 @@ Id EmitInvocationInfo(EmitContext& ctx) {
|
||||||
switch (ctx.stage) {
|
switch (ctx.stage) {
|
||||||
case Stage::TessellationControl:
|
case Stage::TessellationControl:
|
||||||
case Stage::TessellationEval:
|
case Stage::TessellationEval:
|
||||||
return ctx.OpShiftLeftLogical(ctx.U32[1], ctx.OpLoad(ctx.U32[1], ctx.patch_vertices_in),
|
return ctx.OpShiftLeftLogical(ctx.U32[1], ctx.OpLoad(ctx.U32[1], ctx.patch_vertices_in), ctx.Const(16u));
|
||||||
ctx.Const(16u));
|
|
||||||
case Stage::Geometry:
|
case Stage::Geometry:
|
||||||
return ctx.Const(InputTopologyVertices::vertices(ctx.runtime_info.input_topology) << 16);
|
return ctx.OpShiftLeftLogical(ctx.U32[1], ctx.Const(InputTopologyVertices::vertices(ctx.runtime_info.input_topology)), ctx.Const(16u));
|
||||||
default:
|
default:
|
||||||
LOG_WARNING(Shader, "(STUBBED) called");
|
LOG_WARNING(Shader, "(STUBBED) called");
|
||||||
return ctx.Const(0x00ff0000u);
|
return ctx.Const(0x00ff0000u);
|
||||||
|
|
|
@ -372,8 +372,8 @@ void CollectStorageBuffers(IR::Block& block, IR::Inst& inst, StorageInfo& info)
|
||||||
// avoid getting false positives
|
// avoid getting false positives
|
||||||
static constexpr Bias nvn_bias{
|
static constexpr Bias nvn_bias{
|
||||||
.index = 0,
|
.index = 0,
|
||||||
.offset_begin = 0x110,
|
.offset_begin = 0x100,
|
||||||
.offset_end = 0x610,
|
.offset_end = 0x700,
|
||||||
.alignment = 16,
|
.alignment = 16,
|
||||||
};
|
};
|
||||||
// Track the low address of the instruction
|
// Track the low address of the instruction
|
||||||
|
|
|
@ -76,13 +76,7 @@ bool DmaPusher::Step() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Push buffer non-empty, read a word
|
// Determine whether to use safe or unsafe processing
|
||||||
if (dma_state.method >= MacroRegistersStart) {
|
|
||||||
if (subchannels[dma_state.subchannel]) {
|
|
||||||
subchannels[dma_state.subchannel]->current_dirty = memory_manager.IsMemoryDirty(
|
|
||||||
dma_state.dma_get, command_list_header.size * sizeof(u32));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const auto safe_process = [&] {
|
const auto safe_process = [&] {
|
||||||
Tegra::Memory::GpuGuestMemory<Tegra::CommandHeader,
|
Tegra::Memory::GpuGuestMemory<Tegra::CommandHeader,
|
||||||
Tegra::Memory::GuestMemoryFlags::SafeRead>
|
Tegra::Memory::GuestMemoryFlags::SafeRead>
|
||||||
|
@ -90,6 +84,7 @@ bool DmaPusher::Step() {
|
||||||
&command_headers);
|
&command_headers);
|
||||||
ProcessCommands(headers);
|
ProcessCommands(headers);
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto unsafe_process = [&] {
|
const auto unsafe_process = [&] {
|
||||||
Tegra::Memory::GpuGuestMemory<Tegra::CommandHeader,
|
Tegra::Memory::GpuGuestMemory<Tegra::CommandHeader,
|
||||||
Tegra::Memory::GuestMemoryFlags::UnsafeRead>
|
Tegra::Memory::GuestMemoryFlags::UnsafeRead>
|
||||||
|
@ -97,14 +92,12 @@ bool DmaPusher::Step() {
|
||||||
&command_headers);
|
&command_headers);
|
||||||
ProcessCommands(headers);
|
ProcessCommands(headers);
|
||||||
};
|
};
|
||||||
if (Settings::IsGPULevelHigh()) {
|
|
||||||
if (dma_state.method >= MacroRegistersStart) {
|
if (Settings::IsGPULevelHigh() || (dma_state.method >= MacroRegistersStart)) {
|
||||||
unsafe_process();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
safe_process();
|
safe_process();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe_process();
|
unsafe_process();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue