mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-25 08:18:11 +02:00
All mature drivers report shader statistics in various places. GL drivers use util_debug for shader-db's report script. VK drivers use executable statistics feeding the report fossil script. Many drivers also have a magic env var to dump the stats to stdout/stderr in addition to these standard forms. Implementing any of these 3 reports requires doing brittle string processing in C (GL, stdout) or piles of boilerplate (VK). Additionally, the logic gets duplicated in every driver and duplicated between GL and VK. And to add insult to injury, the information is duplicated *again* in the report fossil script :'( This commit introduces a new 'shader statistic framework' that aims to unify statistics reporting across all drivers and across GL&VK. With the new approach, a common XML file defines all the statistics for the tree. The common code introduced here then autogenerates from that XML file an appropriate C header. The header contains a C struct for each ISA, and autogenerated print/report functions. Minimal driver integration is required: just filling out the stats struct and calling the appropriate functions. In this MR, 3 driver families are added as examples. Panfrost/PanVK and Asahi/Honeykrisp are added as "complete" examples. Neither Vulkan driver reported nontrivial executable statistics; with these changes, both report all the same statistics that the GL drivers report. Turnip is also added partially - it's not plumbed into ir3/gallium yet but just using the XML reduces boilerplate a ton for Vulkan statistics. [It is intended for this XML to be consumed also by shader-db's python scripts, but that's not done here.] Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Mel Henning <mhenning@darkrefraction.com> Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33814>
26 lines
628 B
Text
26 lines
628 B
Text
# Copyright 2025 Valve Corporation
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
|
|
|
|
start = element shaderdb { (isa | family)* }
|
|
|
|
family = element family {
|
|
attribute name { text },
|
|
isa+
|
|
}
|
|
|
|
isa = element isa {
|
|
attribute name { text },
|
|
element stat {
|
|
attribute name { text },
|
|
attribute display { text }?,
|
|
attribute count { xsd:integer }?,
|
|
attribute more { "better" | "worse" }?,
|
|
attribute hash { xsd:boolean }?,
|
|
[ a:defaultValue = "u32" ] attribute type
|
|
{ "u8" | "s8" | "u16" | "s16" | "u32" | "s32" | "float" | "bool" }?,
|
|
|
|
text
|
|
}+
|
|
}
|