freedreno/perfcntrs: remove gallium dependencies
Prep work to move to a shared location. Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
This commit is contained in:
@@ -25,7 +25,9 @@
|
||||
* Rob Clark <robclark@freedesktop.org>
|
||||
*/
|
||||
|
||||
#include "freedreno_util.h"
|
||||
#include "util/u_half.h"
|
||||
#include "adreno_common.xml.h"
|
||||
#include "adreno_pm4.xml.h"
|
||||
#include "a2xx.xml.h"
|
||||
|
||||
#define REG(_x) REG_A2XX_ ## _x
|
||||
|
||||
@@ -27,7 +27,9 @@
|
||||
#ifndef FD5_PERFCNTR_H_
|
||||
#define FD5_PERFCNTR_H_
|
||||
|
||||
#include "fd5_format.h"
|
||||
#include "util/u_half.h"
|
||||
#include "adreno_common.xml.h"
|
||||
#include "a5xx.xml.h"
|
||||
|
||||
#define REG(_x) REG_A5XX_ ## _x
|
||||
#include "freedreno_perfcntr.h"
|
||||
|
||||
@@ -27,7 +27,9 @@
|
||||
#ifndef FD6_PERFCNTR_H_
|
||||
#define FD6_PERFCNTR_H_
|
||||
|
||||
#include "fd6_format.h"
|
||||
#include "util/u_half.h"
|
||||
#include "adreno_common.xml.h"
|
||||
#include "a6xx.xml.h"
|
||||
|
||||
#define REG(_x) REG_A6XX_ ## _x
|
||||
#include "freedreno_perfcntr.h"
|
||||
|
||||
@@ -48,6 +48,31 @@ struct fd_perfcntr_counter {
|
||||
unsigned clear;
|
||||
};
|
||||
|
||||
|
||||
enum fd_perfcntr_type {
|
||||
FD_PERFCNTR_TYPE_UINT64,
|
||||
FD_PERFCNTR_TYPE_UINT,
|
||||
FD_PERFCNTR_TYPE_FLOAT,
|
||||
FD_PERFCNTR_TYPE_PERCENTAGE,
|
||||
FD_PERFCNTR_TYPE_BYTES,
|
||||
FD_PERFCNTR_TYPE_MICROSECONDS,
|
||||
FD_PERFCNTR_TYPE_HZ,
|
||||
FD_PERFCNTR_TYPE_DBM,
|
||||
FD_PERFCNTR_TYPE_TEMPERATURE,
|
||||
FD_PERFCNTR_TYPE_VOLTS,
|
||||
FD_PERFCNTR_TYPE_AMPS,
|
||||
FD_PERFCNTR_TYPE_WATTS,
|
||||
};
|
||||
|
||||
/* Whether an average value per frame or a cumulative value should be
|
||||
* displayed.
|
||||
*/
|
||||
enum fd_perfcntr_result_type {
|
||||
FD_PERFCNTR_RESULT_TYPE_AVERAGE,
|
||||
FD_PERFCNTR_RESULT_TYPE_CUMULATIVE,
|
||||
};
|
||||
|
||||
|
||||
/* Describes a single countable: */
|
||||
struct fd_perfcntr_countable {
|
||||
const char *name;
|
||||
@@ -55,8 +80,8 @@ struct fd_perfcntr_countable {
|
||||
unsigned selector;
|
||||
|
||||
/* description of the countable: */
|
||||
enum pipe_driver_query_type query_type;
|
||||
enum pipe_driver_query_result_type result_type;
|
||||
enum fd_perfcntr_type query_type;
|
||||
enum fd_perfcntr_result_type result_type;
|
||||
};
|
||||
|
||||
/* Describes an entire counter group: */
|
||||
@@ -85,8 +110,8 @@ struct fd_perfcntr_group {
|
||||
#define COUNTABLE(_selector, _query_type, _result_type) { \
|
||||
.name = #_selector, \
|
||||
.selector = _selector, \
|
||||
.query_type = PIPE_DRIVER_QUERY_TYPE_ ## _query_type, \
|
||||
.result_type = PIPE_DRIVER_QUERY_RESULT_TYPE_ ## _result_type, \
|
||||
.query_type = FD_PERFCNTR_TYPE_ ## _query_type, \
|
||||
.result_type = FD_PERFCNTR_RESULT_TYPE_ ## _result_type, \
|
||||
}
|
||||
|
||||
#define GROUP(_name, _counters, _countables) { \
|
||||
|
||||
@@ -192,6 +192,41 @@ fd_set_active_query_state(struct pipe_context *pipe, bool enable)
|
||||
{
|
||||
}
|
||||
|
||||
static enum pipe_driver_query_type
|
||||
query_type(enum fd_perfcntr_type type)
|
||||
{
|
||||
#define ENUM(t) case FD_PERFCNTR_ ## t: return PIPE_DRIVER_QUERY_ ## t
|
||||
switch (type) {
|
||||
ENUM(TYPE_UINT64);
|
||||
ENUM(TYPE_UINT);
|
||||
ENUM(TYPE_FLOAT);
|
||||
ENUM(TYPE_PERCENTAGE);
|
||||
ENUM(TYPE_BYTES);
|
||||
ENUM(TYPE_MICROSECONDS);
|
||||
ENUM(TYPE_HZ);
|
||||
ENUM(TYPE_DBM);
|
||||
ENUM(TYPE_TEMPERATURE);
|
||||
ENUM(TYPE_VOLTS);
|
||||
ENUM(TYPE_AMPS);
|
||||
ENUM(TYPE_WATTS);
|
||||
default:
|
||||
unreachable("bad type");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static enum pipe_driver_query_result_type
|
||||
query_result_type(enum fd_perfcntr_result_type type)
|
||||
{
|
||||
switch (type) {
|
||||
ENUM(RESULT_TYPE_AVERAGE);
|
||||
ENUM(RESULT_TYPE_CUMULATIVE);
|
||||
default:
|
||||
unreachable("bad type");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
setup_perfcntr_query_info(struct fd_screen *screen)
|
||||
{
|
||||
@@ -215,8 +250,8 @@ setup_perfcntr_query_info(struct fd_screen *screen)
|
||||
|
||||
info->name = c->name;
|
||||
info->query_type = FD_QUERY_FIRST_PERFCNTR + idx;
|
||||
info->type = c->query_type;
|
||||
info->result_type = c->result_type;
|
||||
info->type = query_type(c->query_type);
|
||||
info->result_type = query_result_type(c->result_type);
|
||||
info->group_id = i;
|
||||
info->flags = PIPE_DRIVER_QUERY_FLAG_BATCH;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user