summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/xe/abi/guc_scheduler_abi.h
blob: 19ec89bf39c53d7140fc488dc64c134928e31977 (plain)
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
/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2025 Intel Corporation
 */

#ifndef _ABI_GUC_SCHEDULER_ABI_H
#define _ABI_GUC_SCHEDULER_ABI_H

#include <linux/types.h>

/*
 * Generic defines required for registration with and submissions to the GuC
 * scheduler. Includes engine class/instance defines and context attributes
 * (id, priority, etc)
 */

/* Engine classes/instances */
#define GUC_RENDER_CLASS		0
#define GUC_VIDEO_CLASS			1
#define GUC_VIDEOENHANCE_CLASS		2
#define GUC_BLITTER_CLASS		3
#define GUC_COMPUTE_CLASS		4
#define GUC_GSC_OTHER_CLASS		5
#define GUC_LAST_ENGINE_CLASS		GUC_GSC_OTHER_CLASS
#define GUC_MAX_ENGINE_CLASSES		16
#define GUC_MAX_INSTANCES_PER_CLASS	32

/* context priority values */
#define GUC_CLIENT_PRIORITY_KMD_HIGH	0
#define GUC_CLIENT_PRIORITY_HIGH	1
#define GUC_CLIENT_PRIORITY_KMD_NORMAL	2
#define GUC_CLIENT_PRIORITY_NORMAL	3
#define GUC_CLIENT_PRIORITY_NUM		4

/* Context registration */
#define GUC_ID_MAX			65535
#define GUC_ID_UNKNOWN			0xffffffff

#define CONTEXT_REGISTRATION_FLAG_KMD	        BIT(0)
#define CONTEXT_REGISTRATION_FLAG_TYPE	        GENMASK(2, 1)
#define   GUC_CONTEXT_NORMAL			0
#define   GUC_CONTEXT_COMPRESSION_SAVE		1
#define   GUC_CONTEXT_COMPRESSION_RESTORE	2
#define   GUC_CONTEXT_COUNT			(GUC_CONTEXT_COMPRESSION_RESTORE + 1)

/* context enable/disable */
#define GUC_CONTEXT_DISABLE		0
#define GUC_CONTEXT_ENABLE		1

/* scheduler groups */
#define GUC_MAX_SCHED_GROUPS		8

struct guc_sched_group {
	u32 engines[GUC_MAX_ENGINE_CLASSES];
} __packed;

#endif