Path: blob/21.2-virgl/src/gallium/drivers/etnaviv/etnaviv_perfmon.h
4570 views
/*1* Copyright (c) 2017 Etnaviv Project2* Copyright (C) 2017 Zodiac Inflight Innovations3*4* Permission is hereby granted, free of charge, to any person obtaining a5* copy of this software and associated documentation files (the "Software"),6* to deal in the Software without restriction, including without limitation7* the rights to use, copy, modify, merge, publish, distribute, sub license,8* and/or sell copies of the Software, and to permit persons to whom the9* Software is furnished to do so, subject to the following conditions:10*11* The above copyright notice and this permission notice (including the12* next paragraph) shall be included in all copies or substantial portions13* of the Software.14*15* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR16* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,17* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL18* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER19* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING20* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER21* DEALINGS IN THE SOFTWARE.22*23* Authors:24* Rob Clark <[email protected]>25* Christian Gmeiner <[email protected]>26*/2728#ifndef H_ETNAVIV_PERFMON29#define H_ETNAVIV_PERFMON3031#include "etnaviv_query.h"32#include <pipe/p_screen.h>3334struct etna_screen;3536#define ETNA_QUERY_HI_GROUP_ID 137#define ETNA_QUERY_PE_GROUP_ID 238#define ETNA_QUERY_SH_GROUP_ID 339#define ETNA_QUERY_PA_GROUP_ID 440#define ETNA_QUERY_SE_GROUP_ID 541#define ETNA_QUERY_RA_GROUP_ID 642#define ETNA_QUERY_TX_GROUP_ID 743#define ETNA_QUERY_MC_GROUP_ID 84445#define ETNA_QUERY_HI_TOTAL_CYCLES (ETNA_PM_QUERY_BASE + 0)46#define ETNA_QUERY_HI_IDLE_CYCLES (ETNA_PM_QUERY_BASE + 1)47#define ETNA_QUERY_HI_AXI_CYCLES_READ_REQUEST_STALLED (ETNA_PM_QUERY_BASE + 2)48#define ETNA_QUERY_HI_AXI_CYCLES_WRITE_REQUEST_STALLED (ETNA_PM_QUERY_BASE + 3)49#define ETNA_QUERY_HI_AXI_CYCLES_WRITE_DATA_STALLED (ETNA_PM_QUERY_BASE + 4)5051#define ETNA_QUERY_PE_PIXEL_COUNT_KILLED_BY_COLOR_PIPE (ETNA_PM_QUERY_BASE + 5)52#define ETNA_QUERY_PE_PIXEL_COUNT_KILLED_BY_DEPTH_PIPE (ETNA_PM_QUERY_BASE + 6)53#define ETNA_QUERY_PE_PIXEL_COUNT_DRAWN_BY_COLOR_PIPE (ETNA_PM_QUERY_BASE + 7)54#define ETNA_QUERY_PE_PIXEL_COUNT_DRAWN_BY_DEPTH_PIPE (ETNA_PM_QUERY_BASE + 8)55#define ETNA_QUERY_PE_PIXELS_RENDERED_2D (ETNA_PM_QUERY_BASE + 9)5657#define ETNA_QUERY_SH_SHADER_CYCLES (ETNA_PM_QUERY_BASE + 10)58#define ETNA_QUERY_SH_PS_INST_COUNTER (ETNA_PM_QUERY_BASE + 11)59#define ETNA_QUERY_SH_RENDERED_PIXEL_COUNTER (ETNA_PM_QUERY_BASE + 12)60#define ETNA_QUERY_SH_VS_INST_COUNTER (ETNA_PM_QUERY_BASE + 13)61#define ETNA_QUERY_SH_RENDERED_VERTICE_COUNTER (ETNA_PM_QUERY_BASE + 14)62#define ETNA_QUERY_SH_VTX_BRANCH_INST_COUNTER (ETNA_PM_QUERY_BASE + 15)63#define ETNA_QUERY_SH_VTX_TEXLD_INST_COUNTER (ETNA_PM_QUERY_BASE + 16)64#define ETNA_QUERY_SH_PXL_BRANCH_INST_COUNTER (ETNA_PM_QUERY_BASE + 17)65#define ETNA_QUERY_SH_PXL_TEXLD_INST_COUNTER (ETNA_PM_QUERY_BASE + 18)6667#define ETNA_QUERY_PA_INPUT_VTX_COUNTER (ETNA_PM_QUERY_BASE + 19)68#define ETNA_QUERY_PA_INPUT_PRIM_COUNTER (ETNA_PM_QUERY_BASE + 20)69#define ETNA_QUERY_PA_OUTPUT_PRIM_COUNTER (ETNA_PM_QUERY_BASE + 21)70#define ETNA_QUERY_PA_DEPTH_CLIPPED_COUNTER (ETNA_PM_QUERY_BASE + 22)71#define ETNA_QUERY_PA_TRIVIAL_REJECTED_COUNTER (ETNA_PM_QUERY_BASE + 23)72#define ETNA_QUERY_PA_CULLED_COUNTER (ETNA_PM_QUERY_BASE + 24)7374#define ETNA_QUERY_SE_CULLED_TRIANGLE_COUNT (ETNA_PM_QUERY_BASE + 25)75#define ETNA_QUERY_SE_CULLED_LINES_COUNT (ETNA_PM_QUERY_BASE + 26)7677#define ETNA_QUERY_RA_VALID_PIXEL_COUNT (ETNA_PM_QUERY_BASE + 27)78#define ETNA_QUERY_RA_TOTAL_QUAD_COUNT (ETNA_PM_QUERY_BASE + 28)79#define ETNA_QUERY_RA_VALID_QUAD_COUNT_AFTER_EARLY_Z (ETNA_PM_QUERY_BASE + 29)80#define ETNA_QUERY_RA_TOTAL_PRIMITIVE_COUNT (ETNA_PM_QUERY_BASE + 30)81#define ETNA_QUERY_RA_PIPE_CACHE_MISS_COUNTER (ETNA_PM_QUERY_BASE + 31)82#define ETNA_QUERY_RA_PREFETCH_CACHE_MISS_COUNTER (ETNA_PM_QUERY_BASE + 32)83#define ETNA_QUERY_RA_CULLED_QUAD_COUNT (ETNA_PM_QUERY_BASE + 33)8485#define ETNA_QUERY_TX_TOTAL_BILINEAR_REQUESTS (ETNA_PM_QUERY_BASE + 34)86#define ETNA_QUERY_TX_TOTAL_TRILINEAR_REQUESTS (ETNA_PM_QUERY_BASE + 35)87#define ETNA_QUERY_TX_TOTAL_DISCARDED_TEXTURE_REQUESTS (ETNA_PM_QUERY_BASE + 36)88#define ETNA_QUERY_TX_TOTAL_TEXTURE_REQUESTS (ETNA_PM_QUERY_BASE + 37)89#define ETNA_QUERY_TX_MEM_READ_COUNT (ETNA_PM_QUERY_BASE + 38)90#define ETNA_QUERY_TX_MEM_READ_IN_8B_COUNT (ETNA_PM_QUERY_BASE + 39)91#define ETNA_QUERY_TX_CACHE_MISS_COUNT (ETNA_PM_QUERY_BASE + 40)92#define ETNA_QUERY_TX_CACHE_HIT_TEXEL_COUNT (ETNA_PM_QUERY_BASE + 41)93#define ETNA_QUERY_TX_CACHE_MISS_TEXEL_COUNT (ETNA_PM_QUERY_BASE + 42)9495#define ETNA_QUERY_MC_TOTAL_READ_REQ_8B_FROM_PIPELINE (ETNA_PM_QUERY_BASE + 43)96#define ETNA_QUERY_MC_TOTAL_READ_REQ_8B_FROM_IP (ETNA_PM_QUERY_BASE + 44)97#define ETNA_QUERY_MC_TOTAL_WRITE_REQ_8B_FROM_PIPELINE (ETNA_PM_QUERY_BASE + 45)9899struct etna_perfmon_source100{101const char *domain;102const char *signal;103};104105struct etna_perfmon_config106{107const char *name;108unsigned type;109unsigned group_id;110const struct etna_perfmon_source *source;111};112113struct etna_perfmon_signal *114etna_pm_query_signal(struct etna_perfmon *perfmon,115const struct etna_perfmon_source *source);116117static inline bool118etna_pm_cfg_supported(struct etna_perfmon *perfmon,119const struct etna_perfmon_config *cfg)120{121struct etna_perfmon_signal *signal = etna_pm_query_signal(perfmon, cfg->source);122123return !!signal;124}125126void127etna_pm_query_setup(struct etna_screen *screen);128129const struct etna_perfmon_config *130etna_pm_query_config(unsigned type);131132int133etna_pm_get_driver_query_info(struct pipe_screen *pscreen, unsigned index,134struct pipe_driver_query_info *info);135136int137etna_pm_get_driver_query_group_info(struct pipe_screen *pscreen,138unsigned index,139struct pipe_driver_query_group_info *info);140141#endif142143144