i915_drm.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027: #ifndef _I915_DRM_H_
028: #define _I915_DRM_H_
029:
030: #include <drm/drm.h>
031:
032:
033:
034:
035:
036:
037:
038:
039: #define I915_NR_TEX_REGIONS 255
040:
041: #define I915_LOG_MIN_TEX_REGION_SIZE 14
042:
043: typedef struct _drm_i915_init {
044: enum {
045: I915_INIT_DMA = 0x01,
046: I915_CLEANUP_DMA = 0x02,
047: I915_RESUME_DMA = 0x03
048: } func;
049: unsigned int mmio_offset;
050: int sarea_priv_offset;
051: unsigned int ring_start;
052: unsigned int ring_end;
053: unsigned int ring_size;
054: unsigned int front_offset;
055: unsigned int back_offset;
056: unsigned int depth_offset;
057: unsigned int w;
058: unsigned int h;
059: unsigned int pitch;
060: unsigned int pitch_bits;
061: unsigned int back_pitch;
062: unsigned int depth_pitch;
063: unsigned int cpp;
064: unsigned int chipset;
065: } drm_i915_init_t;
066:
067: typedef struct _drm_i915_sarea {
068: struct drm_tex_region texList[I915_NR_TEX_REGIONS + 1];
069: int last_upload;
070: int last_enqueue;
071: int last_dispatch;
072: int ctxOwner;
073: int texAge;
074: int pf_enabled;
075: int pf_active;
076: int pf_current_page;
077: int perf_boxes;
078: int width, height;
079:
080: drm_handle_t front_handle;
081: int front_offset;
082: int front_size;
083:
084: drm_handle_t back_handle;
085: int back_offset;
086: int back_size;
087:
088: drm_handle_t depth_handle;
089: int depth_offset;
090: int depth_size;
091:
092: drm_handle_t tex_handle;
093: int tex_offset;
094: int tex_size;
095: int log_tex_granularity;
096: int pitch;
097: int rotation;
098: int rotated_offset;
099: int rotated_size;
100: int rotated_pitch;
101: int virtualX, virtualY;
102:
103: unsigned int front_tiled;
104: unsigned int back_tiled;
105: unsigned int depth_tiled;
106: unsigned int rotated_tiled;
107: unsigned int rotated2_tiled;
108:
109: int pipeA_x;
110: int pipeA_y;
111: int pipeA_w;
112: int pipeA_h;
113: int pipeB_x;
114: int pipeB_y;
115: int pipeB_w;
116: int pipeB_h;
117:
118:
119: drm_handle_t unused_handle;
120: __u32 unused1, unused2, unused3;
121:
122:
123:
124:
125: __u32 front_bo_handle;
126: __u32 back_bo_handle;
127: __u32 unused_bo_handle;
128: __u32 depth_bo_handle;
129:
130: } drm_i915_sarea_t;
131:
132:
133: #define planeA_x pipeA_x
134: #define planeA_y pipeA_y
135: #define planeA_w pipeA_w
136: #define planeA_h pipeA_h
137: #define planeB_x pipeB_x
138: #define planeB_y pipeB_y
139: #define planeB_w pipeB_w
140: #define planeB_h pipeB_h
141:
142:
143:
144: #define I915_BOX_RING_EMPTY 0x1
145: #define I915_BOX_FLIP 0x2
146: #define I915_BOX_WAIT 0x4
147: #define I915_BOX_TEXTURE_LOAD 0x8
148: #define I915_BOX_LOST_CONTEXT 0x10
149:
150:
151:
152:
153: #define DRM_I915_INIT 0x00
154: #define DRM_I915_FLUSH 0x01
155: #define DRM_I915_FLIP 0x02
156: #define DRM_I915_BATCHBUFFER 0x03
157: #define DRM_I915_IRQ_EMIT 0x04
158: #define DRM_I915_IRQ_WAIT 0x05
159: #define DRM_I915_GETPARAM 0x06
160: #define DRM_I915_SETPARAM 0x07
161: #define DRM_I915_ALLOC 0x08
162: #define DRM_I915_FREE 0x09
163: #define DRM_I915_INIT_HEAP 0x0a
164: #define DRM_I915_CMDBUFFER 0x0b
165: #define DRM_I915_DESTROY_HEAP 0x0c
166: #define DRM_I915_SET_VBLANK_PIPE 0x0d
167: #define DRM_I915_GET_VBLANK_PIPE 0x0e
168: #define DRM_I915_VBLANK_SWAP 0x0f
169: #define DRM_I915_HWS_ADDR 0x11
170: #define DRM_I915_GEM_INIT 0x13
171: #define DRM_I915_GEM_EXECBUFFER 0x14
172: #define DRM_I915_GEM_PIN 0x15
173: #define DRM_I915_GEM_UNPIN 0x16
174: #define DRM_I915_GEM_BUSY 0x17
175: #define DRM_I915_GEM_THROTTLE 0x18
176: #define DRM_I915_GEM_ENTERVT 0x19
177: #define DRM_I915_GEM_LEAVEVT 0x1a
178: #define DRM_I915_GEM_CREATE 0x1b
179: #define DRM_I915_GEM_PREAD 0x1c
180: #define DRM_I915_GEM_PWRITE 0x1d
181: #define DRM_I915_GEM_MMAP 0x1e
182: #define DRM_I915_GEM_SET_DOMAIN 0x1f
183: #define DRM_I915_GEM_SW_FINISH 0x20
184: #define DRM_I915_GEM_SET_TILING 0x21
185: #define DRM_I915_GEM_GET_TILING 0x22
186: #define DRM_I915_GEM_GET_APERTURE 0x23
187: #define DRM_I915_GEM_MMAP_GTT 0x24
188: #define DRM_I915_GET_PIPE_FROM_CRTC_ID 0x25
189: #define DRM_I915_GEM_MADVISE 0x26
190: #define DRM_I915_OVERLAY_PUT_IMAGE 0x27
191: #define DRM_I915_OVERLAY_ATTRS 0x28
192: #define DRM_I915_GEM_EXECBUFFER2 0x29
193:
194: #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
195: #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
196: #define DRM_IOCTL_I915_FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLIP)
197: #define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t)
198: #define DRM_IOCTL_I915_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t)
199: #define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t)
200: #define DRM_IOCTL_I915_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, drm_i915_getparam_t)
201: #define DRM_IOCTL_I915_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SETPARAM, drm_i915_setparam_t)
202: #define DRM_IOCTL_I915_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_ALLOC, drm_i915_mem_alloc_t)
203: #define DRM_IOCTL_I915_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_FREE, drm_i915_mem_free_t)
204: #define DRM_IOCTL_I915_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
205: #define DRM_IOCTL_I915_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
206: #define DRM_IOCTL_I915_DESTROY_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
207: #define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
208: #define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
209: #define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t)
210: #define DRM_IOCTL_I915_HWS_ADDR DRM_IOW(DRM_COMMAND_BASE + DRM_I915_HWS_ADDR, struct drm_i915_gem_init)
211: #define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init)
212: #define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer)
213: #define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
214: #define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
215: #define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
216: #define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
217: #define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO ( DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE)
218: #define DRM_IOCTL_I915_GEM_ENTERVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT)
219: #define DRM_IOCTL_I915_GEM_LEAVEVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT)
220: #define DRM_IOCTL_I915_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct drm_i915_gem_create)
221: #define DRM_IOCTL_I915_GEM_PREAD DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread)
222: #define DRM_IOCTL_I915_GEM_PWRITE DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite)
223: #define DRM_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct drm_i915_gem_mmap)
224: #define DRM_IOCTL_I915_GEM_MMAP_GTT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_gtt)
225: #define DRM_IOCTL_I915_GEM_SET_DOMAIN DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain)
226: #define DRM_IOCTL_I915_GEM_SW_FINISH DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SW_FINISH, struct drm_i915_gem_sw_finish)
227: #define DRM_IOCTL_I915_GEM_SET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_SET_TILING, struct drm_i915_gem_set_tiling)
228: #define DRM_IOCTL_I915_GEM_GET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_TILING, struct drm_i915_gem_get_tiling)
229: #define DRM_IOCTL_I915_GEM_GET_APERTURE DRM_IOR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_APERTURE, struct drm_i915_gem_get_aperture)
230: #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)
231: #define DRM_IOCTL_I915_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MADVISE, struct drm_i915_gem_madvise)
232: #define DRM_IOCTL_I915_OVERLAY_PUT_IMAGE DRM_IOW(DRM_COMMAND_BASE + DRM_I915_OVERLAY_PUT_IMAGE, struct drm_intel_overlay_put_image)
233: #define DRM_IOCTL_I915_OVERLAY_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs)
234:
235:
236:
237:
238: typedef struct drm_i915_batchbuffer {
239: int start;
240: int used;
241: int DR1;
242: int DR4;
243: int num_cliprects;
244: struct drm_clip_rect *cliprects;
245: } drm_i915_batchbuffer_t;
246:
247:
248:
249:
250: typedef struct _drm_i915_cmdbuffer {
251: char *buf;
252: int sz;
253: int DR1;
254: int DR4;
255: int num_cliprects;
256: struct drm_clip_rect *cliprects;
257: } drm_i915_cmdbuffer_t;
258:
259:
260:
261: typedef struct drm_i915_irq_emit {
262: int *irq_seq;
263: } drm_i915_irq_emit_t;
264:
265: typedef struct drm_i915_irq_wait {
266: int irq_seq;
267: } drm_i915_irq_wait_t;
268:
269:
270:
271: #define I915_PARAM_IRQ_ACTIVE 1
272: #define I915_PARAM_ALLOW_BATCHBUFFER 2
273: #define I915_PARAM_LAST_DISPATCH 3
274: #define I915_PARAM_CHIPSET_ID 4
275: #define I915_PARAM_HAS_GEM 5
276: #define I915_PARAM_NUM_FENCES_AVAIL 6
277: #define I915_PARAM_HAS_OVERLAY 7
278: #define I915_PARAM_HAS_PAGEFLIPPING 8
279: #define I915_PARAM_HAS_EXECBUF2 9
280: #define I915_PARAM_HAS_BSD 10
281: #define I915_PARAM_HAS_BLT 11
282: #define I915_PARAM_HAS_RELAXED_FENCING 12
283: #define I915_PARAM_HAS_COHERENT_RINGS 13
284: #define I915_PARAM_HAS_EXEC_CONSTANTS 14
285: #define I915_PARAM_HAS_RELAXED_DELTA 15
286: #define I915_PARAM_HAS_GEN7_SOL_RESET 16
287:
288: typedef struct drm_i915_getparam {
289: int param;
290: int *value;
291: } drm_i915_getparam_t;
292:
293:
294:
295: #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
296: #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
297: #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
298: #define I915_SETPARAM_NUM_USED_FENCES 4
299:
300: typedef struct drm_i915_setparam {
301: int param;
302: int value;
303: } drm_i915_setparam_t;
304:
305:
306:
307: #define I915_MEM_REGION_AGP 1
308:
309: typedef struct drm_i915_mem_alloc {
310: int region;
311: int alignment;
312: int size;
313: int *region_offset;
314: } drm_i915_mem_alloc_t;
315:
316: typedef struct drm_i915_mem_free {
317: int region;
318: int region_offset;
319: } drm_i915_mem_free_t;
320:
321: typedef struct drm_i915_mem_init_heap {
322: int region;
323: int size;
324: int start;
325: } drm_i915_mem_init_heap_t;
326:
327:
328:
329:
330: typedef struct drm_i915_mem_destroy_heap {
331: int region;
332: } drm_i915_mem_destroy_heap_t;
333:
334:
335:
336: #define DRM_I915_VBLANK_PIPE_A 1
337: #define DRM_I915_VBLANK_PIPE_B 2
338:
339: typedef struct drm_i915_vblank_pipe {
340: int pipe;
341: } drm_i915_vblank_pipe_t;
342:
343:
344:
345: typedef struct drm_i915_vblank_swap {
346: drm_drawable_t drawable;
347: enum drm_vblank_seq_type seqtype;
348: unsigned int sequence;
349: } drm_i915_vblank_swap_t;
350:
351: typedef struct drm_i915_hws_addr {
352: __u64 addr;
353: } drm_i915_hws_addr_t;
354:
355: struct drm_i915_gem_init {
356:
357:
358:
359:
360: __u64 gtt_start;
361:
362:
363:
364:
365: __u64 gtt_end;
366: };
367:
368: struct drm_i915_gem_create {
369:
370:
371:
372:
373:
374: __u64 size;
375:
376:
377:
378:
379:
380: __u32 handle;
381: __u32 pad;
382: };
383:
384: struct drm_i915_gem_pread {
385:
386: __u32 handle;
387: __u32 pad;
388:
389: __u64 offset;
390:
391: __u64 size;
392:
393:
394:
395:
396:
397: __u64 data_ptr;
398: };
399:
400: struct drm_i915_gem_pwrite {
401:
402: __u32 handle;
403: __u32 pad;
404:
405: __u64 offset;
406:
407: __u64 size;
408:
409:
410:
411:
412:
413: __u64 data_ptr;
414: };
415:
416: struct drm_i915_gem_mmap {
417:
418: __u32 handle;
419: __u32 pad;
420:
421: __u64 offset;
422:
423:
424:
425:
426:
427: __u64 size;
428:
429:
430:
431:
432:
433: __u64 addr_ptr;
434: };
435:
436: struct drm_i915_gem_mmap_gtt {
437:
438: __u32 handle;
439: __u32 pad;
440:
441:
442:
443:
444:
445: __u64 offset;
446: };
447:
448: struct drm_i915_gem_set_domain {
449:
450: __u32 handle;
451:
452:
453: __u32 read_domains;
454:
455:
456: __u32 write_domain;
457: };
458:
459: struct drm_i915_gem_sw_finish {
460:
461: __u32 handle;
462: };
463:
464: struct drm_i915_gem_relocation_entry {
465:
466:
467:
468:
469:
470:
471:
472:
473: __u32 target_handle;
474:
475:
476:
477:
478:
479: __u32 delta;
480:
481:
482: __u64 offset;
483:
484:
485:
486:
487:
488:
489:
490:
491:
492: __u64 presumed_offset;
493:
494:
495:
496:
497: __u32 read_domains;
498:
499:
500:
501:
502:
503:
504:
505:
506: __u32 write_domain;
507: };
508:
509:
510:
511:
512:
513:
514:
515:
516:
517: #define I915_GEM_DOMAIN_CPU 0x00000001
518:
519: #define I915_GEM_DOMAIN_RENDER 0x00000002
520:
521: #define I915_GEM_DOMAIN_SAMPLER 0x00000004
522:
523: #define I915_GEM_DOMAIN_COMMAND 0x00000008
524:
525: #define I915_GEM_DOMAIN_INSTRUCTION 0x00000010
526:
527: #define I915_GEM_DOMAIN_VERTEX 0x00000020
528:
529: #define I915_GEM_DOMAIN_GTT 0x00000040
530:
531:
532: struct drm_i915_gem_exec_object {
533:
534:
535:
536:
537: __u32 handle;
538:
539:
540: __u32 relocation_count;
541:
542:
543:
544:
545: __u64 relocs_ptr;
546:
547:
548: __u64 alignment;
549:
550:
551:
552:
553:
554: __u64 offset;
555: };
556:
557: struct drm_i915_gem_execbuffer {
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568: __u64 buffers_ptr;
569: __u32 buffer_count;
570:
571:
572: __u32 batch_start_offset;
573:
574: __u32 batch_len;
575: __u32 DR1;
576: __u32 DR4;
577: __u32 num_cliprects;
578:
579: __u64 cliprects_ptr;
580: };
581:
582: struct drm_i915_gem_exec_object2 {
583:
584:
585:
586:
587: __u32 handle;
588:
589:
590: __u32 relocation_count;
591:
592:
593:
594:
595: __u64 relocs_ptr;
596:
597:
598: __u64 alignment;
599:
600:
601:
602:
603:
604: __u64 offset;
605:
606: #define EXEC_OBJECT_NEEDS_FENCE (1<<0)
607: __u64 flags;
608: __u64 rsvd1;
609: __u64 rsvd2;
610: };
611:
612: struct drm_i915_gem_execbuffer2 {
613:
614:
615:
616: __u64 buffers_ptr;
617: __u32 buffer_count;
618:
619:
620: __u32 batch_start_offset;
621:
622: __u32 batch_len;
623: __u32 DR1;
624: __u32 DR4;
625: __u32 num_cliprects;
626:
627: __u64 cliprects_ptr;
628: #define I915_EXEC_RING_MASK (7<<0)
629: #define I915_EXEC_DEFAULT (0<<0)
630: #define I915_EXEC_RENDER (1<<0)
631: #define I915_EXEC_BSD (2<<0)
632: #define I915_EXEC_BLT (3<<0)
633:
634:
635:
636:
637:
638:
639:
640: #define I915_EXEC_CONSTANTS_MASK (3<<6)
641: #define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6)
642: #define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6)
643: #define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6)
644: __u64 flags;
645: __u64 rsvd1;
646: __u64 rsvd2;
647: };
648:
649:
650: #define I915_EXEC_GEN7_SOL_RESET (1<<8)
651:
652: struct drm_i915_gem_pin {
653:
654: __u32 handle;
655: __u32 pad;
656:
657:
658: __u64 alignment;
659:
660:
661: __u64 offset;
662: };
663:
664: struct drm_i915_gem_unpin {
665:
666: __u32 handle;
667: __u32 pad;
668: };
669:
670: struct drm_i915_gem_busy {
671:
672: __u32 handle;
673:
674:
675: __u32 busy;
676: };
677:
678: #define I915_TILING_NONE 0
679: #define I915_TILING_X 1
680: #define I915_TILING_Y 2
681:
682: #define I915_BIT_6_SWIZZLE_NONE 0
683: #define I915_BIT_6_SWIZZLE_9 1
684: #define I915_BIT_6_SWIZZLE_9_10 2
685: #define I915_BIT_6_SWIZZLE_9_11 3
686: #define I915_BIT_6_SWIZZLE_9_10_11 4
687:
688: #define I915_BIT_6_SWIZZLE_UNKNOWN 5
689:
690: #define I915_BIT_6_SWIZZLE_9_17 6
691: #define I915_BIT_6_SWIZZLE_9_10_17 7
692:
693: struct drm_i915_gem_set_tiling {
694:
695: __u32 handle;
696:
697:
698:
699:
700:
701:
702:
703:
704:
705:
706:
707:
708:
709: __u32 tiling_mode;
710:
711:
712:
713:
714:
715: __u32 stride;
716:
717:
718:
719:
720:
721: __u32 swizzle_mode;
722: };
723:
724: struct drm_i915_gem_get_tiling {
725:
726: __u32 handle;
727:
728:
729:
730:
731:
732: __u32 tiling_mode;
733:
734:
735:
736:
737:
738: __u32 swizzle_mode;
739: };
740:
741: struct drm_i915_gem_get_aperture {
742:
743: __u64 aper_size;
744:
745:
746:
747:
748:
749: __u64 aper_available_size;
750: };
751:
752: struct drm_i915_get_pipe_from_crtc_id {
753:
754: __u32 crtc_id;
755:
756:
757: __u32 pipe;
758: };
759:
760: #define I915_MADV_WILLNEED 0
761: #define I915_MADV_DONTNEED 1
762: #define __I915_MADV_PURGED 2
763:
764: struct drm_i915_gem_madvise {
765:
766: __u32 handle;
767:
768:
769:
770:
771: __u32 madv;
772:
773:
774: __u32 retained;
775: };
776:
777:
778: #define I915_OVERLAY_TYPE_MASK 0xff
779: #define I915_OVERLAY_YUV_PLANAR 0x01
780: #define I915_OVERLAY_YUV_PACKED 0x02
781: #define I915_OVERLAY_RGB 0x03
782:
783: #define I915_OVERLAY_DEPTH_MASK 0xff00
784: #define I915_OVERLAY_RGB24 0x1000
785: #define I915_OVERLAY_RGB16 0x2000
786: #define I915_OVERLAY_RGB15 0x3000
787: #define I915_OVERLAY_YUV422 0x0100
788: #define I915_OVERLAY_YUV411 0x0200
789: #define I915_OVERLAY_YUV420 0x0300
790: #define I915_OVERLAY_YUV410 0x0400
791:
792: #define I915_OVERLAY_SWAP_MASK 0xff0000
793: #define I915_OVERLAY_NO_SWAP 0x000000
794: #define I915_OVERLAY_UV_SWAP 0x010000
795: #define I915_OVERLAY_Y_SWAP 0x020000
796: #define I915_OVERLAY_Y_AND_UV_SWAP 0x030000
797:
798: #define I915_OVERLAY_FLAGS_MASK 0xff000000
799: #define I915_OVERLAY_ENABLE 0x01000000
800:
801: struct drm_intel_overlay_put_image {
802:
803: __u32 flags;
804:
805: __u32 bo_handle;
806:
807: __u16 stride_Y;
808: __u16 stride_UV;
809: __u32 offset_Y;
810: __u32 offset_U;
811: __u32 offset_V;
812:
813: __u16 src_width;
814: __u16 src_height;
815:
816: __u16 src_scan_width;
817: __u16 src_scan_height;
818:
819: __u32 crtc_id;
820: __u16 dst_x;
821: __u16 dst_y;
822: __u16 dst_width;
823: __u16 dst_height;
824: };
825:
826:
827: #define I915_OVERLAY_UPDATE_ATTRS (1<<0)
828: #define I915_OVERLAY_UPDATE_GAMMA (1<<1)
829: struct drm_intel_overlay_attrs {
830: __u32 flags;
831: __u32 color_key;
832: __s32 brightness;
833: __u32 contrast;
834: __u32 saturation;
835: __u32 gamma0;
836: __u32 gamma1;
837: __u32 gamma2;
838: __u32 gamma3;
839: __u32 gamma4;
840: __u32 gamma5;
841: };
842:
843: #endif
844:
© Andrew Scott 2006 -
2025,
All Rights Reserved