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