summaryrefslogtreecommitdiffstats
path: root/src/detection/gpu/intel_drm.h
blob: 3e25748225000d43bbb70d538b3fb949560f9669 (plain) (blame)
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#pragma once

/* SPDX-License-Identifier: MIT */
#include <drm.h>

// xe_drm.h

/*
 * Copyright © 2023 Intel Corporation
 */

#define DRM_XE_DEVICE_QUERY 0x00

#define DRM_IOCTL_XE_DEVICE_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_DEVICE_QUERY, struct drm_xe_device_query)

enum drm_xe_memory_class {
    DRM_XE_MEM_REGION_CLASS_SYSMEM = 0,
    DRM_XE_MEM_REGION_CLASS_VRAM
};

struct drm_xe_mem_region {
    __u16 mem_class;
    __u16 instance;
    __u32 min_page_size;
    __u64 total_size;
    __u64 used;
    __u64 cpu_visible_size;
    __u64 cpu_visible_used;
    __u64 reserved[6];
};

struct drm_xe_query_mem_regions {
    __u32 num_mem_regions;
    __u32 pad;
    struct drm_xe_mem_region mem_regions[];
};

struct drm_xe_query_topology_mask {
    __u16 gt_id;

#define DRM_XE_TOPO_DSS_GEOMETRY 1
#define DRM_XE_TOPO_DSS_COMPUTE 2
#define DRM_XE_TOPO_EU_PER_DSS 4
    __u16 type;
    __u32 num_bytes;
    __u8 mask[];
};

struct drm_xe_device_query {
    __u64 extensions;

#define DRM_XE_DEVICE_QUERY_MEM_REGIONS 1
#define DRM_XE_DEVICE_QUERY_GT_TOPOLOGY 5
    __u32 query;
    __u32 size;
    __u64 data;
    __u64 reserved[2];
};

// i915_drm.h

/*
 * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
 * All Rights Reserved.
 */

#define DRM_IOCTL_I915_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, drm_i915_getparam_t)

struct drm_i915_getparam {
    __s32 param;
    int* value;
};
typedef struct drm_i915_getparam drm_i915_getparam_t;

#define DRM_I915_GETPARAM 0x06
#define DRM_I915_QUERY 0x39
#define DRM_I915_QUERY_MEMORY_REGIONS 4
#define DRM_IOCTL_I915_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query)
#define I915_PARAM_EU_TOTAL 34

struct drm_i915_query_item {
    __u64 query_id;
#define DRM_I915_QUERY_MEMORY_REGIONS 4

    __s32 length;
    __u32 flags;
    __u64 data_ptr;
};

struct drm_i915_query {
    __u32 num_items;
    __u32 flags;
    __u64 items_ptr;
};

enum drm_i915_gem_memory_class {
    I915_MEMORY_CLASS_SYSTEM = 0,
    I915_MEMORY_CLASS_DEVICE,
};

struct drm_i915_gem_memory_class_instance {
    __u16 memory_class;
    __u16 memory_instance;
};

struct drm_i915_memory_region_info {
    struct drm_i915_gem_memory_class_instance region;
    __u32 rsvd0;
    __u64 probed_size;
    __u64 unallocated_size;

    union {
        __u64 rsvd1[8];
        struct {
            __u64 probed_cpu_visible_size;
            __u64 unallocated_cpu_visible_size;
        };
    };
};

struct drm_i915_query_memory_regions {
    __u32 num_regions;
    __u32 rsvd[3];
    struct drm_i915_memory_region_info regions[];
};