diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-30 05:30:24 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-11-01 11:29:33 -0500 |
| commit | e6538fbc977d3befa9f3f930d5d164cce09047af (patch) | |
| tree | 9b77b367153f52f339b9a4110317f3b1042a4fbf /src/video_core/renderer_vulkan/vk_rasterizer.cpp | |
| parent | 9243382264db82b0bf061e17ce52e70fdcc9ab6c (diff) | |
video_core: EDEN_NX2_NO_MESH_FILE toggles task/mesh draws at run time
Skip them while the given file exists (checked every 1024 draws), to time
the same scene with and without them in one run.
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 9a6feed622..91baee40e4 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -9,6 +9,7 @@ #include <memory> #include <cstdio> #include <cstdlib> +#include <filesystem> #include <tuple> #include <set> #include <fstream> @@ -282,7 +283,15 @@ void RasterizerVulkan::PrepareDraw(bool is_indexed, Func&& draw_func) { // Task/mesh pipelines: the draw's vertex count is the number of task workgroups. mesh_draw = pipeline->IsMeshPipeline(); // EDEN_NX2_NO_MESH=1: skip task/mesh draws as before they were supported (A/B comparisons). - static const bool no_mesh{std::getenv("EDEN_NX2_NO_MESH") != nullptr}; + // EDEN_NX2_NO_MESH_FILE=<path>: skip them while that file exists (checked every 1024 draws), + // to compare the same scene with and without them in one run. + static const bool no_mesh_always{std::getenv("EDEN_NX2_NO_MESH") != nullptr}; + static const char* const no_mesh_file{std::getenv("EDEN_NX2_NO_MESH_FILE")}; + static bool no_mesh{no_mesh_always}; + static u32 no_mesh_check{}; + if (no_mesh_file && (no_mesh_check++ % 1024) == 0) { + no_mesh = std::filesystem::exists(no_mesh_file); + } if (mesh_draw && (no_mesh || !device.IsExtMeshShaderSupported())) { report_failure(no_mesh ? "EDEN_NX2_NO_MESH" : "no VK_EXT_mesh_shader"); return; |
