1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-22 10:42:36 +01:00

vk/gl: Fix debug overlay stats

This commit is contained in:
kd-11 2023-07-03 21:29:01 +03:00 committed by kd-11
parent aa06ac119f
commit 69eb1401a9
3 changed files with 18 additions and 5 deletions

View File

@ -452,6 +452,7 @@ namespace rsx
atomic_t<u32> m_unavoidable_hard_faults_this_frame = { 0 }; atomic_t<u32> m_unavoidable_hard_faults_this_frame = { 0 };
atomic_t<u32> m_texture_upload_calls_this_frame = { 0 }; atomic_t<u32> m_texture_upload_calls_this_frame = { 0 };
atomic_t<u32> m_texture_upload_misses_this_frame = { 0 }; atomic_t<u32> m_texture_upload_misses_this_frame = { 0 };
atomic_t<u32> m_texture_copies_ellided_this_frame = { 0 };
static const u32 m_predict_max_flushes_per_frame = 50; // Above this number the predictions are disabled static const u32 m_predict_max_flushes_per_frame = 50; // Above this number the predictions are disabled
// Invalidation // Invalidation
@ -2327,6 +2328,10 @@ namespace rsx
// Deferred reconstruct // Deferred reconstruct
result.external_subresource_desc.cache_range = lookup_range; result.external_subresource_desc.cache_range = lookup_range;
} }
else if (result.texcoord_xform.clamp)
{
m_texture_copies_ellided_this_frame++;
}
if (!result.ref_address) if (!result.ref_address)
{ {
@ -3421,6 +3426,7 @@ namespace rsx
m_unavoidable_hard_faults_this_frame.store(0u); m_unavoidable_hard_faults_this_frame.store(0u);
m_texture_upload_calls_this_frame.store(0u); m_texture_upload_calls_this_frame.store(0u);
m_texture_upload_misses_this_frame.store(0u); m_texture_upload_misses_this_frame.store(0u);
m_texture_copies_ellided_this_frame.store(0u);
} }
void on_flush() void on_flush()
@ -3503,5 +3509,10 @@ namespace rsx
{ {
return (m_texture_upload_calls_this_frame)? (m_texture_upload_misses_this_frame * 100 / m_texture_upload_calls_this_frame) : 0; return (m_texture_upload_calls_this_frame)? (m_texture_upload_misses_this_frame * 100 / m_texture_upload_calls_this_frame) : 0;
} }
u32 get_texture_copies_ellided_this_frame() const
{
return m_texture_copies_ellided_this_frame;
}
}; };
} }

View File

@ -342,7 +342,7 @@ void GLGSRender::flip(const rsx::display_flip_info_t& info)
int y_loc = 0; int y_loc = 0;
const auto println = [&](const std::string& text) const auto println = [&](const std::string& text)
{ {
m_text_printer.print_text(cmd, 4, 0, width, height, text); m_text_printer.print_text(cmd, 4, y_loc, width, height, text);
y_loc += 16; y_loc += 16;
}; };
@ -364,17 +364,18 @@ void GLGSRender::flip(const rsx::display_flip_info_t& info)
const auto num_texture_upload = m_gl_texture_cache.get_texture_upload_calls_this_frame(); const auto num_texture_upload = m_gl_texture_cache.get_texture_upload_calls_this_frame();
const auto num_texture_upload_miss = m_gl_texture_cache.get_texture_upload_misses_this_frame(); const auto num_texture_upload_miss = m_gl_texture_cache.get_texture_upload_misses_this_frame();
const auto texture_upload_miss_ratio = m_gl_texture_cache.get_texture_upload_miss_percentage(); const auto texture_upload_miss_ratio = m_gl_texture_cache.get_texture_upload_miss_percentage();
const auto texture_copies_ellided = m_gl_texture_cache.get_texture_copies_ellided_this_frame();
println(fmt::format("Unreleased textures: %7d", num_dirty_textures)); println(fmt::format("Unreleased textures: %7d", num_dirty_textures));
println(fmt::format("Texture memory: %12dM", texture_memory_size)); println(fmt::format("Texture memory: %12dM", texture_memory_size));
println(fmt::format("Flush requests: %12d = %2d (%3d%%) hard faults, %2d unavoidable, %2d misprediction(s), %2d speculation(s)", num_flushes, num_misses, cache_miss_ratio, num_unavoidable, num_mispredict, num_speculate)); println(fmt::format("Flush requests: %12d = %2d (%3d%%) hard faults, %2d unavoidable, %2d misprediction(s), %2d speculation(s)", num_flushes, num_misses, cache_miss_ratio, num_unavoidable, num_mispredict, num_speculate));
println(fmt::format("Texture uploads: %15u (%u from CPU - %02u%%)", num_texture_upload, num_texture_upload_miss, texture_upload_miss_ratio)); println(fmt::format("Texture uploads: %11u (%u from CPU - %02u%%, %u copies avoided)", num_texture_upload, num_texture_upload_miss, texture_upload_miss_ratio, texture_copies_ellided));
const auto vertex_cache_hit_count = (info.stats.vertex_cache_request_count - info.stats.vertex_cache_miss_count); const auto vertex_cache_hit_count = (info.stats.vertex_cache_request_count - info.stats.vertex_cache_miss_count);
const auto vertex_cache_hit_ratio = info.stats.vertex_cache_request_count const auto vertex_cache_hit_ratio = info.stats.vertex_cache_request_count
? (vertex_cache_hit_count * 100) / info.stats.vertex_cache_request_count ? (vertex_cache_hit_count * 100) / info.stats.vertex_cache_request_count
: 0; : 0;
println(fmt::format("Vertex cache hits: %12u/%u (%u%%)", vertex_cache_hit_count, info.stats.vertex_cache_request_count, vertex_cache_hit_ratio)); println(fmt::format("Vertex cache hits: %9u/%u (%u%%)", vertex_cache_hit_count, info.stats.vertex_cache_request_count, vertex_cache_hit_ratio));
} }
if (gl::debug::g_vis_texture) if (gl::debug::g_vis_texture)

View File

@ -801,18 +801,19 @@ void VKGSRender::flip(const rsx::display_flip_info_t& info)
const auto num_texture_upload = m_texture_cache.get_texture_upload_calls_this_frame(); const auto num_texture_upload = m_texture_cache.get_texture_upload_calls_this_frame();
const auto num_texture_upload_miss = m_texture_cache.get_texture_upload_misses_this_frame(); const auto num_texture_upload_miss = m_texture_cache.get_texture_upload_misses_this_frame();
const auto texture_upload_miss_ratio = m_texture_cache.get_texture_upload_miss_percentage(); const auto texture_upload_miss_ratio = m_texture_cache.get_texture_upload_miss_percentage();
const auto texture_copies_ellided = m_texture_cache.get_texture_copies_ellided_this_frame();
println(fmt::format("Unreleased textures: %8d", num_dirty_textures)); println(fmt::format("Unreleased textures: %8d", num_dirty_textures));
println(fmt::format("Texture cache memory: %7dM", texture_memory_size)); println(fmt::format("Texture cache memory: %7dM", texture_memory_size));
println(fmt::format("Temporary texture memory: %3dM", tmp_texture_memory_size)); println(fmt::format("Temporary texture memory: %3dM", tmp_texture_memory_size));
println(fmt::format("Flush requests: %13d = %2d (%3d%%) hard faults, %2d unavoidable, %2d misprediction(s), %2d speculation(s)", num_flushes, num_misses, cache_miss_ratio, num_unavoidable, num_mispredict, num_speculate)); println(fmt::format("Flush requests: %13d = %2d (%3d%%) hard faults, %2d unavoidable, %2d misprediction(s), %2d speculation(s)", num_flushes, num_misses, cache_miss_ratio, num_unavoidable, num_mispredict, num_speculate));
println(fmt::format("Texture uploads: %14u (%u from CPU - %02u%%)", num_texture_upload, num_texture_upload_miss, texture_upload_miss_ratio)); println(fmt::format("Texture uploads: %12u (%u from CPU - %02u%%, %u copies avoided)", num_texture_upload, num_texture_upload_miss, texture_upload_miss_ratio, texture_copies_ellided));
const auto vertex_cache_hit_count = (info.stats.vertex_cache_request_count - info.stats.vertex_cache_miss_count); const auto vertex_cache_hit_count = (info.stats.vertex_cache_request_count - info.stats.vertex_cache_miss_count);
const auto vertex_cache_hit_ratio = info.stats.vertex_cache_request_count const auto vertex_cache_hit_ratio = info.stats.vertex_cache_request_count
? (vertex_cache_hit_count * 100) / info.stats.vertex_cache_request_count ? (vertex_cache_hit_count * 100) / info.stats.vertex_cache_request_count
: 0; : 0;
println(fmt::format("Vertex cache hits: %12u/%u (%u%%)", vertex_cache_hit_count, info.stats.vertex_cache_request_count, vertex_cache_hit_ratio)); println(fmt::format("Vertex cache hits: %10u/%u (%u%%)", vertex_cache_hit_count, info.stats.vertex_cache_request_count, vertex_cache_hit_ratio));
} }
direct_fbo->release(); direct_fbo->release();