Path: blob/21.2-virgl/src/gallium/drivers/llvmpipe/lp_perf.c
4570 views
/**************************************************************************1*2* Copyright 2009 VMware, Inc.3* All Rights Reserved.4*5* Permission is hereby granted, free of charge, to any person obtaining a6* copy of this software and associated documentation files (the7* "Software"), to deal in the Software without restriction, including8* without limitation the rights to use, copy, modify, merge, publish,9* distribute, sub license, and/or sell copies of the Software, and to10* permit persons to whom the Software is furnished to do so, subject to11* the following conditions:12*13* The above copyright notice and this permission notice (including the14* next paragraph) shall be included in all copies or substantial portions15* of the Software.16*17* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS18* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.20* IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR21* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,22* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE23* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.24*25**************************************************************************/2627#include "util/u_debug.h"28#include "lp_debug.h"29#include "lp_perf.h"30313233struct lp_counters lp_count;343536void37lp_reset_counters(void)38{39memset(&lp_count, 0, sizeof(lp_count));40}414243void44lp_print_counters(void)45{46if (LP_DEBUG & DEBUG_COUNTERS) {47unsigned total_64, total_16, total_4;48float p1, p2, p3, p4, p5, p6;4950debug_printf("llvmpipe: nr_triangles: %9u\n", lp_count.nr_tris);51debug_printf("llvmpipe: nr_culled_triangles: %9u\n", lp_count.nr_culled_tris);5253total_64 = (lp_count.nr_empty_64 +54lp_count.nr_fully_covered_64 +55lp_count.nr_partially_covered_64);5657p1 = 100.0 * (float) lp_count.nr_empty_64 / (float) total_64;58p2 = 100.0 * (float) lp_count.nr_fully_covered_64 / (float) total_64;59p3 = 100.0 * (float) lp_count.nr_partially_covered_64 / (float) total_64;60p5 = 100.0 * (float) lp_count.nr_shade_opaque_64 / (float) total_64;61p6 = 100.0 * (float) lp_count.nr_shade_64 / (float) total_64;6263debug_printf("llvmpipe: nr_64x64: %9u\n", total_64);64debug_printf("llvmpipe: nr_fully_covered_64x64: %9u (%3.0f%% of %u)\n", lp_count.nr_fully_covered_64, p2, total_64);65debug_printf("llvmpipe: nr_shade_opaque_64x64: %9u (%3.0f%% of %u)\n", lp_count.nr_shade_opaque_64, p5, total_64);66debug_printf("llvmpipe: nr_pure_shade_opaque: %9u (%3.0f%% of %u)\n", lp_count.nr_pure_shade_opaque_64, 0.0, lp_count.nr_shade_opaque_64);67debug_printf("llvmpipe: nr_shade_64x64: %9u (%3.0f%% of %u)\n", lp_count.nr_shade_64, p6, total_64);68debug_printf("llvmpipe: nr_pure_shade: %9u (%3.0f%% of %u)\n", lp_count.nr_pure_shade_64, 0.0, lp_count.nr_shade_64);69debug_printf("llvmpipe: nr_partially_covered_64x64: %9u (%3.0f%% of %u)\n", lp_count.nr_partially_covered_64, p3, total_64);70debug_printf("llvmpipe: nr_empty_64x64: %9u (%3.0f%% of %u)\n", lp_count.nr_empty_64, p1, total_64);7172total_16 = (lp_count.nr_empty_16 +73lp_count.nr_fully_covered_16 +74lp_count.nr_partially_covered_16);7576p1 = 100.0 * (float) lp_count.nr_empty_16 / (float) total_16;77p2 = 100.0 * (float) lp_count.nr_fully_covered_16 / (float) total_16;78p3 = 100.0 * (float) lp_count.nr_partially_covered_16 / (float) total_16;7980debug_printf("llvmpipe: nr_16x16: %9u\n", total_16);81debug_printf("llvmpipe: nr_fully_covered_16x16: %9u (%3.0f%% of %u)\n", lp_count.nr_fully_covered_16, p2, total_16);82debug_printf("llvmpipe: nr_partially_covered_16x16: %9u (%3.0f%% of %u)\n", lp_count.nr_partially_covered_16, p3, total_16);83debug_printf("llvmpipe: nr_empty_16x16: %9u (%3.0f%% of %u)\n", lp_count.nr_empty_16, p1, total_16);8485total_4 = (lp_count.nr_empty_4 +86lp_count.nr_fully_covered_4 +87lp_count.nr_partially_covered_4);8889p1 = 100.0 * (float) lp_count.nr_empty_4 / (float) total_4;90p2 = 100.0 * (float) lp_count.nr_fully_covered_4 / (float) total_4;91p3 = 100.0 * (float) lp_count.nr_partially_covered_4 / (float) total_4;92p4 = 100.0 * (float) lp_count.nr_non_empty_4 / (float) total_4;9394debug_printf("llvmpipe: nr_tri_4x4: %9u\n", total_4);95debug_printf("llvmpipe: nr_fully_covered_4x4: %9u (%3.0f%% of %u)\n", lp_count.nr_fully_covered_4, p2, total_4);96debug_printf("llvmpipe: nr_partially_covered_4x4: %9u (%3.0f%% of %u)\n", lp_count.nr_partially_covered_4, p3, total_4);97debug_printf("llvmpipe: nr_empty_4x4: %9u (%3.0f%% of %u)\n", lp_count.nr_empty_4, p1, total_4);98debug_printf("llvmpipe: nr_non_empty_4x4: %9u (%3.0f%% of %u)\n", lp_count.nr_non_empty_4, p4, total_4);99100debug_printf("llvmpipe: nr_color_tile_clear: %9u\n", lp_count.nr_color_tile_clear);101debug_printf("llvmpipe: nr_color_tile_load: %9u\n", lp_count.nr_color_tile_load);102debug_printf("llvmpipe: nr_color_tile_store: %9u\n", lp_count.nr_color_tile_store);103104debug_printf("llvmpipe: nr_llvm_compiles: %u\n", lp_count.nr_llvm_compiles);105debug_printf("llvmpipe: total LLVM compile time: %.2f sec\n", lp_count.llvm_compile_time / 1000000.0);106debug_printf("llvmpipe: average LLVM compile time: %.2f sec\n", lp_count.llvm_compile_time / 1000000.0 / lp_count.nr_llvm_compiles);107108}109}110111112