mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 10:30:08 +01:00
pan/va: Implement the cycle model
Will feed into shader-db reporting, and maybe other things eventually. Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15223>
This commit is contained in:
parent
8a258a685c
commit
8bc268f2d5
2 changed files with 78 additions and 0 deletions
|
|
@ -49,6 +49,7 @@ libpanfrost_bifrost_files = files(
|
|||
'valhall/va_lower_isel.c',
|
||||
'valhall/va_optimize.c',
|
||||
'valhall/va_pack.c',
|
||||
'valhall/va_perf.c',
|
||||
'valhall/va_validate.c',
|
||||
)
|
||||
|
||||
|
|
|
|||
77
src/panfrost/bifrost/valhall/va_perf.c
Normal file
77
src/panfrost/bifrost/valhall/va_perf.c
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
|
||||
/*
|
||||
* Copyright (C) 2021 Collabora Ltd.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "va_compiler.h"
|
||||
#include "valhall.h"
|
||||
#include "bi_builder.h"
|
||||
|
||||
void
|
||||
va_count_instr_stats(bi_instr *I, struct va_stats *stats)
|
||||
{
|
||||
/* Adjusted for 64-bit arithmetic */
|
||||
unsigned words = bi_count_write_registers(I, 0);
|
||||
|
||||
switch (valhall_opcodes[I->op].unit) {
|
||||
/* Arithmetic is 2x slower for 64-bit than 32-bit */
|
||||
case VA_UNIT_FMA:
|
||||
stats->fma += words;
|
||||
return;
|
||||
|
||||
case VA_UNIT_CVT:
|
||||
stats->cvt += words;
|
||||
return;
|
||||
|
||||
case VA_UNIT_SFU:
|
||||
stats->sfu += words;
|
||||
return;
|
||||
|
||||
/* Varying is scaled by 16-bit components interpolated */
|
||||
case VA_UNIT_V:
|
||||
stats->v += (I->vecsize + 1) *
|
||||
(bi_is_regfmt_16(I->register_format) ? 1 : 2);
|
||||
return;
|
||||
|
||||
/* We just count load/store and texturing for now */
|
||||
case VA_UNIT_LS:
|
||||
stats->ls++;
|
||||
return;
|
||||
|
||||
case VA_UNIT_T:
|
||||
stats->t++;
|
||||
return;
|
||||
|
||||
/* Fused varying+texture loads 2 FP32 components of varying for texture
|
||||
* coordinates and then textures */
|
||||
case VA_UNIT_VT:
|
||||
stats->ls += (2 * 2);
|
||||
stats->t++;
|
||||
return;
|
||||
|
||||
/* Nothing to do here */
|
||||
case VA_UNIT_NONE:
|
||||
return;
|
||||
}
|
||||
|
||||
unreachable("Invalid unit");
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue