mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-07 13:39:55 +00:00
Merge pull request #5211 from veosett/codex/recorder-coverage
test(agc): register the full recorder run with CTest
This commit is contained in:
2 files changed
+21
-5
No files matched your search
@@ -1085,6 +1085,12 @@ if(BUILD_TESTING)
|
||||
set_tests_properties(agc_storage_cpu_snapshot PROPERTIES ENVIRONMENT "ANYPS5_NO_SHADER_CACHE=1" TIMEOUT 30 SKIP_RETURN_CODE 77
|
||||
ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<TARGET_FILE_DIR:libc>")
|
||||
endif()
|
||||
add_test(NAME agc_driver_recorder COMMAND agc_driver_recorder_tests)
|
||||
set_tests_properties(agc_driver_recorder PROPERTIES SKIP_RETURN_CODE 77 TIMEOUT 30)
|
||||
if(WIN32)
|
||||
set_tests_properties(agc_driver_recorder PROPERTIES ENVIRONMENT_MODIFICATION
|
||||
"PATH=path_list_prepend:$<TARGET_FILE_DIR:libc>")
|
||||
endif()
|
||||
add_test(NAME agc_descriptor_pool_recycling COMMAND agc_driver_recorder_tests --descriptor-pool-only)
|
||||
set_tests_properties(agc_descriptor_pool_recycling PROPERTIES SKIP_RETURN_CODE 77)
|
||||
add_test(NAME agc_draw_snapshot_cap COMMAND agc_driver_recorder_tests --draw-snapshot-cap-only)
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <chrono>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <filesystem>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <random>
|
||||
@@ -198,6 +199,12 @@ public:
|
||||
extensionsEnabled.push_back(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
|
||||
extensionsEnabled.push_back(VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME);
|
||||
context.dmaBufImport = true;
|
||||
#ifdef __linux__
|
||||
if (!std::filesystem::exists("/dev/udmabuf")) {
|
||||
context.dmaBufImport = false;
|
||||
std::cout << "No /dev/udmabuf: DMA-BUF imports are unavailable\n";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
VkPhysicalDeviceImageViewMinLodFeaturesEXT minLod{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT};
|
||||
if (hasExtension(VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME)) {
|
||||
@@ -1168,15 +1175,13 @@ void keyProofTests(const Device& device, Recorder& recorder) {
|
||||
before = KeyProofCounts();
|
||||
Require(before.scanned == after.scanned + 1 && proof.keys == DccKeys::Clear0001, "(9) the CPU write did not make a scan");
|
||||
Require(ProvedClearKeys(resource, surfaceBytes, proof) == DccKeys::Clear0001 && KeyProofCounts().proved == before.proved + 1, "(9) the new keys were not proved");
|
||||
// A recorded write over the keys (noted and stamped as the driver's key stores are): the scans
|
||||
// are not kept until its batch signaled.
|
||||
recorder.NotePendingWrite(address, keyCount);
|
||||
MarkWritten(address, keyCount);
|
||||
before = KeyProofCounts();
|
||||
Require(ProvedClearKeys(resource, surfaceBytes, proof) == DccKeys::Clear0001 && proof.generation == 0, "(9) a scan under a pending write was kept");
|
||||
Require(ProvedClearKeys(resource, surfaceBytes, proof) == DccKeys::Clear0001 && proof.generation == 0, "(9) a second scan under a pending write was kept");
|
||||
Require(ProvedClearKeys(resource, surfaceBytes, proof) == DccKeys::Clear0001 && proof.generation != 0, "(9) an unknown pending write was not synchronized before proving keys");
|
||||
Require(ProvedClearKeys(resource, surfaceBytes, proof) == DccKeys::Clear0001 && KeyProofCounts().proved == before.proved + 1, "(9) the synchronized proof did not hold");
|
||||
after = KeyProofCounts();
|
||||
Require(after.scanned == before.scanned + 2 && after.unstable == before.unstable + 2 && after.proved == before.proved, "(9) unstable scans were miscounted");
|
||||
Require(after.scanned == before.scanned + 1 && after.unstable == before.unstable && after.proved == before.proved + 1, "(9) a synchronized key scan was miscounted");
|
||||
recorder.Submit();
|
||||
device.WaitQueue();
|
||||
Require(ProvedClearKeys(resource, surfaceBytes, proof) == DccKeys::Clear0001 && proof.generation != 0, "(9) a signaled write kept the scan unstable");
|
||||
@@ -7359,6 +7364,11 @@ int main(int argc, char** argv) {
|
||||
std::cout << "host imports " << (PrepareImportWatch(device.GetContext()) == ImportWatch::Unwatch ? "are compared" : "stay watched") << '\n';
|
||||
Recorder recorder(device.GetContext());
|
||||
recorder.Activate();
|
||||
if (argc == 2 && std::string_view(argv[1]) == "--read-tracking-only") {
|
||||
readTrackingTests(device, recorder);
|
||||
std::cout << "Recorder read tracking tests passed\n";
|
||||
return 0;
|
||||
}
|
||||
if (argc == 2 && std::string_view(argv[1]) == "--copied-direct-only") {
|
||||
copiedDirectOrderingTests(device, recorder);
|
||||
return 0;
|
||||
|
||||
Reference in new issue
Block a user