forked from intel/intel-graphics-compiler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgtpin_IGC_interface.h
109 lines (90 loc) · 3.81 KB
/
gtpin_IGC_interface.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*========================== begin_copyright_notice ============================
Copyright (C) 2019-2021 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#pragma once
#ifndef _GPTIN_IGC_INTERFACE_
#define _GPTIN_IGC_INTERFACE_
namespace gtpin
{
namespace igc
{
/*!
* GTPin <-> IGC driver interface version
*/
static const uint32_t GTPIN_IGC_INTERFACE_VERSION = 0;
/*!
* Tokens for patches IGC can pass to GTPin
*/
typedef enum
{
GTPIN_IGC_TOKEN_GRF_INFO
//TBD - more tokens
} GTPIN_IGC_TOKEN;
/*
* IGC initialization data
*/
typedef struct igc_init_t
{
uint32_t version;
uint8_t re_ra; // active RERA - on/off
uint8_t grf_info; // active free GRF info - on/off
uint8_t srcline_mapping; // active source line mapping - on/off
} igc_init_t;
/*!
* General header for patch item passed from IGC to GTPin
* Visualization example of the patch item representing the free GRF information
* +---------------------+ igc_info_t +-----------------------+
* | |
* | igc_init_t init_status |
* | uint32_t num_tokens |
* | |
* | +----------------+ igc_token_header_t +------------------+
* | | |
* | | GTPIN_IGC_TOKEN token |
* | | uint32_t token_size |
* | | |
* | | +------------+ igc_token_free_reg_info_t +------------+
* | | | |
* | | | uint32_t magic_start |
* | | | uint32_t num_items |
* | | | reg_sequence_t free_reg_sequence[num_items] |
* | | | uint32_t magic_end |
* | | | |
* +----------------------------------------------------------+
*/
typedef struct igc_token_header_t
{
GTPIN_IGC_TOKEN token; // Token ID
uint32_t token_size; // Total size of the patch item. Equal to sizeof(token) + sizeof(token_size) + sizeof(*patch*)
} igc_token_header_t;
/*!
* A single sequence of consecutive bytes, all of which are unused in the current kernel.
*/
typedef struct reg_sequence_t
{
uint32_t start_byte; // Starting byte in the GRF table, representing the start of unused bytes in the current kernel
uint32_t num_consecutive_bytes; // Number of consecutive bytes in the sequence, starting from start_byte
} reg_sequence_t;
/*!
* Patch item detailing unused registers in the current kernel
*/
typedef struct igc_token_free_reg_info_t : igc_token_header_t
{
uint32_t magic_start; // Equal to 0xdeadd00d
uint32_t num_items; // Number of consecutive sequences of unused bytes
// reg_sequence_t free_reg_sequence[/* num_items */]; // Inlined array of num_items sequences detailing unused bytes
//uint32_t magic_end // Equal to 0xdeadbeef
} igc_token_free_reg_info_t;
/**
* IGC's additional information about the kernel's execution
*/
typedef struct igc_info_s
{
igc_init_t init_status; // IGC's report regarding the various requested features from GTPin
uint32_t num_tokens; // Number of patch items passed in the struct.
//igc_token_header_t token_list[]; // Contiguous block of memory containing the patch tokens
} igc_info_t;
} // namespace igc
} // namespace gtpin
#endif