mirror of
https://git.citron-emu.org/Citron/Citron.git
synced 2025-01-22 08:36:32 +01:00
arm/video: Fix shader extension and exception handling
Two main changes in this commit: 1. Replace NVIDIA-specific GL_NV_gpu_shader5 extension with the more widely supported GL_EXT_shader_explicit_arithmetic_types_float16 in the scaleforce shader. This improves compatibility across different GPU vendors. 2. Refactor ARM32 exception handling: - Restructure exception cases for better readability - Update exception handling to match current Dynarmic API - Fix indentation in switch statement - Remove AccessViolation case as it's no longer supported in current API These changes improve shader compatibility and align the exception handling with the current Dynarmic implementation.
This commit is contained in:
parent
450d80fc81
commit
d4d3061eb7
2 changed files with 18 additions and 20 deletions
|
@ -91,17 +91,15 @@ public:
|
|||
|
||||
void ExceptionRaised(u32 pc, Dynarmic::A32::Exception exception) override {
|
||||
switch (exception) {
|
||||
case Dynarmic::A32::Exception::UndefinedInstruction:
|
||||
LOG_CRITICAL(Core_ARM, "Undefined instruction at PC = 0x{:08X}", pc);
|
||||
m_parent.GetContext(m_parent.m_breakpoint_context);
|
||||
m_parent.m_jit->HaltExecution(DataAbort);
|
||||
break;
|
||||
case Dynarmic::A32::Exception::NoExecuteFault:
|
||||
LOG_CRITICAL(Core_ARM, "Cannot execute instruction at unmapped address {:#08x}", pc);
|
||||
ReturnException(pc, PrefetchAbort);
|
||||
return;
|
||||
case Dynarmic::A32::Exception::AccessViolation:
|
||||
if (pc == 0 || pc < 0x1000) {
|
||||
LOG_CRITICAL(Core_ARM, "Null pointer dereference at {:#08x}", pc);
|
||||
ReturnException(pc, DataAbort);
|
||||
return;
|
||||
}
|
||||
[[fallthrough]];
|
||||
default:
|
||||
if (m_debugger_enabled) {
|
||||
ReturnException(pc, InstructionBreakpoint);
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#ifdef CITRON_USE_FP16
|
||||
|
||||
#extension GL_AMD_gpu_shader_half_float : enable
|
||||
#extension GL_NV_gpu_shader5 : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
|
||||
|
||||
#define lfloat float16_t
|
||||
#define lvec2 f16vec2
|
||||
|
|
Loading…
Reference in a new issue