Files
AnyPS5/docs/dev/debt/libSceGnmDriverForNeoMode.md
T

2.8 KiB

libSceGnmDriverForNeoMode technical debt

Unknown function info

  • libSceGnmDriverForNeoMode pending exports - 48 named callable exports are listed in the PS5 3.20 export table and were cross-checked against the same module in PS5 firmware 13.60. Their signatures and behaviour are unverified; the declarations use the no-parameter unknown-signature convention and throw through NotImplemented_nid_no_patch.

Functional

  • retail-only answers (libSceGnmDriverForNeoMode) - the debug resets, the resource and owner registration calls, the SDMA calls and the SQ counter calls return 0x8EEE00FF, the five sceGnmDriverInternalRetrieveGnmInterface* calls return 0x80000000, sceGnmGetDbgGcHandle returns -1, sceGnmDriverTraceInProgress and sceGnmValidateOnSubmitEnabled return 0 and the other validation calls return 0x80D13FFF. These are the values shadPS4 returns for calls it marks as not available in retail firmware; they are not measured on a console, and the arguments are not read
  • default state packets (libSceGnmDriverForNeoMode) - sceGnmDrawInitDefaultHardwareState, sceGnmDrawInitDefaultHardwareState200, sceGnmDrawInitDefaultHardwareState350, sceGnmDrawInitToDefaultContextState and sceGnmDrawInitToDefaultContextState400 write the sequences in InitSequences.hpp, taken from shadPS4's gnmdriver_init.h: its Neo sequences, except the plain hardware state, which shadPS4 also writes unchanged in Neo mode. The size checks and returned sizes are shadPS4's. Not compared with console output, and nothing in AnyPS5 consumes a GNM command buffer yet
  • draw, dispatch, wait and VGT packets (libSceGnmDriverForNeoMode) - the signatures, size checks, PM4 words and refusals (-1) of the 17 command writers follow shadPS4 on its Neo-mode path, since this module is the Neo-mode driver: draw initiators keep flag bits 29 to 31, and sceGnmSetVgtControl and sceGnmResetVgtControl write IA_MULTI_VGT_PARAM through SET_UCONFIG_REG (shadPS4's UseNeoCompatSequences is false). The packets are not compared with console output, and nothing in AnyPS5 consumes a GNM command buffer yet