mirror of
https://github.com/mitch030504/Wiicompiled_VR_Frame.git
synced 2026-10-06 03:00:14 +02:00
Incomplete primitives no longer emit indices: quads drop a one- or two-vertex tail and draw a three-vertex tail as a triangle, triangle lists ignore leftover vertices, and fans or strips under three vertices emit nothing. Draws with no complete primitive are skipped. Previously an incomplete quad indexed vertices that belonged to the next merged draw, or past the end of the buffer. Merging now stops before the 16-bit index offset would wrap, never folds triangles into a single-instance line or point draw, and breaks after GXInvalidateVtxCache or a vertex-format switch, so the next draw uploads fresh arrays and uses its own format's shader. From upstream patchzyy/Wiicompiled 6f14bde (#244, KartPad batch). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wg7mB8ogCWmp9GH19Uc82B
166 lines
7.0 KiB
CMake
166 lines
7.0 KiB
CMake
include(FetchContent)
|
|
include(GoogleTest)
|
|
|
|
# The parser test uses synthetic malformed inputs by default. Passing the
|
|
# user's Race/Common.szs additionally audits every required model and texture.
|
|
add_executable(cockpit_item_data_test cockpit_item_data_test.cpp)
|
|
target_compile_features(cockpit_item_data_test PRIVATE cxx_std_20)
|
|
add_test(NAME cockpit_item_data_test COMMAND cockpit_item_data_test)
|
|
|
|
option(AURORA_GPU_SMOKE_TESTS "Build opt-in tests requiring a desktop GPU" OFF)
|
|
if (AURORA_GPU_SMOKE_TESTS AND AURORA_ENABLE_GX AND WIN32)
|
|
# Exercises the custom Dawn DLL's Aurora Vulkan ABI (patches/dawn). Run it with that
|
|
# webgpu_dawn.dll beside the executable; the stock prebuilt Dawn lacks the exports and the
|
|
# test reports that at startup. Vulkan headers come from the SDK or any tree on
|
|
# AURORA_TEST_VULKAN_INCLUDE (the runtime's FetchContent copy works).
|
|
find_path(AURORA_TEST_VULKAN_INCLUDE vulkan/vulkan.h HINTS "$ENV{VULKAN_SDK}/Include")
|
|
if (AURORA_TEST_VULKAN_INCLUDE)
|
|
add_executable(vulkan_native_bridge_smoke vulkan_native_bridge_smoke.cpp)
|
|
target_include_directories(vulkan_native_bridge_smoke PRIVATE ../include "${AURORA_TEST_VULKAN_INCLUDE}")
|
|
target_link_libraries(vulkan_native_bridge_smoke PRIVATE dawn::webgpu_dawn dawn::dawncpp_headers)
|
|
else ()
|
|
message(STATUS "vulkan_native_bridge_smoke skipped: no vulkan/vulkan.h (set VULKAN_SDK or AURORA_TEST_VULKAN_INCLUDE)")
|
|
endif ()
|
|
add_executable(stereo_frame_worker_smoke stereo_frame_worker_smoke.cpp)
|
|
target_include_directories(stereo_frame_worker_smoke PRIVATE ../lib)
|
|
target_link_libraries(stereo_frame_worker_smoke PRIVATE aurora::core aurora::gx aurora::main aurora::vi
|
|
dawn::dawncpp_headers)
|
|
add_executable(stereo_multiplayer_smoke stereo_multiplayer_smoke.cpp)
|
|
target_include_directories(stereo_multiplayer_smoke PRIVATE ../lib)
|
|
target_link_libraries(stereo_multiplayer_smoke PRIVATE aurora::core aurora::gx aurora::main aurora::vi
|
|
dawn::dawncpp_headers)
|
|
add_executable(efb_ram_lifetime_smoke efb_ram_lifetime_smoke.cpp)
|
|
target_include_directories(efb_ram_lifetime_smoke PRIVATE ../lib)
|
|
target_link_libraries(efb_ram_lifetime_smoke PRIVATE aurora::core aurora::gx aurora::main aurora::vi
|
|
dawn::dawncpp_headers)
|
|
# VR cockpit overlay (hands, synthetic wheel) against real scene depth. Standalone: it
|
|
# defines the GPU globals itself and needs only the header.
|
|
add_executable(cockpit_gpu_smoke cockpit_gpu_smoke.cpp ../lib/gfx/texture_convert.cpp)
|
|
target_include_directories(cockpit_gpu_smoke PRIVATE ../include ../lib)
|
|
target_compile_definitions(cockpit_gpu_smoke PRIVATE AURORA TARGET_PC WEBGPU_DAWN)
|
|
target_link_libraries(cockpit_gpu_smoke PRIVATE fmt::fmt xxhash absl::flat_hash_map absl::btree
|
|
dawn::webgpu_dawn dawn::dawncpp_headers TracyClient ${AURORA_SDL3_TARGET})
|
|
# The immersive window's mask over a filled eye, read back. Standalone like the cockpit's.
|
|
add_executable(window_mask_gpu_smoke window_mask_gpu_smoke.cpp)
|
|
target_include_directories(window_mask_gpu_smoke PRIVATE ../include ../lib)
|
|
target_compile_definitions(window_mask_gpu_smoke PRIVATE AURORA TARGET_PC WEBGPU_DAWN)
|
|
target_link_libraries(window_mask_gpu_smoke PRIVATE fmt::fmt xxhash absl::flat_hash_map absl::btree
|
|
dawn::webgpu_dawn dawn::dawncpp_headers TracyClient ${AURORA_SDL3_TARGET})
|
|
endif ()
|
|
|
|
if (NOT TARGET gtest)
|
|
FetchContent_Declare(googletest
|
|
URL https://github.com/google/googletest/archive/refs/tags/v1.17.0.tar.gz
|
|
URL_HASH SHA256=65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c
|
|
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
|
|
EXCLUDE_FROM_ALL
|
|
)
|
|
FetchContent_MakeAvailable(googletest)
|
|
endif ()
|
|
|
|
if (AURORA_ENABLE_GX)
|
|
# GX FIFO round-trip tests
|
|
# Compile GX sources directly to avoid pulling in the full renderer/WebGPU runtime
|
|
add_executable(gx_fifo_tests
|
|
gx_fifo_test.cpp
|
|
gx_test_stubs.cpp
|
|
renderer_regression_test.cpp
|
|
stereo_replay_test.cpp
|
|
stereo_interpolation_test.cpp
|
|
stereo_mirror_test.cpp
|
|
eye_pass_plan_test.cpp
|
|
foveation_test.cpp
|
|
native_wheel_test.cpp
|
|
model_visibility_test.cpp
|
|
cockpit_geometry_test.cpp
|
|
texture_bind_group_cache_key_test.cpp
|
|
../lib/gfx/efb_ram_encoder.cpp
|
|
# GX API implementations (encoders)
|
|
../lib/dolphin/gx/GXBump.cpp
|
|
../lib/dolphin/gx/GXCull.cpp
|
|
../lib/dolphin/gx/GXCpu2Efb.cpp
|
|
../lib/dolphin/gx/GXDispList.cpp
|
|
../lib/dolphin/gx/GXDraw.cpp
|
|
../lib/dolphin/gx/GXExtra.cpp
|
|
../lib/dolphin/gx/GXFifo.cpp
|
|
../lib/dolphin/gx/GXFrameBuffer.cpp
|
|
../lib/dolphin/gx/GXGeometry.cpp
|
|
../lib/dolphin/gx/GXGet.cpp
|
|
../lib/dolphin/gx/GXLighting.cpp
|
|
../lib/dolphin/gx/GXManage.cpp
|
|
../lib/dolphin/gx/GXAurora.cpp
|
|
../lib/dolphin/gx/GXPixel.cpp
|
|
../lib/dolphin/gx/GXTev.cpp
|
|
../lib/dolphin/gx/GXTexture.cpp
|
|
../lib/dolphin/gx/GXTransform.cpp
|
|
../lib/dolphin/gx/GXVert.cpp
|
|
# FIFO/command processor (encoder + decoder)
|
|
../lib/gx/fifo.cpp
|
|
../lib/gx/command_processor.cpp
|
|
../lib/gx/shader_info.cpp
|
|
../lib/gx/frame_interpolation.cpp
|
|
)
|
|
|
|
target_include_directories(gx_fifo_tests PRIVATE
|
|
../include
|
|
../lib
|
|
../lib/dolphin/gx
|
|
)
|
|
|
|
target_compile_definitions(gx_fifo_tests PRIVATE AURORA TARGET_PC)
|
|
|
|
target_link_libraries(gx_fifo_tests PRIVATE
|
|
gtest
|
|
gtest_main
|
|
fmt::fmt
|
|
xxhash
|
|
absl::flat_hash_map
|
|
absl::btree
|
|
dawn::dawncpp_headers
|
|
TracyClient
|
|
${AURORA_SDL3_TARGET}
|
|
)
|
|
|
|
gtest_discover_tests(gx_fifo_tests)
|
|
|
|
# The Dawn blob cache's background writer, against a real SQLite database in a temp folder.
|
|
if (TARGET sqlite3)
|
|
add_executable(gpu_cache_tests gpu_cache_test.cpp ../lib/webgpu/gpu_cache.cpp)
|
|
target_include_directories(gpu_cache_tests PRIVATE ../include ../lib)
|
|
target_compile_definitions(gpu_cache_tests PRIVATE AURORA TARGET_PC)
|
|
target_link_libraries(gpu_cache_tests PRIVATE gtest gtest_main fmt::fmt xxhash sqlite3 dawn::dawncpp_headers
|
|
TracyClient ${AURORA_SDL3_TARGET})
|
|
if (AURORA_CACHE_USE_ZSTD)
|
|
target_compile_definitions(gpu_cache_tests PRIVATE AURORA_CACHE_USE_ZSTD)
|
|
target_link_libraries(gpu_cache_tests PRIVATE libzstd_static)
|
|
endif ()
|
|
gtest_discover_tests(gpu_cache_tests)
|
|
endif ()
|
|
endif () # AURORA_ENABLE_GX
|
|
|
|
# DVD API tests
|
|
if (TARGET aurora::dvd)
|
|
add_executable(dvd_tests test_dvd.cpp)
|
|
target_link_libraries(dvd_tests PRIVATE aurora::dvd gtest gtest_main)
|
|
|
|
# Pass disc image path as a compile definition if provided
|
|
if (DEFINED DVD_TEST_IMAGE AND EXISTS "${DVD_TEST_IMAGE}")
|
|
target_compile_definitions(dvd_tests PRIVATE DVD_TEST_IMAGE="${DVD_TEST_IMAGE}")
|
|
endif ()
|
|
|
|
gtest_discover_tests(dvd_tests)
|
|
endif ()
|
|
|
|
add_executable(os_alloc_tests
|
|
os_alloc_test.cpp
|
|
os_test_globals.cpp
|
|
../lib/dolphin/os/OSAlloc.cpp
|
|
../lib/logging.cpp
|
|
)
|
|
target_include_directories(os_alloc_tests PRIVATE
|
|
../include
|
|
)
|
|
target_compile_definitions(os_alloc_tests PRIVATE AURORA TARGET_PC)
|
|
target_link_libraries(os_alloc_tests PRIVATE gtest gtest_main fmt::fmt)
|
|
gtest_discover_tests(os_alloc_tests)
|