Tests to verify xemu handling of various pushbuffer commands
Go to file
2022-02-14 14:47:12 -08:00
.github/workflows Adds nxdk as a submodule. (#40) 2022-01-10 19:12:28 -08:00
githooks Refactoring. 2021-11-10 08:59:28 -08:00
resources/image_blit Adds partially functional compositing buffer. 2021-11-29 13:08:49 -08:00
src Adds test of rounding behavior in vertex shader 2022-02-14 14:47:12 -08:00
third_party Adds test for volumetric palettized texture. 2022-01-27 22:07:47 -08:00
.clang-format Refactoring. 2021-11-10 08:59:28 -08:00
.gdbinit Import from https://github.com/Ernegien/nxdk/tree/test/texture-formats/samples/texture-formats 2021-11-09 22:37:44 -08:00
.gitignore Refactoring. 2021-11-10 08:59:28 -08:00
.gitmodules Adds nxdk as a submodule. (#40) 2022-01-10 19:12:28 -08:00
Makefile Adds test of rounding behavior in vertex shader 2022-02-14 14:47:12 -08:00
README.md Updates README w/ link to nv2a_to_pbkit tool. 2022-02-07 11:34:49 -08:00

nxdk_pgraph_tests

Various tests for nv2a rendering.

Based on code from https://github.com/Ernegien/nxdk/tree/test/texture-formats/samples/texture-formats

Golden test results from XBOX hardware are available here

Usage

Tests will be executed automatically if no gamepad input is given within an initial timeout.

Individual tests may be executed via the menu.

Controls

DPAD:

  • Up - Move the menu cursor up. Inside of a test, go to the previous test in the active suite.
  • Down - Move the menu cursor down. Inside of a test, go to the previous test in the active suite.
  • Left - Move the menu cursor up by half a page.
  • Right - Move the menu cursor down by half a page.
  • A - Enter a submenu or test. Inside of a test, re-run the test.
  • B - Go up one menu or leave a test. If pressed on the root menu, exit the application.
  • X - Run all tests for the current suite.
  • Y - Toggle saving of results and multi-frame rendering.
  • Start - Enter a submenu or test.
  • Back - Go up one menu or leave a test. If pressed on the root menu, exit the application.
  • Black - Exit the application.

Build prerequisites

This test suite requires some modifications to the pbkit used by the nxdk in order to operate.

To facilitate this, the nxdk is included as a submodule of this project, referencing the pbkit_extensions branch from https://github.com/abaire/nxdk.

This project should be cloned with the --recursive flag to pull the submodules and their submodules, after the fact this can be achieved via git submodule update --init --recursive.

For macOS, the patched nxdk currently assumes that the Homebrew llvm@11 package has been installed.

Adding new tests

Using nv2a log events from xemu

  1. Enable tracing of nv2a log events as normal (see xemu documentation) and exercise the event of interest within the game.
  2. Duplicate an existing test as a skeleton.
  3. Add the duplicated test to the Makefile and main.cpp (please preserve alphabetical ordering if possible).
  4. Use nv2a_to_pbkit to get a rough set of pbkit invocations duplicating the behavior from the log. Take the interesting portions of the converted output and put them into the body of the test. You may wish to utilize some of the helper methods from TestHost and similar classes rather than using the raw output to improve readability.

Running with CLion

Create a build target

  1. Create a new Embedded GDB Server target
  2. Set the Target to all
  3. Set the Executable to main.exe
  4. Set Download executable to None
  5. Set 'target remote' args to 127.0.0.1:1234
  6. Set GDB Server to the path to the xemu binary
  7. Set GDB Server args to -s -S (the -S is optional and will cause xemu to wait for the debugger to connnect)

To capture DbgPrint, additionally append -device lpc47m157 -serial tcp:127.0.0.1:9091 to GDB Server args and use something like pykdclient.

Deploying with xbdm_gdb_bridge

The Makefile contains a deploy target that will copy the finished binary to an XBOX running XBDM. This functionality requires the xbdm_gdb_bridge utility.