1 /*
2  *
3  * (C) COPYRIGHT 2017 ARM Limited. All rights reserved.
4  *
5  * This program is free software and is provided to you under the terms of the
6  * GNU General Public License version 2 as published by the Free Software
7  * Foundation, and any use by you of this program is subject to the terms
8  * of such GNU licence.
9  *
10  * A copy of the licence is included with the program, and can also be obtained
11  * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
12  * Boston, MA  02110-1301, USA.
13  *
14  */
15 
16 
17 
18 #ifndef _KBASE_IOCTL_H_
19 #define _KBASE_IOCTL_H_
20 
21 #ifdef __cpluscplus
22 extern "C" {
23 #endif
24 
25 #include <linux/types.h>
26 
27 #define KBASE_IOCTL_TYPE 0x80
28 
29 #ifdef ANDROID
30 /* Android's definition of ioctl is incorrect, specifying the type argument as
31  * 'int'. This creates a warning when using _IOWR (as the top bit is set). Work
32  * round this by redefining _IOC to include a case to 'int'.
33  */
34 #undef _IOC
35 #define _IOC(dir, type, nr, size) \
36 	((int)(((dir) << _IOC_DIRSHIFT) | ((type) << _IOC_TYPESHIFT) | \
37 	((nr) << _IOC_NRSHIFT) | ((size) << _IOC_SIZESHIFT)))
38 #endif
39 
40 /**
41  * struct kbase_ioctl_version_check - Check version compatibility with kernel
42  *
43  * @major: Major version number
44  * @minor: Minor version number
45  */
46 struct kbase_ioctl_version_check {
47 	__u16 major;
48 	__u16 minor;
49 };
50 
51 #define KBASE_IOCTL_VERSION_CHECK \
52 	_IOWR(KBASE_IOCTL_TYPE, 0, struct kbase_ioctl_version_check)
53 
54 /**
55  * struct kbase_ioctl_set_flags - Set kernel context creation flags
56  *
57  * @create_flags: Flags - see base_context_create_flags
58  */
59 struct kbase_ioctl_set_flags {
60 	__u32 create_flags;
61 };
62 
63 #define KBASE_IOCTL_SET_FLAGS \
64 	_IOW(KBASE_IOCTL_TYPE, 1, struct kbase_ioctl_set_flags)
65 
66 /**
67  * struct kbase_ioctl_job_submit - Submit jobs/atoms to the kernel
68  *
69  * @addr: Memory address of an array of struct base_jd_atom_v2
70  * @nr_atoms: Number of entries in the array
71  * @stride: sizeof(struct base_jd_atom_v2)
72  */
73 struct kbase_ioctl_job_submit {
74 	union kbase_pointer addr;
75 	__u32 nr_atoms;
76 	__u32 stride;
77 };
78 
79 #define KBASE_IOCTL_JOB_SUBMIT \
80 	_IOW(KBASE_IOCTL_TYPE, 2, struct kbase_ioctl_job_submit)
81 
82 /**
83  * struct kbase_ioctl_get_gpuprops - Read GPU properties from the kernel
84  *
85  * @buffer: Pointer to the buffer to store properties into
86  * @size: Size of the buffer
87  * @flags: Flags - must be zero for now
88  *
89  * The ioctl will return the number of bytes stored into @buffer or an error
90  * on failure (e.g. @size is too small). If @size is specified as 0 then no
91  * data will be written but the return value will be the number of bytes needed
92  * for all the properties.
93  *
94  * @flags may be used in the future to request a different format for the
95  * buffer. With @flags == 0 the following format is used.
96  *
97  * The buffer will be filled with pairs of values, a u32 key identifying the
98  * property followed by the value. The size of the value is identified using
99  * the bottom bits of the key. The value then immediately followed the key and
100  * is tightly packed (there is no padding). All keys and values are
101  * little-endian.
102  *
103  * 00 = u8
104  * 01 = u16
105  * 10 = u32
106  * 11 = u64
107  */
108 struct kbase_ioctl_get_gpuprops {
109 	union kbase_pointer buffer;
110 	__u32 size;
111 	__u32 flags;
112 };
113 
114 #define KBASE_IOCTL_GET_GPUPROPS \
115 	_IOW(KBASE_IOCTL_TYPE, 3, struct kbase_ioctl_get_gpuprops)
116 
117 #define KBASE_IOCTL_POST_TERM \
118 	_IO(KBASE_IOCTL_TYPE, 4)
119 
120 /**
121  * union kbase_ioctl_mem_alloc - Allocate memory on the GPU
122  *
123  * @va_pages: The number of pages of virtual address space to reserve
124  * @commit_pages: The number of physical pages to allocate
125  * @extent: The number of extra pages to allocate on each GPU fault which grows
126  *          the region
127  * @flags: Flags
128  * @gpu_va: The GPU virtual address which is allocated
129  *
130  * @in: Input parameters
131  * @out: Output parameters
132  */
133 union kbase_ioctl_mem_alloc {
134 	struct {
135 		__u64 va_pages;
136 		__u64 commit_pages;
137 		__u64 extent;
138 		__u64 flags;
139 	} in;
140 	struct {
141 		__u64 flags;
142 		__u64 gpu_va;
143 	} out;
144 };
145 
146 #define KBASE_IOCTL_MEM_ALLOC \
147 	_IOWR(KBASE_IOCTL_TYPE, 5, union kbase_ioctl_mem_alloc)
148 
149 /**
150  * struct kbase_ioctl_mem_query - Query properties of a GPU memory region
151  * @gpu_addr: A GPU address contained within the region
152  * @query: The type of query
153  * @value: The result of the query
154  *
155  * Use a %KBASE_MEM_QUERY_xxx flag as input for @query.
156  *
157  * @in: Input parameters
158  * @out: Output parameters
159  */
160 union kbase_ioctl_mem_query {
161 	struct {
162 		__u64 gpu_addr;
163 		__u64 query;
164 	} in;
165 	struct {
166 		__u64 value;
167 	} out;
168 };
169 
170 #define KBASE_IOCTL_MEM_QUERY \
171 	_IOWR(KBASE_IOCTL_TYPE, 6, union kbase_ioctl_mem_query)
172 
173 #define KBASE_MEM_QUERY_COMMIT_SIZE	1
174 #define KBASE_MEM_QUERY_VA_SIZE		2
175 #define KBASE_MEM_QUERY_FLAGS		3
176 
177 /**
178  * struct kbase_ioctl_mem_free - Free a memory region
179  * @gpu_addr: Handle to the region to free
180  */
181 struct kbase_ioctl_mem_free {
182 	__u64 gpu_addr;
183 };
184 
185 #define KBASE_IOCTL_MEM_FREE \
186 	_IOW(KBASE_IOCTL_TYPE, 7, struct kbase_ioctl_mem_free)
187 
188 /**
189  * struct kbase_ioctl_hwcnt_reader_setup - Setup HWC dumper/reader
190  * @buffer_count: requested number of dumping buffers
191  * @jm_bm:        counters selection bitmask (JM)
192  * @shader_bm:    counters selection bitmask (Shader)
193  * @tiler_bm:     counters selection bitmask (Tiler)
194  * @mmu_l2_bm:    counters selection bitmask (MMU_L2)
195  *
196  * A fd is returned from the ioctl if successful, or a negative value on error
197  */
198 struct kbase_ioctl_hwcnt_reader_setup {
199 	__u32 buffer_count;
200 	__u32 jm_bm;
201 	__u32 shader_bm;
202 	__u32 tiler_bm;
203 	__u32 mmu_l2_bm;
204 };
205 
206 #define KBASE_IOCTL_HWCNT_READER_SETUP \
207 	_IOW(KBASE_IOCTL_TYPE, 8, struct kbase_ioctl_hwcnt_reader_setup)
208 
209 /**
210  * struct kbase_ioctl_hwcnt_enable - Enable hardware counter collection
211  * @dump_buffer:  GPU address to write counters to
212  * @jm_bm:        counters selection bitmask (JM)
213  * @shader_bm:    counters selection bitmask (Shader)
214  * @tiler_bm:     counters selection bitmask (Tiler)
215  * @mmu_l2_bm:    counters selection bitmask (MMU_L2)
216  */
217 struct kbase_ioctl_hwcnt_enable {
218 	__u64 dump_buffer;
219 	__u32 jm_bm;
220 	__u32 shader_bm;
221 	__u32 tiler_bm;
222 	__u32 mmu_l2_bm;
223 };
224 
225 #define KBASE_IOCTL_HWCNT_ENABLE \
226 	_IOW(KBASE_IOCTL_TYPE, 9, struct kbase_ioctl_hwcnt_enable)
227 
228 #define KBASE_IOCTL_HWCNT_DUMP \
229 	_IO(KBASE_IOCTL_TYPE, 10)
230 
231 #define KBASE_IOCTL_HWCNT_CLEAR \
232 	_IO(KBASE_IOCTL_TYPE, 11)
233 
234 /**
235  * struct kbase_ioctl_disjoint_query - Query the disjoint counter
236  * @counter:   A counter of disjoint events in the kernel
237  */
238 struct kbase_ioctl_disjoint_query {
239 	__u32 counter;
240 };
241 
242 #define KBASE_IOCTL_DISJOINT_QUERY \
243 	_IOR(KBASE_IOCTL_TYPE, 12, struct kbase_ioctl_disjoint_query)
244 
245 /**
246  * struct kbase_ioctl_get_ddk_version - Query the kernel version
247  * @version_buffer: Buffer to receive the kernel version string
248  * @size: Size of the buffer
249  *
250  * The ioctl will return the number of bytes written into version_buffer
251  * (which includes a NULL byte) or a negative error code
252  */
253 struct kbase_ioctl_get_ddk_version {
254 	union kbase_pointer version_buffer;
255 	__u32 size;
256 };
257 
258 #define KBASE_IOCTL_GET_DDK_VERSION \
259 	_IOW(KBASE_IOCTL_TYPE, 13, struct kbase_ioctl_get_ddk_version)
260 
261 /**
262  * struct kbase_ioctl_mem_jit_init - Initialise the JIT memory allocator
263  *
264  * @va_pages: Number of VA pages to reserve for JIT
265  *
266  * Note that depending on the VA size of the application and GPU, the value
267  * specified in @va_pages may be ignored.
268  */
269 struct kbase_ioctl_mem_jit_init {
270 	__u64 va_pages;
271 };
272 
273 #define KBASE_IOCTL_MEM_JIT_INIT \
274 	_IOW(KBASE_IOCTL_TYPE, 14, struct kbase_ioctl_mem_jit_init)
275 
276 /**
277  * struct kbase_ioctl_mem_sync - Perform cache maintenance on memory
278  *
279  * @handle: GPU memory handle (GPU VA)
280  * @user_addr: The address where it is mapped in user space
281  * @size: The number of bytes to synchronise
282  * @type: The direction to synchronise: 0 is sync to memory (clean),
283  * 1 is sync from memory (invalidate). Use the BASE_SYNCSET_OP_xxx constants.
284  * @padding: Padding to round up to a multiple of 8 bytes, must be zero
285  */
286 struct kbase_ioctl_mem_sync {
287 	__u64 handle;
288 	__u64 user_addr;
289 	__u64 size;
290 	__u8 type;
291 	__u8 padding[7];
292 };
293 
294 #define KBASE_IOCTL_MEM_SYNC \
295 	_IOW(KBASE_IOCTL_TYPE, 15, struct kbase_ioctl_mem_sync)
296 
297 /**
298  * union kbase_ioctl_mem_find_cpu_offset - Find the offset of a CPU pointer
299  *
300  * @gpu_addr: The GPU address of the memory region
301  * @cpu_addr: The CPU address to locate
302  * @size: A size in bytes to validate is contained within the region
303  * @offset: The offset from the start of the memory region to @cpu_addr
304  *
305  * @in: Input parameters
306  * @out: Output parameters
307  */
308 union kbase_ioctl_mem_find_cpu_offset {
309 	struct {
310 		__u64 gpu_addr;
311 		__u64 cpu_addr;
312 		__u64 size;
313 	} in;
314 	struct {
315 		__u64 offset;
316 	} out;
317 };
318 
319 #define KBASE_IOCTL_MEM_FIND_CPU_OFFSET \
320 	_IOWR(KBASE_IOCTL_TYPE, 16, union kbase_ioctl_mem_find_cpu_offset)
321 
322 /**
323  * struct kbase_ioctl_get_context_id - Get the kernel context ID
324  *
325  * @id: The kernel context ID
326  */
327 struct kbase_ioctl_get_context_id {
328 	int id; /* This should really be __u32, but see GPUCORE-10048 */
329 };
330 
331 #define KBASE_IOCTL_GET_CONTEXT_ID \
332 	_IOR(KBASE_IOCTL_TYPE, 17, struct kbase_ioctl_get_context_id)
333 
334 /**
335  * struct kbase_ioctl_tlstream_acquire - Acquire a tlstream fd
336  *
337  * @flags: Flags
338  *
339  * The ioctl returns a file descriptor when successful
340  */
341 struct kbase_ioctl_tlstream_acquire {
342 	__u32 flags;
343 };
344 
345 #define KBASE_IOCTL_TLSTREAM_ACQUIRE \
346 	_IOW(KBASE_IOCTL_TYPE, 18, struct kbase_ioctl_tlstream_acquire)
347 
348 #define KBASE_IOCTL_TLSTREAM_FLUSH \
349 	_IO(KBASE_IOCTL_TYPE, 19)
350 
351 /**
352  * struct kbase_ioctl_mem_commit - Change the amount of memory backing a region
353  *
354  * @gpu_addr: The memory region to modify
355  * @pages:    The number of physical pages that should be present
356  *
357  * The ioctl may return on the following error codes or 0 for success:
358  *   -ENOMEM: Out of memory
359  *   -EINVAL: Invalid arguments
360  */
361 struct kbase_ioctl_mem_commit {
362 	__u64 gpu_addr;
363 	__u64 pages;
364 };
365 
366 #define KBASE_IOCTL_MEM_COMMIT \
367 	_IOW(KBASE_IOCTL_TYPE, 20, struct kbase_ioctl_mem_commit)
368 
369 /**
370  * union kbase_ioctl_mem_alias - Create an alias of memory regions
371  * @flags: Flags, see BASE_MEM_xxx
372  * @stride: Bytes between start of each memory region
373  * @nents: The number of regions to pack together into the alias
374  * @aliasing_info: Pointer to an array of struct base_mem_aliasing_info
375  * @gpu_va: Address of the new alias
376  * @va_pages: Size of the new alias
377  *
378  * @in: Input parameters
379  * @out: Output parameters
380  */
381 union kbase_ioctl_mem_alias {
382 	struct {
383 		__u64 flags;
384 		__u64 stride;
385 		__u64 nents;
386 		union kbase_pointer aliasing_info;
387 	} in;
388 	struct {
389 		__u64 flags;
390 		__u64 gpu_va;
391 		__u64 va_pages;
392 	} out;
393 };
394 
395 #define KBASE_IOCTL_MEM_ALIAS \
396 	_IOWR(KBASE_IOCTL_TYPE, 21, union kbase_ioctl_mem_alias)
397 
398 /**
399  * union kbase_ioctl_mem_import - Import memory for use by the GPU
400  * @flags: Flags, see BASE_MEM_xxx
401  * @phandle: Handle to the external memory
402  * @type: Type of external memory, see base_mem_import_type
403  * @padding: Amount of extra VA pages to append to the imported buffer
404  * @gpu_va: Address of the new alias
405  * @va_pages: Size of the new alias
406  *
407  * @in: Input parameters
408  * @out: Output parameters
409  */
410 union kbase_ioctl_mem_import {
411 	struct {
412 		__u64 flags;
413 		union kbase_pointer phandle;
414 		__u32 type;
415 		__u32 padding;
416 	} in;
417 	struct {
418 		__u64 flags;
419 		__u64 gpu_va;
420 		__u64 va_pages;
421 	} out;
422 };
423 
424 #define KBASE_IOCTL_MEM_IMPORT \
425 	_IOWR(KBASE_IOCTL_TYPE, 22, union kbase_ioctl_mem_import)
426 
427 /**
428  * struct kbase_ioctl_mem_flags_change - Change the flags for a memory region
429  * @gpu_va: The GPU region to modify
430  * @flags: The new flags to set
431  * @mask: Mask of the flags to modify
432  */
433 struct kbase_ioctl_mem_flags_change {
434 	__u64 gpu_va;
435 	__u64 flags;
436 	__u64 mask;
437 };
438 
439 #define KBASE_IOCTL_MEM_FLAGS_CHANGE \
440 	_IOW(KBASE_IOCTL_TYPE, 23, struct kbase_ioctl_mem_flags_change)
441 
442 /**
443  * struct kbase_ioctl_stream_create - Create a synchronisation stream
444  * @name: A name to identify this stream. Must be NULL-terminated.
445  *
446  * Note that this is also called a "timeline", but is named stream to avoid
447  * confusion with other uses of the word.
448  *
449  * Unused bytes in @name (after the first NULL byte) must be also be NULL bytes.
450  *
451  * The ioctl returns a file descriptor.
452  */
453 struct kbase_ioctl_stream_create {
454 	char name[32];
455 };
456 
457 #define KBASE_IOCTL_STREAM_CREATE \
458 	_IOW(KBASE_IOCTL_TYPE, 24, struct kbase_ioctl_stream_create)
459 
460 /**
461  * struct kbase_ioctl_fence_validate - Validate a fd refers to a fence
462  * @fd: The file descriptor to validate
463  */
464 struct kbase_ioctl_fence_validate {
465 	int fd;
466 };
467 
468 #define KBASE_IOCTL_FENCE_VALIDATE \
469 	_IOW(KBASE_IOCTL_TYPE, 25, struct kbase_ioctl_fence_validate)
470 
471 /**
472  * struct kbase_ioctl_get_profiling_controls - Get the profiling controls
473  * @count: The size of @buffer in u32 words
474  * @buffer: The buffer to receive the profiling controls
475  */
476 struct kbase_ioctl_get_profiling_controls {
477 	union kbase_pointer buffer;
478 	__u32 count;
479 };
480 
481 #define KBASE_IOCTL_GET_PROFILING_CONTROLS \
482 	_IOW(KBASE_IOCTL_TYPE, 26, struct kbase_ioctl_get_profiling_controls)
483 
484 /**
485  * struct kbase_ioctl_mem_profile_add - Provide profiling information to kernel
486  * @buffer: Pointer to the information
487  * @len: Length
488  * @padding: Padding
489  *
490  * The data provided is accessible through a debugfs file
491  */
492 struct kbase_ioctl_mem_profile_add {
493 	union kbase_pointer buffer;
494 	__u32 len;
495 	__u32 padding;
496 };
497 
498 #define KBASE_IOCTL_MEM_PROFILE_ADD \
499 	_IOW(KBASE_IOCTL_TYPE, 27, struct kbase_ioctl_mem_profile_add)
500 
501 /**
502  * struct kbase_ioctl_soft_event_update - Update the status of a soft-event
503  * @event: GPU address of the event which has been updated
504  * @new_status: The new status to set
505  * @flags: Flags for future expansion
506  */
507 struct kbase_ioctl_soft_event_update {
508 	__u64 event;
509 	__u32 new_status;
510 	__u32 flags;
511 };
512 
513 #define KBASE_IOCTL_SOFT_EVENT_UPDATE \
514 	_IOW(KBASE_IOCTL_TYPE, 28, struct kbase_ioctl_soft_event_update)
515 
516 /***************
517  * test ioctls *
518  ***************/
519 #if MALI_UNIT_TEST
520 /* These ioctls are purely for test purposes and are not used in the production
521  * driver, they therefore may change without notice
522  */
523 
524 #define KBASE_IOCTL_TEST_TYPE (KBASE_IOCTL_TYPE + 1)
525 
526 /**
527  * struct kbase_ioctl_tlstream_test - Start a timeline stream test
528  *
529  * @tpw_count: number of trace point writers in each context
530  * @msg_delay: time delay between tracepoints from one writer in milliseconds
531  * @msg_count: number of trace points written by one writer
532  * @aux_msg:   if non-zero aux messages will be included
533  */
534 struct kbase_ioctl_tlstream_test {
535 	__u32 tpw_count;
536 	__u32 msg_delay;
537 	__u32 msg_count;
538 	__u32 aux_msg;
539 };
540 
541 #define KBASE_IOCTL_TLSTREAM_TEST \
542 	_IOW(KBASE_IOCTL_TEST_TYPE, 1, struct kbase_ioctl_tlstream_test)
543 
544 /**
545  * struct kbase_ioctl_tlstream_stats - Read tlstream stats for test purposes
546  * @bytes_collected: number of bytes read by user
547  * @bytes_generated: number of bytes generated by tracepoints
548  */
549 struct kbase_ioctl_tlstream_stats {
550 	__u32 bytes_collected;
551 	__u32 bytes_generated;
552 };
553 
554 #define KBASE_IOCTL_TLSTREAM_STATS \
555 	_IOR(KBASE_IOCTL_TEST_TYPE, 2, struct kbase_ioctl_tlstream_stats)
556 
557 #endif
558 
559 /**********************************
560  * Definitions for GPU properties *
561  **********************************/
562 #define KBASE_GPUPROP_VALUE_SIZE_U8	(0x0)
563 #define KBASE_GPUPROP_VALUE_SIZE_U16	(0x1)
564 #define KBASE_GPUPROP_VALUE_SIZE_U32	(0x2)
565 #define KBASE_GPUPROP_VALUE_SIZE_U64	(0x3)
566 
567 #define KBASE_GPUPROP_PRODUCT_ID			1
568 #define KBASE_GPUPROP_VERSION_STATUS			2
569 #define KBASE_GPUPROP_MINOR_REVISION			3
570 #define KBASE_GPUPROP_MAJOR_REVISION			4
571 #define KBASE_GPUPROP_GPU_SPEED_MHZ			5
572 #define KBASE_GPUPROP_GPU_FREQ_KHZ_MAX			6
573 #define KBASE_GPUPROP_GPU_FREQ_KHZ_MIN			7
574 #define KBASE_GPUPROP_LOG2_PROGRAM_COUNTER_SIZE		8
575 #define KBASE_GPUPROP_TEXTURE_FEATURES_0		9
576 #define KBASE_GPUPROP_TEXTURE_FEATURES_1		10
577 #define KBASE_GPUPROP_TEXTURE_FEATURES_2		11
578 #define KBASE_GPUPROP_GPU_AVAILABLE_MEMORY_SIZE		12
579 
580 #define KBASE_GPUPROP_L2_LOG2_LINE_SIZE			13
581 #define KBASE_GPUPROP_L2_LOG2_CACHE_SIZE		14
582 #define KBASE_GPUPROP_L2_NUM_L2_SLICES			15
583 
584 #define KBASE_GPUPROP_TILER_BIN_SIZE_BYTES		16
585 #define KBASE_GPUPROP_TILER_MAX_ACTIVE_LEVELS		17
586 
587 #define KBASE_GPUPROP_MAX_THREADS			18
588 #define KBASE_GPUPROP_MAX_WORKGROUP_SIZE		19
589 #define KBASE_GPUPROP_MAX_BARRIER_SIZE			20
590 #define KBASE_GPUPROP_MAX_REGISTERS			21
591 #define KBASE_GPUPROP_MAX_TASK_QUEUE			22
592 #define KBASE_GPUPROP_MAX_THREAD_GROUP_SPLIT		23
593 #define KBASE_GPUPROP_IMPL_TECH				24
594 
595 #define KBASE_GPUPROP_RAW_SHADER_PRESENT		25
596 #define KBASE_GPUPROP_RAW_TILER_PRESENT			26
597 #define KBASE_GPUPROP_RAW_L2_PRESENT			27
598 #define KBASE_GPUPROP_RAW_STACK_PRESENT			28
599 #define KBASE_GPUPROP_RAW_L2_FEATURES			29
600 #define KBASE_GPUPROP_RAW_SUSPEND_SIZE			30
601 #define KBASE_GPUPROP_RAW_MEM_FEATURES			31
602 #define KBASE_GPUPROP_RAW_MMU_FEATURES			32
603 #define KBASE_GPUPROP_RAW_AS_PRESENT			33
604 #define KBASE_GPUPROP_RAW_JS_PRESENT			34
605 #define KBASE_GPUPROP_RAW_JS_FEATURES_0			35
606 #define KBASE_GPUPROP_RAW_JS_FEATURES_1			36
607 #define KBASE_GPUPROP_RAW_JS_FEATURES_2			37
608 #define KBASE_GPUPROP_RAW_JS_FEATURES_3			38
609 #define KBASE_GPUPROP_RAW_JS_FEATURES_4			39
610 #define KBASE_GPUPROP_RAW_JS_FEATURES_5			40
611 #define KBASE_GPUPROP_RAW_JS_FEATURES_6			41
612 #define KBASE_GPUPROP_RAW_JS_FEATURES_7			42
613 #define KBASE_GPUPROP_RAW_JS_FEATURES_8			43
614 #define KBASE_GPUPROP_RAW_JS_FEATURES_9			44
615 #define KBASE_GPUPROP_RAW_JS_FEATURES_10		45
616 #define KBASE_GPUPROP_RAW_JS_FEATURES_11		46
617 #define KBASE_GPUPROP_RAW_JS_FEATURES_12		47
618 #define KBASE_GPUPROP_RAW_JS_FEATURES_13		48
619 #define KBASE_GPUPROP_RAW_JS_FEATURES_14		49
620 #define KBASE_GPUPROP_RAW_JS_FEATURES_15		50
621 #define KBASE_GPUPROP_RAW_TILER_FEATURES		51
622 #define KBASE_GPUPROP_RAW_TEXTURE_FEATURES_0		52
623 #define KBASE_GPUPROP_RAW_TEXTURE_FEATURES_1		53
624 #define KBASE_GPUPROP_RAW_TEXTURE_FEATURES_2		54
625 #define KBASE_GPUPROP_RAW_GPU_ID			55
626 #define KBASE_GPUPROP_RAW_THREAD_MAX_THREADS		56
627 #define KBASE_GPUPROP_RAW_THREAD_MAX_WORKGROUP_SIZE	57
628 #define KBASE_GPUPROP_RAW_THREAD_MAX_BARRIER_SIZE	58
629 #define KBASE_GPUPROP_RAW_THREAD_FEATURES		59
630 #define KBASE_GPUPROP_RAW_COHERENCY_MODE		60
631 
632 #define KBASE_GPUPROP_COHERENCY_NUM_GROUPS		61
633 #define KBASE_GPUPROP_COHERENCY_NUM_CORE_GROUPS		62
634 #define KBASE_GPUPROP_COHERENCY_COHERENCY		63
635 #define KBASE_GPUPROP_COHERENCY_GROUP_0			64
636 #define KBASE_GPUPROP_COHERENCY_GROUP_1			65
637 #define KBASE_GPUPROP_COHERENCY_GROUP_2			66
638 #define KBASE_GPUPROP_COHERENCY_GROUP_3			67
639 #define KBASE_GPUPROP_COHERENCY_GROUP_4			68
640 #define KBASE_GPUPROP_COHERENCY_GROUP_5			69
641 #define KBASE_GPUPROP_COHERENCY_GROUP_6			70
642 #define KBASE_GPUPROP_COHERENCY_GROUP_7			71
643 #define KBASE_GPUPROP_COHERENCY_GROUP_8			72
644 #define KBASE_GPUPROP_COHERENCY_GROUP_9			73
645 #define KBASE_GPUPROP_COHERENCY_GROUP_10		74
646 #define KBASE_GPUPROP_COHERENCY_GROUP_11		75
647 #define KBASE_GPUPROP_COHERENCY_GROUP_12		76
648 #define KBASE_GPUPROP_COHERENCY_GROUP_13		77
649 #define KBASE_GPUPROP_COHERENCY_GROUP_14		78
650 #define KBASE_GPUPROP_COHERENCY_GROUP_15		79
651 
652 #ifdef __cpluscplus
653 }
654 #endif
655 
656 #endif
657