XenevaOS
Loading...
Searching...
No Matches
i915_drm.h
Go to the documentation of this file.
1/*
2 * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
3 * All Rights Reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sub license, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
12 *
13 * The above copyright notice and this permission notice (including the
14 * next paragraph) shall be included in all copies or substantial portions
15 * of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
21 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 *
25 */
26
27#ifndef _UAPI_I915_DRM_H_
28#define _UAPI_I915_DRM_H_
29
30#include "drm.h"
31
32#if defined(__cplusplus)
33extern "C" {
34#endif
35
36/* Please note that modifications to all structs defined here are
37 * subject to backwards-compatibility constraints.
38 */
39
61#define I915_L3_PARITY_UEVENT "L3_PARITY_ERROR"
62#define I915_ERROR_UEVENT "ERROR"
63#define I915_RESET_UEVENT "RESET"
64
132
133/*
134 * MOCS indexes used for GPU surfaces, defining the cacheability of the
135 * surface data and the coherency for this data wrt. CPU vs. GPU accesses.
136 */
138 /*
139 * Not cached anywhere, coherency between CPU and GPU accesses is
140 * guaranteed.
141 */
143 /*
144 * Cacheability and coherency controlled by the kernel automatically
145 * based on the DRM_I915_GEM_SET_CACHING IOCTL setting and the current
146 * usage of the surface (used for display scanout or not).
147 */
149 /*
150 * Cached in all GPU caches available on the platform.
151 * Coherency between CPU and GPU accesses to the surface is not
152 * guaranteed without extra synchronization.
153 */
155};
156
224
241#define I915_ENGINE_CLASS_INVALID_NONE -1
242#define I915_ENGINE_CLASS_INVALID_VIRTUAL -2
243
250};
251
262
263#define I915_PMU_SAMPLE_BITS (4)
264#define I915_PMU_SAMPLE_MASK (0xf)
265#define I915_PMU_SAMPLE_INSTANCE_BITS (8)
266#define I915_PMU_CLASS_SHIFT \
267 (I915_PMU_SAMPLE_BITS + I915_PMU_SAMPLE_INSTANCE_BITS)
268
269#define __I915_PMU_ENGINE(class, instance, sample) \
270 ((class) << I915_PMU_CLASS_SHIFT | \
271 (instance) << I915_PMU_SAMPLE_BITS | \
272 (sample))
273
274#define I915_PMU_ENGINE_BUSY(class, instance) \
275 __I915_PMU_ENGINE(class, instance, I915_SAMPLE_BUSY)
276
277#define I915_PMU_ENGINE_WAIT(class, instance) \
278 __I915_PMU_ENGINE(class, instance, I915_SAMPLE_WAIT)
279
280#define I915_PMU_ENGINE_SEMA(class, instance) \
281 __I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA)
282
283/*
284 * Top 4 bits of every non-engine counter are GT id.
285 */
286#define __I915_PMU_GT_SHIFT (60)
287
288#define ___I915_PMU_OTHER(gt, x) \
289 (((__u64)__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x)) | \
290 ((__u64)(gt) << __I915_PMU_GT_SHIFT))
291
292#define __I915_PMU_OTHER(x) ___I915_PMU_OTHER(0, x)
293
294#define I915_PMU_ACTUAL_FREQUENCY __I915_PMU_OTHER(0)
295#define I915_PMU_REQUESTED_FREQUENCY __I915_PMU_OTHER(1)
296#define I915_PMU_INTERRUPTS __I915_PMU_OTHER(2)
297#define I915_PMU_RC6_RESIDENCY __I915_PMU_OTHER(3)
298#define I915_PMU_SOFTWARE_GT_AWAKE_TIME __I915_PMU_OTHER(4)
299
300#define I915_PMU_LAST /* Deprecated - do not use */ I915_PMU_RC6_RESIDENCY
301
302#define __I915_PMU_ACTUAL_FREQUENCY(gt) ___I915_PMU_OTHER(gt, 0)
303#define __I915_PMU_REQUESTED_FREQUENCY(gt) ___I915_PMU_OTHER(gt, 1)
304#define __I915_PMU_INTERRUPTS(gt) ___I915_PMU_OTHER(gt, 2)
305#define __I915_PMU_RC6_RESIDENCY(gt) ___I915_PMU_OTHER(gt, 3)
306#define __I915_PMU_SOFTWARE_GT_AWAKE_TIME(gt) ___I915_PMU_OTHER(gt, 4)
307
308/* Each region is a minimum of 16k, and there are at most 255 of them.
309 */
310#define I915_NR_TEX_REGIONS 255 /* table size 2k - maximum due to use
311 * of chars for next/prev indices */
312#define I915_LOG_MIN_TEX_REGION_SIZE 14
314typedef struct _drm_i915_init {
315 enum {
317 I915_CLEANUP_DMA = 0x02,
320 unsigned int mmio_offset;
322 unsigned int ring_start;
323 unsigned int ring_end;
324 unsigned int ring_size;
325 unsigned int front_offset;
326 unsigned int back_offset;
327 unsigned int depth_offset;
328 unsigned int w;
329 unsigned int h;
330 unsigned int pitch;
331 unsigned int pitch_bits;
332 unsigned int back_pitch;
333 unsigned int depth_pitch;
334 unsigned int cpp;
335 unsigned int chipset;
338typedef struct _drm_i915_sarea {
340 int last_upload; /* last time texture was uploaded */
341 int last_enqueue; /* last time a buffer was enqueued */
342 int last_dispatch; /* age of the most recently dispatched buffer */
343 int ctxOwner; /* last context to upload state */
345 int pf_enabled; /* is pageflipping allowed? */
347 int pf_current_page; /* which buffer is being displayed? */
348 int perf_boxes; /* performance boxes to be displayed */
349 int width, height; /* screen size in pixels */
353 int front_size;
357 int back_size;
361 int depth_size;
367 int pitch;
368 int rotation; /* 0, 90, 180 or 270 */
372 int virtualX, virtualY;
374 unsigned int front_tiled;
375 unsigned int back_tiled;
376 unsigned int depth_tiled;
377 unsigned int rotated_tiled;
378 unsigned int rotated2_tiled;
387 int pipeB_h;
388
389 /* fill out some space for old userspace triple buffer */
392
393 /* buffer object handles for static buffers. May change
394 * over the lifetime of the client.
395 */
402
403/* due to userspace building against these headers we need some compat here */
404#define planeA_x pipeA_x
405#define planeA_y pipeA_y
406#define planeA_w pipeA_w
407#define planeA_h pipeA_h
408#define planeB_x pipeB_x
409#define planeB_y pipeB_y
410#define planeB_w pipeB_w
411#define planeB_h pipeB_h
412
413/* Flags for perf_boxes
414 */
415#define I915_BOX_RING_EMPTY 0x1
416#define I915_BOX_FLIP 0x2
417#define I915_BOX_WAIT 0x4
418#define I915_BOX_TEXTURE_LOAD 0x8
419#define I915_BOX_LOST_CONTEXT 0x10
420
421/*
422 * i915 specific ioctls.
423 *
424 * The device specific ioctl range is [DRM_COMMAND_BASE, DRM_COMMAND_END) ie
425 * [0x40, 0xa0) (a0 is excluded). The numbers below are defined as offset
426 * against DRM_COMMAND_BASE and should be between [0x0, 0x60).
427 */
428#define DRM_I915_INIT 0x00
429#define DRM_I915_FLUSH 0x01
430#define DRM_I915_FLIP 0x02
431#define DRM_I915_BATCHBUFFER 0x03
432#define DRM_I915_IRQ_EMIT 0x04
433#define DRM_I915_IRQ_WAIT 0x05
434#define DRM_I915_GETPARAM 0x06
435#define DRM_I915_SETPARAM 0x07
436#define DRM_I915_ALLOC 0x08
437#define DRM_I915_FREE 0x09
438#define DRM_I915_INIT_HEAP 0x0a
439#define DRM_I915_CMDBUFFER 0x0b
440#define DRM_I915_DESTROY_HEAP 0x0c
441#define DRM_I915_SET_VBLANK_PIPE 0x0d
442#define DRM_I915_GET_VBLANK_PIPE 0x0e
443#define DRM_I915_VBLANK_SWAP 0x0f
444#define DRM_I915_HWS_ADDR 0x11
445#define DRM_I915_GEM_INIT 0x13
446#define DRM_I915_GEM_EXECBUFFER 0x14
447#define DRM_I915_GEM_PIN 0x15
448#define DRM_I915_GEM_UNPIN 0x16
449#define DRM_I915_GEM_BUSY 0x17
450#define DRM_I915_GEM_THROTTLE 0x18
451#define DRM_I915_GEM_ENTERVT 0x19
452#define DRM_I915_GEM_LEAVEVT 0x1a
453#define DRM_I915_GEM_CREATE 0x1b
454#define DRM_I915_GEM_PREAD 0x1c
455#define DRM_I915_GEM_PWRITE 0x1d
456#define DRM_I915_GEM_MMAP 0x1e
457#define DRM_I915_GEM_SET_DOMAIN 0x1f
458#define DRM_I915_GEM_SW_FINISH 0x20
459#define DRM_I915_GEM_SET_TILING 0x21
460#define DRM_I915_GEM_GET_TILING 0x22
461#define DRM_I915_GEM_GET_APERTURE 0x23
462#define DRM_I915_GEM_MMAP_GTT 0x24
463#define DRM_I915_GET_PIPE_FROM_CRTC_ID 0x25
464#define DRM_I915_GEM_MADVISE 0x26
465#define DRM_I915_OVERLAY_PUT_IMAGE 0x27
466#define DRM_I915_OVERLAY_ATTRS 0x28
467#define DRM_I915_GEM_EXECBUFFER2 0x29
468#define DRM_I915_GEM_EXECBUFFER2_WR DRM_I915_GEM_EXECBUFFER2
469#define DRM_I915_GET_SPRITE_COLORKEY 0x2a
470#define DRM_I915_SET_SPRITE_COLORKEY 0x2b
471#define DRM_I915_GEM_WAIT 0x2c
472#define DRM_I915_GEM_CONTEXT_CREATE 0x2d
473#define DRM_I915_GEM_CONTEXT_DESTROY 0x2e
474#define DRM_I915_GEM_SET_CACHING 0x2f
475#define DRM_I915_GEM_GET_CACHING 0x30
476#define DRM_I915_REG_READ 0x31
477#define DRM_I915_GET_RESET_STATS 0x32
478#define DRM_I915_GEM_USERPTR 0x33
479#define DRM_I915_GEM_CONTEXT_GETPARAM 0x34
480#define DRM_I915_GEM_CONTEXT_SETPARAM 0x35
481#define DRM_I915_PERF_OPEN 0x36
482#define DRM_I915_PERF_ADD_CONFIG 0x37
483#define DRM_I915_PERF_REMOVE_CONFIG 0x38
484#define DRM_I915_QUERY 0x39
485#define DRM_I915_GEM_VM_CREATE 0x3a
486#define DRM_I915_GEM_VM_DESTROY 0x3b
487#define DRM_I915_GEM_CREATE_EXT 0x3c
488/* Must be kept compact -- no holes */
490#define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
491#define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
492#define DRM_IOCTL_I915_FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLIP)
493#define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t)
494#define DRM_IOCTL_I915_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t)
495#define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t)
496#define DRM_IOCTL_I915_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, drm_i915_getparam_t)
497#define DRM_IOCTL_I915_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SETPARAM, drm_i915_setparam_t)
498#define DRM_IOCTL_I915_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_ALLOC, drm_i915_mem_alloc_t)
499#define DRM_IOCTL_I915_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_FREE, drm_i915_mem_free_t)
500#define DRM_IOCTL_I915_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
501#define DRM_IOCTL_I915_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
502#define DRM_IOCTL_I915_DESTROY_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
503#define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
504#define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
505#define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t)
506#define DRM_IOCTL_I915_HWS_ADDR DRM_IOW(DRM_COMMAND_BASE + DRM_I915_HWS_ADDR, struct drm_i915_gem_init)
507#define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init)
508#define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer)
509#define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
510#define DRM_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2_WR, struct drm_i915_gem_execbuffer2)
511#define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
512#define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
513#define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
514#define DRM_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_CACHING, struct drm_i915_gem_caching)
515#define DRM_IOCTL_I915_GEM_GET_CACHING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_CACHING, struct drm_i915_gem_caching)
516#define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO ( DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE)
517#define DRM_IOCTL_I915_GEM_ENTERVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT)
518#define DRM_IOCTL_I915_GEM_LEAVEVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT)
519#define DRM_IOCTL_I915_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct drm_i915_gem_create)
520#define DRM_IOCTL_I915_GEM_CREATE_EXT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE_EXT, struct drm_i915_gem_create_ext)
521#define DRM_IOCTL_I915_GEM_PREAD DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread)
522#define DRM_IOCTL_I915_GEM_PWRITE DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite)
523#define DRM_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct drm_i915_gem_mmap)
524#define DRM_IOCTL_I915_GEM_MMAP_GTT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_gtt)
525#define DRM_IOCTL_I915_GEM_MMAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_offset)
526#define DRM_IOCTL_I915_GEM_SET_DOMAIN DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain)
527#define DRM_IOCTL_I915_GEM_SW_FINISH DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SW_FINISH, struct drm_i915_gem_sw_finish)
528#define DRM_IOCTL_I915_GEM_SET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_SET_TILING, struct drm_i915_gem_set_tiling)
529#define DRM_IOCTL_I915_GEM_GET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_TILING, struct drm_i915_gem_get_tiling)
530#define DRM_IOCTL_I915_GEM_GET_APERTURE DRM_IOR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_APERTURE, struct drm_i915_gem_get_aperture)
531#define DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_PIPE_FROM_CRTC_ID, struct drm_i915_get_pipe_from_crtc_id)
532#define DRM_IOCTL_I915_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MADVISE, struct drm_i915_gem_madvise)
533#define DRM_IOCTL_I915_OVERLAY_PUT_IMAGE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_OVERLAY_PUT_IMAGE, struct drm_intel_overlay_put_image)
534#define DRM_IOCTL_I915_OVERLAY_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs)
535#define DRM_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
536#define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
537#define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait)
538#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
539#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create_ext)
540#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
541#define DRM_IOCTL_I915_REG_READ DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read)
542#define DRM_IOCTL_I915_GET_RESET_STATS DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GET_RESET_STATS, struct drm_i915_reset_stats)
543#define DRM_IOCTL_I915_GEM_USERPTR DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_USERPTR, struct drm_i915_gem_userptr)
544#define DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_GETPARAM, struct drm_i915_gem_context_param)
545#define DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_SETPARAM, struct drm_i915_gem_context_param)
546#define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param)
547#define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config)
548#define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64)
549#define DRM_IOCTL_I915_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query)
550#define DRM_IOCTL_I915_GEM_VM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_VM_CREATE, struct drm_i915_gem_vm_control)
551#define DRM_IOCTL_I915_GEM_VM_DESTROY DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_VM_DESTROY, struct drm_i915_gem_vm_control)
552
553/* Allow drivers to submit batchbuffers directly to hardware, relying
554 * on the security mechanisms provided by hardware.
555 */
556typedef struct drm_i915_batchbuffer {
557 int start; /* agp offset */
558 int used; /* nr bytes in use */
559 int DR1; /* hw flags for GFX_OP_DRAWRECT_INFO */
560 int DR4; /* window origin for GFX_OP_DRAWRECT_INFO */
561 int num_cliprects; /* mulitpass with multiple cliprects? */
562 struct drm_clip_rect __user *cliprects; /* pointer to userspace cliprects */
564
565/* As above, but pass a pointer to userspace buffer which can be
566 * validated by the kernel prior to sending to hardware.
567 */
568typedef struct _drm_i915_cmdbuffer {
569 char __user *buf; /* pointer to userspace command buffer */
570 int sz; /* nr bytes in buf */
571 int DR1; /* hw flags for GFX_OP_DRAWRECT_INFO */
572 int DR4; /* window origin for GFX_OP_DRAWRECT_INFO */
573 int num_cliprects; /* mulitpass with multiple cliprects? */
574 struct drm_clip_rect __user *cliprects; /* pointer to userspace cliprects */
576
577/* Userspace can request & wait on irq's:
578 */
579typedef struct drm_i915_irq_emit {
583typedef struct drm_i915_irq_wait {
586
587/*
588 * Different modes of per-process Graphics Translation Table,
589 * see I915_PARAM_HAS_ALIASING_PPGTT
590 */
591#define I915_GEM_PPGTT_NONE 0
592#define I915_GEM_PPGTT_ALIASING 1
593#define I915_GEM_PPGTT_FULL 2
594
595/* Ioctl to query kernel params:
596 */
597#define I915_PARAM_IRQ_ACTIVE 1
598#define I915_PARAM_ALLOW_BATCHBUFFER 2
599#define I915_PARAM_LAST_DISPATCH 3
600#define I915_PARAM_CHIPSET_ID 4
601#define I915_PARAM_HAS_GEM 5
602#define I915_PARAM_NUM_FENCES_AVAIL 6
603#define I915_PARAM_HAS_OVERLAY 7
604#define I915_PARAM_HAS_PAGEFLIPPING 8
605#define I915_PARAM_HAS_EXECBUF2 9
606#define I915_PARAM_HAS_BSD 10
607#define I915_PARAM_HAS_BLT 11
608#define I915_PARAM_HAS_RELAXED_FENCING 12
609#define I915_PARAM_HAS_COHERENT_RINGS 13
610#define I915_PARAM_HAS_EXEC_CONSTANTS 14
611#define I915_PARAM_HAS_RELAXED_DELTA 15
612#define I915_PARAM_HAS_GEN7_SOL_RESET 16
613#define I915_PARAM_HAS_LLC 17
614#define I915_PARAM_HAS_ALIASING_PPGTT 18
615#define I915_PARAM_HAS_WAIT_TIMEOUT 19
616#define I915_PARAM_HAS_SEMAPHORES 20
617#define I915_PARAM_HAS_PRIME_VMAP_FLUSH 21
618#define I915_PARAM_HAS_VEBOX 22
619#define I915_PARAM_HAS_SECURE_BATCHES 23
620#define I915_PARAM_HAS_PINNED_BATCHES 24
621#define I915_PARAM_HAS_EXEC_NO_RELOC 25
622#define I915_PARAM_HAS_EXEC_HANDLE_LUT 26
623#define I915_PARAM_HAS_WT 27
624#define I915_PARAM_CMD_PARSER_VERSION 28
625#define I915_PARAM_HAS_COHERENT_PHYS_GTT 29
626#define I915_PARAM_MMAP_VERSION 30
627#define I915_PARAM_HAS_BSD2 31
628#define I915_PARAM_REVISION 32
629#define I915_PARAM_SUBSLICE_TOTAL 33
630#define I915_PARAM_EU_TOTAL 34
631#define I915_PARAM_HAS_GPU_RESET 35
632#define I915_PARAM_HAS_RESOURCE_STREAMER 36
633#define I915_PARAM_HAS_EXEC_SOFTPIN 37
634#define I915_PARAM_HAS_POOLED_EU 38
635#define I915_PARAM_MIN_EU_IN_POOL 39
636#define I915_PARAM_MMAP_GTT_VERSION 40
637
638/*
639 * Query whether DRM_I915_GEM_EXECBUFFER2 supports user defined execution
640 * priorities and the driver will attempt to execute batches in priority order.
641 * The param returns a capability bitmask, nonzero implies that the scheduler
642 * is enabled, with different features present according to the mask.
643 *
644 * The initial priority for each batch is supplied by the context and is
645 * controlled via I915_CONTEXT_PARAM_PRIORITY.
646 */
647#define I915_PARAM_HAS_SCHEDULER 41
648#define I915_SCHEDULER_CAP_ENABLED (1ul << 0)
649#define I915_SCHEDULER_CAP_PRIORITY (1ul << 1)
650#define I915_SCHEDULER_CAP_PREEMPTION (1ul << 2)
651#define I915_SCHEDULER_CAP_SEMAPHORES (1ul << 3)
652#define I915_SCHEDULER_CAP_ENGINE_BUSY_STATS (1ul << 4)
653/*
654 * Indicates the 2k user priority levels are statically mapped into 3 buckets as
655 * follows:
656 *
657 * -1k to -1 Low priority
658 * 0 Normal priority
659 * 1 to 1k Highest priority
660 */
661#define I915_SCHEDULER_CAP_STATIC_PRIORITY_MAP (1ul << 5)
662
663/*
664 * Query the status of HuC load.
665 *
666 * The query can fail in the following scenarios with the listed error codes:
667 * -ENODEV if HuC is not present on this platform,
668 * -EOPNOTSUPP if HuC firmware usage is disabled,
669 * -ENOPKG if HuC firmware fetch failed,
670 * -ENOEXEC if HuC firmware is invalid or mismatched,
671 * -ENOMEM if i915 failed to prepare the FW objects for transfer to the uC,
672 * -EIO if the FW transfer or the FW authentication failed.
673 *
674 * If the IOCTL is successful, the returned parameter will be set to one of the
675 * following values:
676 * * 0 if HuC firmware load is not complete,
677 * * 1 if HuC firmware is loaded and fully authenticated,
678 * * 2 if HuC firmware is loaded and authenticated for clear media only
679 */
680#define I915_PARAM_HUC_STATUS 42
681
682/* Query whether DRM_I915_GEM_EXECBUFFER2 supports the ability to opt-out of
683 * synchronisation with implicit fencing on individual objects.
684 * See EXEC_OBJECT_ASYNC.
685 */
686#define I915_PARAM_HAS_EXEC_ASYNC 43
687
688/* Query whether DRM_I915_GEM_EXECBUFFER2 supports explicit fence support -
689 * both being able to pass in a sync_file fd to wait upon before executing,
690 * and being able to return a new sync_file fd that is signaled when the
691 * current request is complete. See I915_EXEC_FENCE_IN and I915_EXEC_FENCE_OUT.
692 */
693#define I915_PARAM_HAS_EXEC_FENCE 44
694
695/* Query whether DRM_I915_GEM_EXECBUFFER2 supports the ability to capture
696 * user-specified buffers for post-mortem debugging of GPU hangs. See
697 * EXEC_OBJECT_CAPTURE.
698 */
699#define I915_PARAM_HAS_EXEC_CAPTURE 45
701#define I915_PARAM_SLICE_MASK 46
702
703/* Assuming it's uniform for each slice, this queries the mask of subslices
704 * per-slice for this system.
705 */
706#define I915_PARAM_SUBSLICE_MASK 47
707
708/*
709 * Query whether DRM_I915_GEM_EXECBUFFER2 supports supplying the batch buffer
710 * as the first execobject as opposed to the last. See I915_EXEC_BATCH_FIRST.
711 */
712#define I915_PARAM_HAS_EXEC_BATCH_FIRST 48
713
714/* Query whether DRM_I915_GEM_EXECBUFFER2 supports supplying an array of
715 * drm_i915_gem_exec_fence structures. See I915_EXEC_FENCE_ARRAY.
716 */
717#define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49
718
719/*
720 * Query whether every context (both per-file default and user created) is
721 * isolated (insofar as HW supports). If this parameter is not true, then
722 * freshly created contexts may inherit values from an existing context,
723 * rather than default HW values. If true, it also ensures (insofar as HW
724 * supports) that all state set by this context will not leak to any other
725 * context.
726 *
727 * As not every engine across every gen support contexts, the returned
728 * value reports the support of context isolation for individual engines by
729 * returning a bitmask of each engine class set to true if that class supports
730 * isolation.
731 */
732#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
733
734/* Frequency of the command streamer timestamps given by the *_TIMESTAMP
735 * registers. This used to be fixed per platform but from CNL onwards, this
736 * might vary depending on the parts.
737 */
738#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
739
740/*
741 * Once upon a time we supposed that writes through the GGTT would be
742 * immediately in physical memory (once flushed out of the CPU path). However,
743 * on a few different processors and chipsets, this is not necessarily the case
744 * as the writes appear to be buffered internally. Thus a read of the backing
745 * storage (physical memory) via a different path (with different physical tags
746 * to the indirect write via the GGTT) will see stale values from before
747 * the GGTT write. Inside the kernel, we can for the most part keep track of
748 * the different read/write domains in use (e.g. set-domain), but the assumption
749 * of coherency is baked into the ABI, hence reporting its true state in this
750 * parameter.
751 *
752 * Reports true when writes via mmap_gtt are immediately visible following an
753 * lfence to flush the WCB.
754 *
755 * Reports false when writes via mmap_gtt are indeterminately delayed in an in
756 * internal buffer and are _not_ immediately visible to third parties accessing
757 * directly via mmap_cpu/mmap_wc. Use of mmap_gtt as part of an IPC
758 * communications channel when reporting false is strongly disadvised.
759 */
760#define I915_PARAM_MMAP_GTT_COHERENT 52
761
762/*
763 * Query whether DRM_I915_GEM_EXECBUFFER2 supports coordination of parallel
764 * execution through use of explicit fence support.
765 * See I915_EXEC_FENCE_OUT and I915_EXEC_FENCE_SUBMIT.
766 */
767#define I915_PARAM_HAS_EXEC_SUBMIT_FENCE 53
768
769/*
770 * Revision of the i915-perf uAPI. The value returned helps determine what
771 * i915-perf features are available. See drm_i915_perf_property_id.
772 */
773#define I915_PARAM_PERF_REVISION 54
774
775/* Query whether DRM_I915_GEM_EXECBUFFER2 supports supplying an array of
776 * timeline syncobj through drm_i915_gem_execbuffer_ext_timeline_fences. See
777 * I915_EXEC_USE_EXTENSIONS.
778 */
779#define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
780
781/* Query if the kernel supports the I915_USERPTR_PROBE flag. */
782#define I915_PARAM_HAS_USERPTR_PROBE 56
783
784/*
785 * Frequency of the timestamps in OA reports. This used to be the same as the CS
786 * timestamp frequency, but differs on some platforms.
787 */
788#define I915_PARAM_OA_TIMESTAMP_FREQUENCY 57
789
790/*
791 * Query the status of PXP support in i915.
792 *
793 * The query can fail in the following scenarios with the listed error codes:
794 * -ENODEV = PXP support is not available on the GPU device or in the
795 * kernel due to missing component drivers or kernel configs.
796 *
797 * If the IOCTL is successful, the returned parameter will be set to one of
798 * the following values:
799 * 1 = PXP feature is supported and is ready for use.
800 * 2 = PXP feature is supported but should be ready soon (pending
801 * initialization of non-i915 system dependencies).
802 *
803 * NOTE: When param is supported (positive return values), user space should
804 * still refer to the GEM PXP context-creation UAPI header specs to be
805 * aware of possible failure due to system state machine at the time.
806 */
807#define I915_PARAM_PXP_STATUS 58
808
809/*
810 * Query if kernel allows marking a context to send a Freq hint to SLPC. This
811 * will enable use of the strategies allowed by the SLPC algorithm.
812 */
813#define I915_PARAM_HAS_CONTEXT_FREQ_HINT 59
814
815/* Must be kept compact -- no holes and well documented */
816
820struct drm_i915_getparam {
822 __s32 param;
823
830 int __user *value;
831};
832
838
839/* Ioctl to set kernel params:
840 */
841#define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
842#define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
843#define I915_SETPARAM_ALLOW_BATCHBUFFER 3
844#define I915_SETPARAM_NUM_USED_FENCES 4
845/* Must be kept compact -- no holes */
847typedef struct drm_i915_setparam {
848 int param;
849 int value;
851
852/* A memory manager for regions of shared memory:
853 */
854#define I915_MEM_REGION_AGP 1
856typedef struct drm_i915_mem_alloc {
859 int size;
860 int __user *region_offset; /* offset from start of fb or agp */
873
874/* Allow memory manager to be torn down and re-initialized (eg on
875 * rotate):
880
881/* Allow X server to configure which pipes to monitor for vblank signals
882 */
883#define DRM_I915_VBLANK_PIPE_A 1
884#define DRM_I915_VBLANK_PIPE_B 2
886typedef struct drm_i915_vblank_pipe {
887 int pipe;
889
890/* Schedule buffer swap at given vertical blank:
913};
929};
945};
961};
963struct drm_i915_gem_mmap {
966 __u32 pad;
974 __u64 size;
981
988#define I915_MMAP_WC 0x1
989};
1001};
1002
1015 __u32 handle;
1017 __u32 pad;
1023 __u64 offset;
1024
1043 __u64 flags;
1045#define I915_MMAP_OFFSET_GTT 0
1046#define I915_MMAP_OFFSET_WC 1
1047#define I915_MMAP_OFFSET_WB 2
1048#define I915_MMAP_OFFSET_UC 3
1049#define I915_MMAP_OFFSET_FIXED 4
1050
1057};
1058
1099 __u32 handle;
1100
1103
1111};
1116};
1128
1133 __u32 delta;
1134
1136 __u64 offset;
1137
1147
1152
1161};
1162
1171#define I915_GEM_DOMAIN_CPU 0x00000001
1173#define I915_GEM_DOMAIN_RENDER 0x00000002
1175#define I915_GEM_DOMAIN_SAMPLER 0x00000004
1177#define I915_GEM_DOMAIN_COMMAND 0x00000008
1179#define I915_GEM_DOMAIN_INSTRUCTION 0x00000010
1181#define I915_GEM_DOMAIN_VERTEX 0x00000020
1183#define I915_GEM_DOMAIN_GTT 0x00000040
1185#define I915_GEM_DOMAIN_WC 0x00000080
1193 __u32 handle;
1194
1202
1205
1210 __u64 offset;
1211};
1212
1213/* DRM_IOCTL_I915_GEM_EXECBUFFER was removed in Linux 5.13 */
1227
1237};
1244 __u32 handle;
1245
1253
1256
1271 __u64 offset;
1273#define EXEC_OBJECT_NEEDS_FENCE (1<<0)
1274#define EXEC_OBJECT_NEEDS_GTT (1<<1)
1275#define EXEC_OBJECT_WRITE (1<<2)
1276#define EXEC_OBJECT_SUPPORTS_48B_ADDRESS (1<<3)
1277#define EXEC_OBJECT_PINNED (1<<4)
1278#define EXEC_OBJECT_PAD_TO_SIZE (1<<5)
1279/* The kernel implicitly tracks GPU activity on all GEM objects, and
1280 * synchronises operations with outstanding rendering. This includes
1281 * rendering on other devices if exported via dma-buf. However, sometimes
1282 * this tracking is too coarse and the user knows better. For example,
1283 * if the object is split into non-overlapping ranges shared between different
1284 * clients or engines (i.e. suballocating objects), the implicit tracking
1285 * by kernel assumes that each operation affects the whole object rather
1286 * than an individual range, causing needless synchronisation between clients.
1287 * The kernel will also forgo any CPU cache flushes prior to rendering from
1288 * the object as the client is expected to be also handling such domain
1289 * tracking.
1290 *
1291 * The kernel maintains the implicit tracking in order to manage resources
1292 * used by the GPU - this flag only disables the synchronisation prior to
1293 * rendering with this object in this execbuf.
1294 *
1295 * Opting out of implicit synhronisation requires the user to do its own
1296 * explicit tracking to avoid rendering corruption. See, for example,
1297 * I915_PARAM_HAS_EXEC_FENCE to order execbufs and execute them asynchronously.
1299#define EXEC_OBJECT_ASYNC (1<<6)
1300/* Request that the contents of this execobject be copied into the error
1301 * state upon a GPU hang involving this batch for post-mortem debugging.
1302 * These buffers are recorded in no particular order as "user" in
1303 * /sys/class/drm/cardN/error. Query I915_PARAM_HAS_EXEC_CAPTURE to see
1304 * if the kernel supports this flag.
1306#define EXEC_OBJECT_CAPTURE (1<<7)
1307/* All remaining bits are MBZ and RESERVED FOR FUTURE USE */
1308#define __EXEC_OBJECT_UNKNOWN_FLAGS -(EXEC_OBJECT_CAPTURE<<1)
1309 __u64 flags;
1310
1311 union {
1315 __u64 rsvd2;
1316};
1317
1329 __u32 handle;
1330
1341#define I915_EXEC_FENCE_WAIT (1<<0)
1342#define I915_EXEC_FENCE_SIGNAL (1<<1)
1343#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1))
1344};
1345
1355#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
1358
1364
1370
1379};
1380
1388
1391
1397
1404
1406 __u32 DR1;
1407
1409 __u32 DR4;
1410
1413
1428
1431#define I915_EXEC_RING_MASK (0x3f)
1432#define I915_EXEC_DEFAULT (0<<0)
1433#define I915_EXEC_RENDER (1<<0)
1434#define I915_EXEC_BSD (2<<0)
1435#define I915_EXEC_BLT (3<<0)
1436#define I915_EXEC_VEBOX (4<<0)
1437
1438/* Used for switching the constants addressing mode on gen4+ RENDER ring.
1439 * Gen6+ only supports relative addressing to dynamic state (default) and
1440 * absolute addressing.
1441 *
1442 * These flags are ignored for the BSD and BLT rings.
1444#define I915_EXEC_CONSTANTS_MASK (3<<6)
1445#define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6) /* default */
1446#define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6)
1447#define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6) /* gen4/5 only */
1448
1450#define I915_EXEC_GEN7_SOL_RESET (1<<8)
1451
1455#define I915_EXEC_SECURE (1<<9)
1456
1464#define I915_EXEC_IS_PINNED (1<<10)
1465
1471#define I915_EXEC_NO_RELOC (1<<11)
1472
1476#define I915_EXEC_HANDLE_LUT (1<<12)
1477
1479#define I915_EXEC_BSD_SHIFT (13)
1480#define I915_EXEC_BSD_MASK (3 << I915_EXEC_BSD_SHIFT)
1481/* default ping-pong mode */
1482#define I915_EXEC_BSD_DEFAULT (0 << I915_EXEC_BSD_SHIFT)
1483#define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT)
1484#define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT)
1485
1489#define I915_EXEC_RESOURCE_STREAMER (1<<15)
1490
1491/* Setting I915_EXEC_FENCE_IN implies that lower_32_bits(rsvd2) represent
1492 * a sync_file fd to wait upon (in a nonblocking manner) prior to executing
1493 * the batch.
1494 *
1495 * Returns -EINVAL if the sync_file fd cannot be found.
1497#define I915_EXEC_FENCE_IN (1<<16)
1498
1499/* Setting I915_EXEC_FENCE_OUT causes the ioctl to return a sync_file fd
1500 * in the upper_32_bits(rsvd2) upon success. Ownership of the fd is given
1501 * to the caller, and it should be close() after use. (The fd is a regular
1502 * file descriptor and will be cleaned up on process termination. It holds
1503 * a reference to the request, but nothing else.)
1504 *
1505 * The sync_file fd can be combined with other sync_file and passed either
1506 * to execbuf using I915_EXEC_FENCE_IN, to atomic KMS ioctls (so that a flip
1507 * will only occur after this request completes), or to other devices.
1508 *
1509 * Using I915_EXEC_FENCE_OUT requires use of
1510 * DRM_IOCTL_I915_GEM_EXECBUFFER2_WR ioctl so that the result is written
1511 * back to userspace. Failure to do so will cause the out-fence to always
1512 * be reported as zero, and the real fence fd to be leaked.
1514#define I915_EXEC_FENCE_OUT (1<<17)
1515
1516/*
1517 * Traditionally the execbuf ioctl has only considered the final element in
1518 * the execobject[] to be the executable batch. Often though, the client
1519 * will known the batch object prior to construction and being able to place
1520 * it into the execobject[] array first can simplify the relocation tracking.
1521 * Setting I915_EXEC_BATCH_FIRST tells execbuf to use element 0 of the
1522 * execobject[] as the * batch instead (the default is to use the last
1523 * element).
1525#define I915_EXEC_BATCH_FIRST (1<<18)
1526
1527/* Setting I915_FENCE_ARRAY implies that num_cliprects and cliprects_ptr
1528 * define an array of i915_gem_exec_fence structures which specify a set of
1529 * dma fences to wait upon or signal.
1531#define I915_EXEC_FENCE_ARRAY (1<<19)
1532
1533/*
1534 * Setting I915_EXEC_FENCE_SUBMIT implies that lower_32_bits(rsvd2) represent
1535 * a sync_file fd to wait upon (in a nonblocking manner) prior to executing
1536 * the batch.
1537 *
1538 * Returns -EINVAL if the sync_file fd cannot be found.
1540#define I915_EXEC_FENCE_SUBMIT (1 << 20)
1541
1542/*
1543 * Setting I915_EXEC_USE_EXTENSIONS implies that
1544 * drm_i915_gem_execbuffer2.cliprects_ptr is treated as a pointer to an linked
1545 * list of i915_user_extension. Each i915_user_extension node is the base of a
1546 * larger structure. The list of supported structures are listed in the
1547 * drm_i915_gem_execbuffer_ext enum.
1549#define I915_EXEC_USE_EXTENSIONS (1 << 21)
1550#define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_USE_EXTENSIONS << 1))
1551
1553 __u64 rsvd1;
1554
1564 __u64 rsvd2;
1565};
1567#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
1568#define i915_execbuffer2_set_context_id(eb2, context) \
1569 (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
1570#define i915_execbuffer2_get_context_id(eb2) \
1571 ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
1573struct drm_i915_gem_pin {
1576 __u32 pad;
1577
1580
1582 __u64 offset;
1583};
1589};
1591struct drm_i915_gem_busy {
1593 __u32 handle;
1594
1640 __u32 busy;
1641};
1642
1682struct drm_i915_gem_caching {
1686 __u32 handle;
1687
1714#define I915_CACHING_NONE 0
1715#define I915_CACHING_CACHED 1
1716#define I915_CACHING_DISPLAY 2
1717 __u32 caching;
1718};
1720#define I915_TILING_NONE 0
1721#define I915_TILING_X 1
1722#define I915_TILING_Y 2
1723/*
1724 * Do not add new tiling types here. The I915_TILING_* values are for
1725 * de-tiling fence registers that no longer exist on modern platforms. Although
1726 * the hardware may support new types of tiling in general (e.g., Tile4), we
1727 * do not need to add them to the uapi that is specific to now-defunct ioctls.
1729#define I915_TILING_LAST I915_TILING_Y
1731#define I915_BIT_6_SWIZZLE_NONE 0
1732#define I915_BIT_6_SWIZZLE_9 1
1733#define I915_BIT_6_SWIZZLE_9_10 2
1734#define I915_BIT_6_SWIZZLE_9_11 3
1735#define I915_BIT_6_SWIZZLE_9_10_11 4
1736/* Not seen by userland */
1737#define I915_BIT_6_SWIZZLE_UNKNOWN 5
1738/* Seen by userland. */
1739#define I915_BIT_6_SWIZZLE_9_17 6
1740#define I915_BIT_6_SWIZZLE_9_10_17 7
1744 __u32 handle;
1745
1759
1764 __u32 stride;
1765
1771};
1794};
1805};
1813};
1815#define I915_MADV_WILLNEED 0
1816#define I915_MADV_DONTNEED 1
1817#define __I915_MADV_PURGED 2 /* internal state */
1819struct drm_i915_gem_madvise {
1821 __u32 handle;
1822
1823 /* Advice: either the buffer will be needed again in the near future,
1824 * or won't be and could be discarded under memory pressure.
1826 __u32 madv;
1827
1830};
1831
1832/* flags */
1833#define I915_OVERLAY_TYPE_MASK 0xff
1834#define I915_OVERLAY_YUV_PLANAR 0x01
1835#define I915_OVERLAY_YUV_PACKED 0x02
1836#define I915_OVERLAY_RGB 0x03
1838#define I915_OVERLAY_DEPTH_MASK 0xff00
1839#define I915_OVERLAY_RGB24 0x1000
1840#define I915_OVERLAY_RGB16 0x2000
1841#define I915_OVERLAY_RGB15 0x3000
1842#define I915_OVERLAY_YUV422 0x0100
1843#define I915_OVERLAY_YUV411 0x0200
1844#define I915_OVERLAY_YUV420 0x0300
1845#define I915_OVERLAY_YUV410 0x0400
1847#define I915_OVERLAY_SWAP_MASK 0xff0000
1848#define I915_OVERLAY_NO_SWAP 0x000000
1849#define I915_OVERLAY_UV_SWAP 0x010000
1850#define I915_OVERLAY_Y_SWAP 0x020000
1851#define I915_OVERLAY_Y_AND_UV_SWAP 0x030000
1853#define I915_OVERLAY_FLAGS_MASK 0xff000000
1854#define I915_OVERLAY_ENABLE 0x01000000
1857 /* various flags and src format description */
1858 __u32 flags;
1859 /* source picture description */
1861 /* stride values and offsets are in bytes, buffer relative */
1862 __u16 stride_Y; /* stride for packed formats */
1864 __u32 offset_Y; /* offset for packet formats */
1867 /* in pixels */
1870 /* to compensate the scaling factors for partially covered surfaces */
1873 /* output crtc description */
1879};
1880
1881/* flags */
1882#define I915_OVERLAY_UPDATE_ATTRS (1<<0)
1883#define I915_OVERLAY_UPDATE_GAMMA (1<<1)
1897};
1898
1899/*
1900 * Intel sprite handling
1901 *
1902 * Color keying works with a min/mask/max tuple. Both source and destination
1903 * color keying is allowed.
1904 *
1905 * Source keying:
1906 * Sprite pixels within the min & max values, masked against the color channels
1907 * specified in the mask field, will be transparent. All other pixels will
1908 * be displayed on top of the primary plane. For RGB surfaces, only the min
1909 * and mask fields will be used; ranged compares are not allowed.
1910 *
1911 * Destination keying:
1912 * Primary plane pixels that match the min value, masked against the color
1913 * channels specified in the mask field, will be replaced by corresponding
1914 * pixels from the sprite plane.
1915 *
1916 * Note that source & destination keying are exclusive; only one can be
1917 * active on a given plane.
1918 */
1920#define I915_SET_COLORKEY_NONE (1<<0) /* Deprecated. Instead set
1921 * flags==0 to disable colorkeying.
1923#define I915_SET_COLORKEY_DESTINATION (1<<1)
1924#define I915_SET_COLORKEY_SOURCE (1<<2)
1942 __u32 ctx_id; /* output: id of new context*/
1943 __u32 pad;
1944};
1945
1951 __u32 ctx_id;
1952
1966#define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0)
1967#define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
1968#define I915_CONTEXT_CREATE_FLAGS_UNKNOWN \
1969 (-(I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
1970
1983#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
1984#define I915_CONTEXT_CREATE_EXT_CLONE 1
1985};
1986
1993
1998 __u64 param;
1999#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
2000/* I915_CONTEXT_PARAM_NO_ZEROMAP has been removed. On the off chance
2001 * someone somewhere has attempted to use it, never re-use this context
2002 * param number.
2004#define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
2005#define I915_CONTEXT_PARAM_GTT_SIZE 0x3
2006#define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4
2007#define I915_CONTEXT_PARAM_BANNABLE 0x5
2008#define I915_CONTEXT_PARAM_PRIORITY 0x6
2009#define I915_CONTEXT_MAX_USER_PRIORITY 1023 /* inclusive */
2010#define I915_CONTEXT_DEFAULT_PRIORITY 0
2011#define I915_CONTEXT_MIN_USER_PRIORITY -1023 /* inclusive */
2012 /*
2013 * When using the following param, value should be a pointer to
2014 * drm_i915_gem_context_param_sseu.
2015 */
2016#define I915_CONTEXT_PARAM_SSEU 0x7
2017
2018/*
2019 * Not all clients may want to attempt automatic recover of a context after
2020 * a hang (for example, some clients may only submit very small incremental
2021 * batches relying on known logical state of previous batches which will never
2022 * recover correctly and each attempt will hang), and so would prefer that
2023 * the context is forever banned instead.
2024 *
2025 * If set to false (0), after a reset, subsequent (and in flight) rendering
2026 * from this context is discarded, and the client will need to create a new
2027 * context to use instead.
2028 *
2029 * If set to true (1), the kernel will automatically attempt to recover the
2030 * context by skipping the hanging batch and executing the next batch starting
2031 * from the default context state (discarding the incomplete logical context
2032 * state lost due to the reset).
2034 * On creation, all new contexts are marked as recoverable.
2035 */
2036#define I915_CONTEXT_PARAM_RECOVERABLE 0x8
2037
2038 /*
2039 * The id of the associated virtual memory address space (ppGTT) of
2040 * this context. Can be retrieved and passed to another context
2041 * (on the same fd) for both to use the same ppGTT and so share
2042 * address layouts, and avoid reloading the page tables on context
2043 * switches between themselves.
2045 * See DRM_I915_GEM_VM_CREATE and DRM_I915_GEM_VM_DESTROY.
2046 */
2047#define I915_CONTEXT_PARAM_VM 0x9
2048
2049/*
2050 * I915_CONTEXT_PARAM_ENGINES:
2051 *
2052 * Bind this context to operate on this subset of available engines. Henceforth,
2053 * the I915_EXEC_RING selector for DRM_IOCTL_I915_GEM_EXECBUFFER2 operates as
2054 * an index into this array of engines; I915_EXEC_DEFAULT selecting engine[0]
2055 * and upwards. Slots 0...N are filled in using the specified (class, instance).
2056 * Use
2057 * engine_class: I915_ENGINE_CLASS_INVALID,
2058 * engine_instance: I915_ENGINE_CLASS_INVALID_NONE
2059 * to specify a gap in the array that can be filled in later, e.g. by a
2060 * virtual engine used for load balancing.
2061 *
2062 * Setting the number of engines bound to the context to 0, by passing a zero
2063 * sized argument, will revert back to default settings.
2064 *
2065 * See struct i915_context_param_engines.
2066 *
2067 * Extensions:
2068 * i915_context_engines_load_balance (I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE)
2069 * i915_context_engines_bond (I915_CONTEXT_ENGINES_EXT_BOND)
2070 * i915_context_engines_parallel_submit (I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT)
2071 */
2072#define I915_CONTEXT_PARAM_ENGINES 0xa
2073
2074/*
2075 * I915_CONTEXT_PARAM_PERSISTENCE:
2076 *
2077 * Allow the context and active rendering to survive the process until
2078 * completion. Persistence allows fire-and-forget clients to queue up a
2079 * bunch of work, hand the output over to a display server and then quit.
2080 * If the context is marked as not persistent, upon closing (either via
2081 * an explicit DRM_I915_GEM_CONTEXT_DESTROY or implicitly from file closure
2082 * or process termination), the context and any outstanding requests will be
2083 * cancelled (and exported fences for cancelled requests marked as -EIO).
2085 * By default, new contexts allow persistence.
2086 */
2087#define I915_CONTEXT_PARAM_PERSISTENCE 0xb
2088
2089/* This API has been removed. On the off chance someone somewhere has
2090 * attempted to use it, never re-use this context param number.
2091 */
2092#define I915_CONTEXT_PARAM_RINGSIZE 0xc
2093
2094/*
2095 * I915_CONTEXT_PARAM_PROTECTED_CONTENT:
2096 *
2097 * Mark that the context makes use of protected content, which will result
2098 * in the context being invalidated when the protected content session is.
2099 * Given that the protected content session is killed on suspend, the device
2100 * is kept awake for the lifetime of a protected context, so the user should
2101 * make sure to dispose of them once done.
2102 * This flag can only be set at context creation time and, when set to true,
2103 * must be preceded by an explicit setting of I915_CONTEXT_PARAM_RECOVERABLE
2104 * to false. This flag can't be set to true in conjunction with setting the
2105 * I915_CONTEXT_PARAM_BANNABLE flag to false. Creation example:
2106 *
2107 * .. code-block:: C
2108 *
2109 * struct drm_i915_gem_context_create_ext_setparam p_protected = {
2110 * .base = {
2111 * .name = I915_CONTEXT_CREATE_EXT_SETPARAM,
2112 * },
2113 * .param = {
2114 * .param = I915_CONTEXT_PARAM_PROTECTED_CONTENT,
2115 * .value = 1,
2116 * }
2117 * };
2118 * struct drm_i915_gem_context_create_ext_setparam p_norecover = {
2119 * .base = {
2120 * .name = I915_CONTEXT_CREATE_EXT_SETPARAM,
2121 * .next_extension = to_user_pointer(&p_protected),
2122 * },
2123 * .param = {
2124 * .param = I915_CONTEXT_PARAM_RECOVERABLE,
2125 * .value = 0,
2126 * }
2127 * };
2128 * struct drm_i915_gem_context_create_ext create = {
2129 * .flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS,
2130 * .extensions = to_user_pointer(&p_norecover);
2131 * };
2132 *
2133 * ctx_id = gem_context_create_ext(drm_fd, &create);
2134 *
2135 * In addition to the normal failure cases, setting this flag during context
2136 * creation can result in the following errors:
2137 *
2138 * -ENODEV: feature not available
2139 * -EPERM: trying to mark a recoverable or not bannable context as protected
2140 * -ENXIO: A dependency such as a component driver or firmware is not yet
2141 * loaded so user space may need to attempt again. Depending on the
2142 * device, this error may be reported if protected context creation is
2143 * attempted very early after kernel start because the internal timeout
2144 * waiting for such dependencies is not guaranteed to be larger than
2145 * required (numbers differ depending on system and kernel config):
2146 * - ADL/RPL: dependencies may take up to 3 seconds from kernel start
2147 * while context creation internal timeout is 250 milisecs
2148 * - MTL: dependencies may take up to 8 seconds from kernel start
2149 * while context creation internal timeout is 250 milisecs
2150 * NOTE: such dependencies happen once, so a subsequent call to create a
2151 * protected context after a prior successful call will not experience
2152 * such timeouts and will not return -ENXIO (unless the driver is reloaded,
2153 * or, depending on the device, resumes from a suspended state).
2154 * -EIO: The firmware did not succeed in creating the protected context.
2155 */
2156#define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd
2157
2158/*
2159 * I915_CONTEXT_PARAM_LOW_LATENCY:
2160 *
2161 * Mark this context as a low latency workload which requires aggressive GT
2162 * frequency scaling. Use I915_PARAM_HAS_CONTEXT_FREQ_HINT to check if the kernel
2163 * supports this per context flag.
2164 */
2165#define I915_CONTEXT_PARAM_LOW_LATENCY 0xe
2166
2167/*
2168 * I915_CONTEXT_PARAM_CONTEXT_IMAGE:
2169 *
2170 * Allows userspace to provide own context images.
2172 * Note that this is a debug API not available on production kernel builds.
2173 */
2174#define I915_CONTEXT_PARAM_CONTEXT_IMAGE 0xf
2175/* Must be kept compact -- no holes and well documented */
2176
2178 __u64 value;
2179};
2180
2181/*
2182 * Context SSEU programming
2183 *
2184 * It may be necessary for either functional or performance reason to configure
2185 * a context to run with a reduced number of SSEU (where SSEU stands for Slice/
2186 * Sub-slice/EU).
2187 *
2188 * This is done by configuring SSEU configuration using the below
2189 * @struct drm_i915_gem_context_param_sseu for every supported engine which
2190 * userspace intends to use.
2191 *
2192 * Not all GPUs or engines support this functionality in which case an error
2193 * code -ENODEV will be returned.
2194 *
2195 * Also, flexibility of possible SSEU configuration permutations varies between
2196 * GPU generations and software imposed limitations. Requesting such a
2197 * combination will return an error code of -EINVAL.
2198 *
2199 * NOTE: When perf/OA is active the context's SSEU configuration is ignored in
2200 * favour of a single global setting.
2201 */
2204 * Engine class & instance to be configured or queried.
2205 */
2207
2209 * Unknown flags must be cleared to zero.
2210 */
2211 __u32 flags;
2212#define I915_CONTEXT_SSEU_FLAG_ENGINE_INDEX (1u << 0)
2213
2214 /*
2215 * Mask of slices to enable for the context. Valid values are a subset
2216 * of the bitmask value returned for I915_PARAM_SLICE_MASK.
2217 */
2219
2220 /*
2221 * Mask of subslices to enable for the context. Valid values are a
2222 * subset of the bitmask value return by I915_PARAM_SUBSLICE_MASK.
2223 */
2225
2226 /*
2227 * Minimum/Maximum number of EUs to enable per subslice for the
2228 * context. min_eus_per_subslice must be inferior or equal to
2229 * max_eus_per_subslice.
2230 */
2233
2235 * Unused for now. Must be cleared to zero.
2236 */
2237 __u32 rsvd;
2238};
2239
2303/*
2304 * i915_context_engines_load_balance:
2305 *
2306 * Enable load balancing across this set of engines.
2307 *
2308 * Into the I915_EXEC_DEFAULT slot [0], a virtual engine is created that when
2309 * used will proxy the execbuffer request onto one of the set of engines
2310 * in such a way as to distribute the load evenly across the set.
2311 *
2312 * The set of engines must be compatible (e.g. the same HW class) as they
2313 * will share the same logical GPU context and ring.
2314 *
2315 * To intermix rendering with the virtual engine and direct rendering onto
2316 * the backing engines (bypassing the load balancing proxy), the context must
2317 * be defined to use a single timeline for all engines.
2318 */
2324 __u32 flags; /* all undefined flags must be zero */
2326 __u64 mbz64; /* reserved for future use; must be zero */
2327
2329} __attribute__((packed));
2330
2331#define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__, N__) struct { \
2332 struct i915_user_extension base; \
2333 __u16 engine_index; \
2334 __u16 num_siblings; \
2335 __u32 flags; \
2336 __u64 mbz64; \
2337 struct i915_engine_class_instance engines[N__]; \
2338} __attribute__((packed)) name__
2339
2340/*
2341 * i915_context_engines_bond:
2342 *
2343 * Constructed bonded pairs for execution within a virtual engine.
2344 *
2345 * All engines are equal, but some are more equal than others. Given
2346 * the distribution of resources in the HW, it may be preferable to run
2347 * a request on a given subset of engines in parallel to a request on a
2348 * specific engine. We enable this selection of engines within a virtual
2349 * engine by specifying bonding pairs, for any given master engine we will
2350 * only execute on one of the corresponding siblings within the virtual engine.
2351 *
2352 * To execute a request in parallel on the master engine and a sibling requires
2353 * coordination with a I915_EXEC_FENCE_SUBMIT.
2354 */
2359
2360 __u16 virtual_index; /* index of virtual engine in ctx->engines[] */
2362
2363 __u64 flags; /* all undefined flags must be zero */
2364 __u64 mbz64[4]; /* reserved for future use; must be zero */
2365
2367} __attribute__((packed));
2368
2369#define I915_DEFINE_CONTEXT_ENGINES_BOND(name__, N__) struct { \
2370 struct i915_user_extension base; \
2371 struct i915_engine_class_instance master; \
2372 __u16 virtual_index; \
2373 __u16 num_bonds; \
2374 __u64 flags; \
2375 __u64 mbz64[4]; \
2376 struct i915_engine_class_instance engines[N__]; \
2377} __attribute__((packed)) name__
2378
2454
2459
2464 __u16 width;
2465
2471
2475 __u16 mbz16;
2476
2480 __u64 flags;
2481
2485 __u64 mbz64[3];
2486
2495} __packed;
2496
2497#define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__, N__) struct { \
2498 struct i915_user_extension base; \
2499 __u16 engine_index; \
2500 __u16 width; \
2501 __u16 num_siblings; \
2502 __u16 mbz16; \
2503 __u64 flags; \
2504 __u64 mbz64[3]; \
2505 struct i915_engine_class_instance engines[N__]; \
2506} __attribute__((packed)) name__
2507
2564 __u64 extensions; /* linked chain of extension blocks, 0 terminates */
2565#define I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE 0 /* see i915_context_engines_load_balance */
2566#define I915_CONTEXT_ENGINES_EXT_BOND 1 /* see i915_context_engines_bond */
2567#define I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT 2 /* see i915_context_engines_parallel_submit */
2569} __attribute__((packed));
2570
2571#define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__, N__) struct { \
2572 __u64 extensions; \
2573 struct i915_engine_class_instance engines[N__]; \
2574} __attribute__((packed)) name__
2581 __u32 flags;
2582#define I915_CONTEXT_IMAGE_FLAG_ENGINE_INDEX (1u << 0)
2583
2586
2589
2591 __u64 image;
2592} __attribute__((packed));
2593
2601
2610 __u32 ctx_id;
2611 __u32 pad;
2612};
2613
2638
2641
2644};
2645
2646struct drm_i915_reg_read {
2647 /*
2648 * Register offset.
2649 * For 64bit wide registers where the upper 32bits don't immediately
2650 * follow the lower 32bits, the offset of the lower 32bits must
2651 * be specified
2652 */
2654#define I915_REG_READ_8B_WA (1ul << 0)
2655
2656 __u64 val; /* Return value */
2657};
2658
2659/* Known registers:
2660 *
2661 * Render engine timestamp - 0x2358 + 64bit - gen7+
2662 * - Note this register returns an invalid value if using the default
2663 * single instruction 8byte read, in order to workaround that pass
2664 * flag I915_REG_READ_8B_WA in offset field.
2665 *
2666 */
2667
2668/*
2669 * struct drm_i915_reset_stats - Return global reset and other context stats
2670 *
2671 * Driver keeps few stats for each contexts and also global reset count.
2672 * This struct can be used to query those stats.
2674struct drm_i915_reset_stats {
2677
2680
2683
2686
2689
2691 __u32 pad;
2692};
2693
2700struct drm_i915_gem_userptr {
2707
2718
2752#define I915_USERPTR_READ_ONLY 0x1
2753#define I915_USERPTR_PROBE 0x2
2754#define I915_USERPTR_UNSYNCHRONIZED 0x80000000
2784
2885
2891#define I915_PERF_FLAG_FD_CLOEXEC (1<<0)
2892#define I915_PERF_FLAG_FD_NONBLOCK (1<<1)
2893#define I915_PERF_FLAG_DISABLED (1<<2)
2894
2897
2903};
2904
2905/*
2906 * Enable data capture for a stream that was either opened in a disabled state
2907 * via I915_PERF_FLAG_DISABLED or was later disabled via
2908 * I915_PERF_IOCTL_DISABLE.
2909 *
2910 * It is intended to be cheaper to disable and enable a stream than it may be
2911 * to close and re-open a stream with the same configuration.
2912 *
2913 * It's undefined whether any pending data for the stream will be lost.
2915 * This ioctl is available in perf revision 1.
2916 */
2917#define I915_PERF_IOCTL_ENABLE _IO('i', 0x0)
2918
2919/*
2920 * Disable data capture for a stream.
2921 *
2922 * It is an error to try and read a stream that is disabled.
2924 * This ioctl is available in perf revision 1.
2925 */
2926#define I915_PERF_IOCTL_DISABLE _IO('i', 0x1)
2927
2928/*
2929 * Change metrics_set captured by a stream.
2930 *
2931 * If the stream is bound to a specific context, the configuration change
2932 * will performed inline with that context such that it takes effect before
2933 * the next execbuf submission.
2934 *
2935 * Returns the previously bound metrics set id, or a negative error code.
2937 * This ioctl is available in perf revision 2.
2938 */
2939#define I915_PERF_IOCTL_CONFIG _IO('i', 0x2)
2940
2942 * Common to all i915 perf records
2945 __u32 type;
2946 __u16 pad;
2948};
2949
2951
2972
2973 /*
2974 * Indicates that one or more OA reports were not written by the
2975 * hardware. This can happen for example if an MI_REPORT_PERF_COUNT
2976 * command collides with periodic sampling - which would be more likely
2977 * at higher sampling frequencies.
2978 */
2980
2985
2986 DRM_I915_PERF_RECORD_MAX /* non-ABI */
2987};
2988
3000 char uuid[36];
3001
3008
3015
3022
3031
3040
3049};
3050
3057struct drm_i915_query_item {
3071#define DRM_I915_QUERY_TOPOLOGY_INFO 1
3072#define DRM_I915_QUERY_ENGINE_INFO 2
3073#define DRM_I915_QUERY_PERF_CONFIG 3
3074#define DRM_I915_QUERY_MEMORY_REGIONS 4
3075#define DRM_I915_QUERY_HWCONFIG_BLOB 5
3076#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
3077#define DRM_I915_QUERY_GUC_SUBMISSION_VERSION 7
3078/* Must be kept compact -- no holes and well documented */
3079
3088 __s32 length;
3089
3106#define DRM_I915_QUERY_PERF_CONFIG_LIST 1
3107#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2
3108#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID 3
3109
3118};
3119
3143struct drm_i915_query {
3146
3150 __u32 flags;
3151
3159};
3160
3173 __u16 flags;
3174
3181
3188
3196
3203
3211
3218
3225
3267 __u8 data[];
3268};
3269
3345struct drm_i915_engine_info {
3348
3353 __u64 flags;
3354#define I915_ENGINE_INFO_HAS_LOGICAL_INSTANCE (1 << 0)
3358#define I915_VIDEO_CLASS_CAPABILITY_HEVC (1 << 0)
3359#define I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC (1 << 1)
3360
3363
3365 __u16 rsvd1[3];
3367 __u64 rsvd2[3];
3368};
3369
3379
3382
3385};
3386
3394 union {
3403
3412 __u64 config;
3413
3424 char uuid[36];
3425 };
3426
3432 __u32 flags;
3433
3450 __u8 data[];
3451};
3452
3461};
3462
3469
3472};
3473
3485
3487 __u32 rsvd0;
3488
3498
3510 union {
3512 __u64 rsvd1[8];
3513 struct {
3540 __u64 probed_cpu_visible_size;
3541
3561 __u64 unallocated_cpu_visible_size;
3562 };
3563 };
3564};
3565
3615
3618
3621};
3622
3628 __u32 branch;
3630 __u32 major;
3632 __u32 minor;
3634 __u32 patch;
3635};
3636
3683 __u64 size;
3684
3690 __u32 handle;
3691
3733#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
3734 __u32 flags;
3735
3755#define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
3756#define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
3757#define I915_GEM_CREATE_EXT_SET_PAT 2
3759};
3760
3818
3820 __u32 pad;
3828 __u64 regions;
3829};
3830
3869 __u32 flags;
3870};
3871
3906 __u32 rsvd;
3908
3909/* ID of the protected content session managed by i915 when PXP is active */
3910#define I915_PROTECTED_CONTENT_DEFAULT_SESSION 0xf
3911
3912#if defined(__cplusplus)
3913}
3914#endif
3915
3916#endif /* _UAPI_I915_DRM_H_ */
#define __user
Definition compiler.h:63
int32_t __s32
Definition drm.h:41
uint32_t __u32
Definition drm.h:42
unsigned int drm_drawable_t
Definition drm.h:66
int64_t __s64
Definition drm.h:43
uint8_t __u8
Definition drm.h:38
drm_vblank_seq_type
Definition drm.h:459
uint16_t __u16
Definition drm.h:40
uint64_t __u64
Definition drm.h:44
unsigned long drm_handle_t
Definition drm.h:46
struct drm_i915_hws_addr drm_i915_hws_addr_t
struct drm_i915_mem_destroy_heap drm_i915_mem_destroy_heap_t
i915_mocs_table_index
Definition i915_drm.h:137
@ I915_MOCS_PTE
Definition i915_drm.h:148
@ I915_MOCS_UNCACHED
Definition i915_drm.h:142
@ I915_MOCS_CACHED
Definition i915_drm.h:154
struct _drm_i915_cmdbuffer drm_i915_cmdbuffer_t
struct drm_i915_vblank_swap drm_i915_vblank_swap_t
drm_i915_gem_engine_class
Definition i915_drm.h:166
@ I915_ENGINE_CLASS_VIDEO
Definition i915_drm.h:196
@ I915_ENGINE_CLASS_COPY
Definition i915_drm.h:187
@ I915_ENGINE_CLASS_RENDER
Definition i915_drm.h:176
@ I915_ENGINE_CLASS_VIDEO_ENHANCE
Definition i915_drm.h:204
@ I915_ENGINE_CLASS_COMPUTE
Definition i915_drm.h:213
@ I915_ENGINE_CLASS_INVALID
Definition i915_drm.h:222
struct _drm_i915_init drm_i915_init_t
struct drm_i915_mem_alloc drm_i915_mem_alloc_t
#define I915_NR_TEX_REGIONS
Definition i915_drm.h:310
struct _drm_i915_sarea drm_i915_sarea_t
drm_i915_perf_property_id
Definition i915_drm.h:2785
@ DRM_I915_PERF_PROP_MAX
Definition i915_drm.h:2883
@ DRM_I915_PERF_PROP_GLOBAL_SSEU
Definition i915_drm.h:2849
@ DRM_I915_PERF_PROP_OA_METRICS_SET
Definition i915_drm.h:2809
@ DRM_I915_PERF_PROP_CTX_HANDLE
Definition i915_drm.h:2793
@ DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE
Definition i915_drm.h:2881
@ DRM_I915_PERF_PROP_POLL_OA_PERIOD
Definition i915_drm.h:2862
@ DRM_I915_PERF_PROP_OA_ENGINE_CLASS
Definition i915_drm.h:2873
@ DRM_I915_PERF_PROP_SAMPLE_OA
Definition i915_drm.h:2801
@ DRM_I915_PERF_PROP_OA_EXPONENT
Definition i915_drm.h:2827
@ DRM_I915_PERF_PROP_OA_FORMAT
Definition i915_drm.h:2816
@ DRM_I915_PERF_PROP_HOLD_PREEMPTION
Definition i915_drm.h:2838
struct drm_i915_batchbuffer drm_i915_batchbuffer_t
drm_i915_gem_memory_class
Definition i915_drm.h:3453
@ I915_MEMORY_CLASS_DEVICE
Definition i915_drm.h:3457
@ I915_MEMORY_CLASS_SYSTEM
Definition i915_drm.h:3455
struct drm_i915_irq_wait drm_i915_irq_wait_t
struct drm_i915_vblank_pipe drm_i915_vblank_pipe_t
struct i915_context_engines_parallel_submit __packed
struct drm_i915_gem_context_create_ext_setparam __attribute__
drm_i915_perf_record_type
Definition i915_drm.h:2947
@ DRM_I915_PERF_RECORD_MAX
Definition i915_drm.h:2983
@ DRM_I915_PERF_RECORD_OA_BUFFER_LOST
Definition i915_drm.h:2981
@ DRM_I915_PERF_RECORD_SAMPLE
Definition i915_drm.h:2968
@ DRM_I915_PERF_RECORD_OA_REPORT_LOST
Definition i915_drm.h:2976
struct drm_i915_mem_free drm_i915_mem_free_t
drm_i915_oa_format
Definition i915_drm.h:2760
@ I915_OA_FORMAT_A45_B8_C8
Definition i915_drm.h:2765
@ I915_OA_FORMAT_C4_B8
Definition i915_drm.h:2767
@ I915_OAM_FORMAT_MPEC8u64_B8_C8
Definition i915_drm.h:2779
@ I915_OAM_FORMAT_MPEC8u32_B8_C8
Definition i915_drm.h:2780
@ I915_OA_FORMAT_A24u40_A14u32_B8_C8
Definition i915_drm.h:2776
@ I915_OA_FORMAT_A13_B8_C8
Definition i915_drm.h:2763
@ I915_OA_FORMAT_B4_C8
Definition i915_drm.h:2764
@ I915_OA_FORMAT_A29
Definition i915_drm.h:2762
@ I915_OA_FORMAT_B4_C8_A16
Definition i915_drm.h:2766
@ I915_OA_FORMAT_A12
Definition i915_drm.h:2770
@ I915_OA_FORMAT_MAX
Definition i915_drm.h:2782
@ I915_OA_FORMAT_A12_B8_C8
Definition i915_drm.h:2771
@ I915_OAR_FORMAT_A32u40_A4u32_B8_C8
Definition i915_drm.h:2775
@ I915_OA_FORMAT_A32u40_A4u32_B8_C8
Definition i915_drm.h:2772
@ I915_OA_FORMAT_A13
Definition i915_drm.h:2761
struct drm_i915_mem_init_heap drm_i915_mem_init_heap_t
drm_i915_pmu_engine_sample
Definition i915_drm.h:257
@ I915_SAMPLE_BUSY
Definition i915_drm.h:258
@ I915_SAMPLE_WAIT
Definition i915_drm.h:259
@ I915_SAMPLE_SEMA
Definition i915_drm.h:260
struct drm_i915_irq_emit drm_i915_irq_emit_t
struct drm_i915_setparam drm_i915_setparam_t
Definition i915_drm.h:567
struct drm_clip_rect __user * cliprects
Definition i915_drm.h:573
int DR4
Definition i915_drm.h:571
int num_cliprects
Definition i915_drm.h:572
char __user * buf
Definition i915_drm.h:568
int DR1
Definition i915_drm.h:570
int sz
Definition i915_drm.h:569
Definition i915_drm.h:313
@ I915_CLEANUP_DMA
Definition i915_drm.h:316
@ I915_INIT_DMA
Definition i915_drm.h:315
@ I915_RESUME_DMA
Definition i915_drm.h:317
unsigned int pitch_bits
Definition i915_drm.h:330
unsigned int pitch
Definition i915_drm.h:329
unsigned int w
Definition i915_drm.h:327
unsigned int mmio_offset
Definition i915_drm.h:319
unsigned int front_offset
Definition i915_drm.h:324
unsigned int back_pitch
Definition i915_drm.h:331
unsigned int ring_start
Definition i915_drm.h:321
unsigned int depth_offset
Definition i915_drm.h:326
enum _drm_i915_init::@195 func
unsigned int depth_pitch
Definition i915_drm.h:332
unsigned int back_offset
Definition i915_drm.h:325
unsigned int ring_size
Definition i915_drm.h:323
unsigned int chipset
Definition i915_drm.h:334
unsigned int ring_end
Definition i915_drm.h:322
int sarea_priv_offset
Definition i915_drm.h:320
unsigned int h
Definition i915_drm.h:328
unsigned int cpp
Definition i915_drm.h:333
Definition i915_drm.h:337
__u32 back_bo_handle
Definition i915_drm.h:396
int pf_current_page
Definition i915_drm.h:346
int back_size
Definition i915_drm.h:356
__u32 unused1
Definition i915_drm.h:390
int front_offset
Definition i915_drm.h:351
int ctxOwner
Definition i915_drm.h:342
int pitch
Definition i915_drm.h:366
__u32 unused_bo_handle
Definition i915_drm.h:397
int pipeB_x
Definition i915_drm.h:383
int width
Definition i915_drm.h:348
drm_handle_t unused_handle
Definition i915_drm.h:389
int pf_active
Definition i915_drm.h:345
int rotated_offset
Definition i915_drm.h:368
drm_handle_t tex_handle
Definition i915_drm.h:362
int depth_offset
Definition i915_drm.h:359
unsigned int depth_tiled
Definition i915_drm.h:375
int back_offset
Definition i915_drm.h:355
int pipeB_y
Definition i915_drm.h:384
__u32 front_bo_handle
Definition i915_drm.h:395
int tex_offset
Definition i915_drm.h:363
unsigned int front_tiled
Definition i915_drm.h:373
int front_size
Definition i915_drm.h:352
int rotated_size
Definition i915_drm.h:369
int tex_size
Definition i915_drm.h:364
int height
Definition i915_drm.h:348
drm_handle_t depth_handle
Definition i915_drm.h:358
int pipeA_x
Definition i915_drm.h:379
__u32 unused2
Definition i915_drm.h:390
drm_handle_t back_handle
Definition i915_drm.h:354
unsigned int back_tiled
Definition i915_drm.h:374
int depth_size
Definition i915_drm.h:360
int pipeB_h
Definition i915_drm.h:386
int rotated_pitch
Definition i915_drm.h:370
int pipeA_w
Definition i915_drm.h:381
int pipeB_w
Definition i915_drm.h:385
int virtualY
Definition i915_drm.h:371
int virtualX
Definition i915_drm.h:371
unsigned int rotated2_tiled
Definition i915_drm.h:377
drm_handle_t front_handle
Definition i915_drm.h:350
int pf_enabled
Definition i915_drm.h:344
int last_upload
Definition i915_drm.h:339
int pipeA_h
Definition i915_drm.h:382
__u32 depth_bo_handle
Definition i915_drm.h:398
int log_tex_granularity
Definition i915_drm.h:365
int last_dispatch
Definition i915_drm.h:341
struct drm_tex_region texList[I915_NR_TEX_REGIONS+1]
Definition i915_drm.h:338
int last_enqueue
Definition i915_drm.h:340
unsigned int rotated_tiled
Definition i915_drm.h:376
int rotation
Definition i915_drm.h:367
int pipeA_y
Definition i915_drm.h:380
int texAge
Definition i915_drm.h:343
__u32 unused3
Definition i915_drm.h:390
int perf_boxes
Definition i915_drm.h:347
Definition drm.h:78
Definition i915_drm.h:555
int DR4
Definition i915_drm.h:559
struct drm_clip_rect __user * cliprects
Definition i915_drm.h:561
int DR1
Definition i915_drm.h:558
int num_cliprects
Definition i915_drm.h:560
int used
Definition i915_drm.h:557
int start
Definition i915_drm.h:556
Definition i915_drm.h:3342
__u16 logical_instance
Definition i915_drm.h:3359
__u16 rsvd1[3]
Definition i915_drm.h:3362
__u32 rsvd0
Definition i915_drm.h:3347
__u64 rsvd2[3]
Definition i915_drm.h:3364
__u64 capabilities
Definition i915_drm.h:3354
struct i915_engine_class_instance engine
Definition i915_drm.h:3344
__u64 flags
Definition i915_drm.h:3350
Definition i915_drm.h:1590
__u32 busy
Definition i915_drm.h:1639
__u32 handle
Definition i915_drm.h:1592
Definition i915_drm.h:1681
__u32 caching
Definition i915_drm.h:1716
__u32 handle
Definition i915_drm.h:1685
struct drm_i915_gem_context_param param
Definition i915_drm.h:2603
struct i915_user_extension base
Definition i915_drm.h:2597
Definition i915_drm.h:1946
__u32 flags
Definition i915_drm.h:1962
__u32 ctx_id
Definition i915_drm.h:1948
__u64 extensions
Definition i915_drm.h:1979
Definition i915_drm.h:1938
__u32 ctx_id
Definition i915_drm.h:1939
__u32 pad
Definition i915_drm.h:1940
Definition i915_drm.h:2606
__u32 pad
Definition i915_drm.h:2608
__u32 ctx_id
Definition i915_drm.h:2607
Definition i915_drm.h:2199
__u64 slice_mask
Definition i915_drm.h:2215
__u32 rsvd
Definition i915_drm.h:2234
__u32 flags
Definition i915_drm.h:2208
__u16 min_eus_per_subslice
Definition i915_drm.h:2228
__u16 max_eus_per_subslice
Definition i915_drm.h:2229
struct i915_engine_class_instance engine
Definition i915_drm.h:2203
__u64 subslice_mask
Definition i915_drm.h:2221
Definition i915_drm.h:1987
__u64 value
Definition i915_drm.h:2175
__u32 ctx_id
Definition i915_drm.h:1989
__u64 param
Definition i915_drm.h:1995
__u32 size
Definition i915_drm.h:1992
Definition i915_drm.h:3812
struct i915_user_extension base
Definition i915_drm.h:3814
__u32 num_regions
Definition i915_drm.h:3819
__u64 regions
Definition i915_drm.h:3825
__u32 pad
Definition i915_drm.h:3817
__u32 flags
Definition i915_drm.h:3866
struct i915_user_extension base
Definition i915_drm.h:3864
Definition i915_drm.h:3892
__u32 pat_index
Definition i915_drm.h:3901
__u32 rsvd
Definition i915_drm.h:3903
struct i915_user_extension base
Definition i915_drm.h:3894
Definition i915_drm.h:3654
__u64 extensions
Definition i915_drm.h:3755
__u32 handle
Definition i915_drm.h:3687
__u64 size
Definition i915_drm.h:3680
__u32 flags
Definition i915_drm.h:3731
Definition i915_drm.h:914
__u64 size
Definition i915_drm.h:920
__u32 handle
Definition i915_drm.h:926
__u32 pad
Definition i915_drm.h:927
Definition i915_drm.h:1326
__u32 handle
Definition i915_drm.h:1328
__u32 flags
Definition i915_drm.h:1339
Definition i915_drm.h:1238
__u64 offset
Definition i915_drm.h:1270
__u64 rsvd2
Definition i915_drm.h:1314
__u64 pad_to_size
Definition i915_drm.h:1312
__u32 handle
Definition i915_drm.h:1243
__u64 alignment
Definition i915_drm.h:1254
__u64 flags
Definition i915_drm.h:1308
__u32 relocation_count
Definition i915_drm.h:1246
__u64 relocs_ptr
Definition i915_drm.h:1251
__u64 rsvd1
Definition i915_drm.h:1311
Definition i915_drm.h:1187
__u32 handle
Definition i915_drm.h:1192
__u64 alignment
Definition i915_drm.h:1203
__u64 relocs_ptr
Definition i915_drm.h:1200
__u64 offset
Definition i915_drm.h:1209
__u32 relocation_count
Definition i915_drm.h:1195
Definition i915_drm.h:1384
__u32 num_cliprects
Definition i915_drm.h:1411
__u64 rsvd1
Definition i915_drm.h:1552
__u32 DR1
Definition i915_drm.h:1405
__u64 flags
Definition i915_drm.h:1429
__u64 rsvd2
Definition i915_drm.h:1563
__u64 buffers_ptr
Definition i915_drm.h:1386
__u32 batch_len
Definition i915_drm.h:1402
__u32 DR4
Definition i915_drm.h:1408
__u64 cliprects_ptr
Definition i915_drm.h:1426
__u32 batch_start_offset
Definition i915_drm.h:1395
__u32 buffer_count
Definition i915_drm.h:1389
__u64 values_ptr
Definition i915_drm.h:1377
__u64 fence_count
Definition i915_drm.h:1362
struct i915_user_extension base
Definition i915_drm.h:1356
__u64 handles_ptr
Definition i915_drm.h:1368
Definition i915_drm.h:1213
__u32 DR4
Definition i915_drm.h:1232
__u32 batch_start_offset
Definition i915_drm.h:1228
__u32 batch_len
Definition i915_drm.h:1230
__u32 DR1
Definition i915_drm.h:1231
__u64 cliprects_ptr
Definition i915_drm.h:1235
__u32 num_cliprects
Definition i915_drm.h:1233
__u64 buffers_ptr
Definition i915_drm.h:1224
__u32 buffer_count
Definition i915_drm.h:1225
Definition i915_drm.h:1795
__u64 aper_available_size
Definition i915_drm.h:1803
__u64 aper_size
Definition i915_drm.h:1797
Definition i915_drm.h:1772
__u32 swizzle_mode
Definition i915_drm.h:1786
__u32 tiling_mode
Definition i915_drm.h:1780
__u32 handle
Definition i915_drm.h:1774
__u32 phys_swizzle_mode
Definition i915_drm.h:1792
Definition i915_drm.h:901
__u64 gtt_start
Definition i915_drm.h:906
__u64 gtt_end
Definition i915_drm.h:911
Definition i915_drm.h:1818
__u32 madv
Definition i915_drm.h:1825
__u32 retained
Definition i915_drm.h:1828
__u32 handle
Definition i915_drm.h:1820
Definition i915_drm.h:3463
__u16 memory_class
Definition i915_drm.h:3465
__u16 memory_instance
Definition i915_drm.h:3468
Definition i915_drm.h:990
__u32 handle
Definition i915_drm.h:992
__u32 pad
Definition i915_drm.h:993
__u64 offset
Definition i915_drm.h:999
Definition i915_drm.h:1012
__u32 handle
Definition i915_drm.h:1014
__u64 flags
Definition i915_drm.h:1042
__u64 offset
Definition i915_drm.h:1022
__u32 pad
Definition i915_drm.h:1016
__u64 extensions
Definition i915_drm.h:1055
Definition i915_drm.h:962
__u32 pad
Definition i915_drm.h:965
__u64 addr_ptr
Definition i915_drm.h:979
__u64 offset
Definition i915_drm.h:967
__u64 flags
Definition i915_drm.h:986
__u32 handle
Definition i915_drm.h:964
__u64 size
Definition i915_drm.h:973
Definition i915_drm.h:1572
__u64 alignment
Definition i915_drm.h:1578
__u32 pad
Definition i915_drm.h:1575
__u32 handle
Definition i915_drm.h:1574
__u64 offset
Definition i915_drm.h:1581
Definition i915_drm.h:930
__u64 offset
Definition i915_drm.h:935
__u64 size
Definition i915_drm.h:937
__u32 handle
Definition i915_drm.h:932
__u32 pad
Definition i915_drm.h:933
__u64 data_ptr
Definition i915_drm.h:943
Definition i915_drm.h:946
__u32 handle
Definition i915_drm.h:948
__u64 data_ptr
Definition i915_drm.h:959
__u32 pad
Definition i915_drm.h:949
__u64 size
Definition i915_drm.h:953
__u64 offset
Definition i915_drm.h:951
Definition i915_drm.h:1117
__u32 target_handle
Definition i915_drm.h:1126
__u64 offset
Definition i915_drm.h:1135
__u32 delta
Definition i915_drm.h:1132
__u64 presumed_offset
Definition i915_drm.h:1145
__u32 read_domains
Definition i915_drm.h:1150
__u32 write_domain
Definition i915_drm.h:1159
Definition i915_drm.h:1096
__u32 read_domains
Definition i915_drm.h:1101
__u32 handle
Definition i915_drm.h:1098
__u32 write_domain
Definition i915_drm.h:1109
Definition i915_drm.h:1741
__u32 handle
Definition i915_drm.h:1743
__u32 tiling_mode
Definition i915_drm.h:1757
__u32 swizzle_mode
Definition i915_drm.h:1769
__u32 stride
Definition i915_drm.h:1763
Definition i915_drm.h:1112
__u32 handle
Definition i915_drm.h:1114
Definition i915_drm.h:1584
__u32 handle
Definition i915_drm.h:1586
__u32 pad
Definition i915_drm.h:1587
Definition i915_drm.h:2697
__u32 flags
Definition i915_drm.h:2748
__u64 user_size
Definition i915_drm.h:2714
__u32 handle
Definition i915_drm.h:2757
__u64 user_ptr
Definition i915_drm.h:2703
Definition i915_drm.h:2632
__u32 flags
Definition i915_drm.h:2637
__u64 extensions
Definition i915_drm.h:2634
__u32 vm_id
Definition i915_drm.h:2640
Definition i915_drm.h:1930
__s64 timeout_ns
Definition i915_drm.h:1935
__u32 flags
Definition i915_drm.h:1933
__u32 bo_handle
Definition i915_drm.h:1932
Definition i915_drm.h:1806
__u32 crtc_id
Definition i915_drm.h:1808
__u32 pipe
Definition i915_drm.h:1811
Definition i915_drm.h:819
__s32 param
Definition i915_drm.h:821
int __user * value
Definition i915_drm.h:829
Definition i915_drm.h:897
__u64 addr
Definition i915_drm.h:898
Definition i915_drm.h:578
int __user * irq_seq
Definition i915_drm.h:579
Definition i915_drm.h:582
int irq_seq
Definition i915_drm.h:583
Definition i915_drm.h:855
int __user * region_offset
Definition i915_drm.h:859
int size
Definition i915_drm.h:858
int alignment
Definition i915_drm.h:857
int region
Definition i915_drm.h:856
Definition i915_drm.h:876
int region
Definition i915_drm.h:877
Definition i915_drm.h:862
int region_offset
Definition i915_drm.h:864
int region
Definition i915_drm.h:863
Definition i915_drm.h:867
int region
Definition i915_drm.h:868
int start
Definition i915_drm.h:870
int size
Definition i915_drm.h:869
Definition i915_drm.h:3479
__u64 unallocated_size
Definition i915_drm.h:3505
__u32 rsvd0
Definition i915_drm.h:3484
struct drm_i915_gem_memory_class_instance region
Definition i915_drm.h:3481
__u64 probed_size
Definition i915_drm.h:3494
Definition i915_drm.h:2991
__u32 n_boolean_regs
Definition i915_drm.h:3011
__u64 boolean_regs_ptr
Definition i915_drm.h:3036
__u32 n_flex_regs
Definition i915_drm.h:3018
char uuid[36]
Definition i915_drm.h:2997
__u32 n_mux_regs
Definition i915_drm.h:3004
__u64 flex_regs_ptr
Definition i915_drm.h:3045
__u64 mux_regs_ptr
Definition i915_drm.h:3027
Definition i915_drm.h:2886
__u32 num_properties
Definition i915_drm.h:2893
__u64 properties_ptr
Definition i915_drm.h:2899
__u32 flags
Definition i915_drm.h:2887
Definition i915_drm.h:2941
__u16 pad
Definition i915_drm.h:2943
__u32 type
Definition i915_drm.h:2942
__u16 size
Definition i915_drm.h:2944
Definition i915_drm.h:3373
struct drm_i915_engine_info engines[]
Definition i915_drm.h:3381
__u32 rsvd[3]
Definition i915_drm.h:3378
__u32 num_engines
Definition i915_drm.h:3375
Definition i915_drm.h:3623
__u32 patch
Definition i915_drm.h:3631
__u32 major
Definition i915_drm.h:3627
__u32 branch
Definition i915_drm.h:3625
__u32 minor
Definition i915_drm.h:3629
Definition i915_drm.h:3054
__u64 data_ptr
Definition i915_drm.h:3114
__u32 flags
Definition i915_drm.h:3102
__s32 length
Definition i915_drm.h:3085
__u64 query_id
Definition i915_drm.h:3067
Definition i915_drm.h:3609
__u32 rsvd[3]
Definition i915_drm.h:3614
__u32 num_regions
Definition i915_drm.h:3611
struct drm_i915_memory_region_info regions[]
Definition i915_drm.h:3617
Definition i915_drm.h:3390
__u32 flags
Definition i915_drm.h:3429
__u8 data[]
Definition i915_drm.h:3447
__u64 n_configs
Definition i915_drm.h:3399
__u64 config
Definition i915_drm.h:3409
char uuid[36]
Definition i915_drm.h:3421
Definition i915_drm.h:3164
__u16 eu_offset
Definition i915_drm.h:3214
__u8 data[]
Definition i915_drm.h:3264
__u16 subslice_offset
Definition i915_drm.h:3199
__u16 max_eus_per_subslice
Definition i915_drm.h:3192
__u16 eu_stride
Definition i915_drm.h:3221
__u16 flags
Definition i915_drm.h:3170
__u16 subslice_stride
Definition i915_drm.h:3207
__u16 max_subslices
Definition i915_drm.h:3184
__u16 max_slices
Definition i915_drm.h:3177
Definition i915_drm.h:3140
__u32 num_items
Definition i915_drm.h:3142
__u64 items_ptr
Definition i915_drm.h:3155
__u32 flags
Definition i915_drm.h:3147
Definition i915_drm.h:2643
__u64 offset
Definition i915_drm.h:2650
__u64 val
Definition i915_drm.h:2653
Definition i915_drm.h:2671
__u32 pad
Definition i915_drm.h:2688
__u32 batch_pending
Definition i915_drm.h:2685
__u32 batch_active
Definition i915_drm.h:2682
__u32 flags
Definition i915_drm.h:2676
__u32 reset_count
Definition i915_drm.h:2679
__u32 ctx_id
Definition i915_drm.h:2673
Definition i915_drm.h:846
int value
Definition i915_drm.h:848
int param
Definition i915_drm.h:847
Definition i915_drm.h:885
int pipe
Definition i915_drm.h:886
Definition i915_drm.h:891
unsigned int sequence
Definition i915_drm.h:894
enum drm_vblank_seq_type seqtype
Definition i915_drm.h:893
drm_drawable_t drawable
Definition i915_drm.h:892
Definition i915_drm.h:1884
__u32 gamma0
Definition i915_drm.h:1890
__u32 color_key
Definition i915_drm.h:1886
__u32 gamma2
Definition i915_drm.h:1892
__u32 gamma5
Definition i915_drm.h:1895
__u32 contrast
Definition i915_drm.h:1888
__u32 gamma4
Definition i915_drm.h:1894
__u32 saturation
Definition i915_drm.h:1889
__s32 brightness
Definition i915_drm.h:1887
__u32 gamma3
Definition i915_drm.h:1893
__u32 gamma1
Definition i915_drm.h:1891
__u32 flags
Definition i915_drm.h:1885
Definition i915_drm.h:1855
__u32 offset_V
Definition i915_drm.h:1865
__u32 offset_U
Definition i915_drm.h:1864
__u16 stride_Y
Definition i915_drm.h:1861
__u16 dst_x
Definition i915_drm.h:1874
__u16 dst_width
Definition i915_drm.h:1876
__u16 stride_UV
Definition i915_drm.h:1862
__u16 src_scan_height
Definition i915_drm.h:1871
__u16 dst_height
Definition i915_drm.h:1877
__u32 flags
Definition i915_drm.h:1857
__u16 src_scan_width
Definition i915_drm.h:1870
__u32 bo_handle
Definition i915_drm.h:1859
__u16 src_width
Definition i915_drm.h:1867
__u16 src_height
Definition i915_drm.h:1868
__u16 dst_y
Definition i915_drm.h:1875
__u32 crtc_id
Definition i915_drm.h:1873
__u32 offset_Y
Definition i915_drm.h:1863
Definition i915_drm.h:1922
__u32 channel_mask
Definition i915_drm.h:1925
__u32 min_value
Definition i915_drm.h:1924
__u32 plane_id
Definition i915_drm.h:1923
__u32 max_value
Definition i915_drm.h:1926
__u32 flags
Definition i915_drm.h:1927
Definition drm.h:96
Definition i915_drm.h:2352
__u16 num_bonds
Definition i915_drm.h:2358
__u64 mbz64[4]
Definition i915_drm.h:2361
__u16 virtual_index
Definition i915_drm.h:2357
__u64 flags
Definition i915_drm.h:2360
struct i915_user_extension base
Definition i915_drm.h:2353
struct i915_engine_class_instance master
Definition i915_drm.h:2355
struct i915_engine_class_instance engines[]
Definition i915_drm.h:2363
Definition i915_drm.h:2316
__u64 mbz64
Definition i915_drm.h:2323
__u16 engine_index
Definition i915_drm.h:2319
struct i915_engine_class_instance engines[]
Definition i915_drm.h:2325
struct i915_user_extension base
Definition i915_drm.h:2317
__u16 num_siblings
Definition i915_drm.h:2320
__u32 flags
Definition i915_drm.h:2321
Definition i915_drm.h:2446
__u16 width
Definition i915_drm.h:2461
struct i915_engine_class_instance engines[]
Definition i915_drm.h:2490
__u16 engine_index
Definition i915_drm.h:2455
__u16 mbz16
Definition i915_drm.h:2472
struct i915_user_extension base
Definition i915_drm.h:2450
__u16 num_siblings
Definition i915_drm.h:2467
__u64 mbz64[3]
Definition i915_drm.h:2482
__u64 flags
Definition i915_drm.h:2477
Definition i915_drm.h:2560
struct i915_engine_class_instance engines[]
Definition i915_drm.h:2565
__u64 extensions
Definition i915_drm.h:2561
Definition i915_drm.h:234
__u16 engine_class
Definition i915_drm.h:240
__u16 engine_instance
Definition i915_drm.h:249
Definition i915_drm.h:2573
__u32 mbz
Definition i915_drm.h:2585
__u64 image
Definition i915_drm.h:2588
__u32 flags
Definition i915_drm.h:2578
struct i915_engine_class_instance engine
Definition i915_drm.h:2575
__u32 size
Definition i915_drm.h:2582
Definition i915_drm.h:102
__u32 rsvd[4]
Definition i915_drm.h:130
__u32 flags
Definition i915_drm.h:124
__u64 next_extension
Definition i915_drm.h:108
__u32 name
Definition i915_drm.h:118