From e6538fbc977d3befa9f3f930d5d164cce09047af Mon Sep 17 00:00:00 2001 From: Takoroka <137927095+Takoroka@users.noreply.github.com> Date: Fri, 30 Oct 2026 05:30:24 -0400 Subject: 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. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') 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 #include #include +#include #include #include #include @@ -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=: 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; -- cgit v1.2.3