Picking the changes from: b603e810f740e76b ("drm/uapi: document kernel capabilities") Doesn't result in any tooling changes: $ tools/perf/trace/beauty/drm_ioctl.sh > before $ cp include/uapi/drm/drm.h tools/include/uapi/drm/drm.h $ tools/perf/trace/beauty/drm_ioctl.sh > after $ diff -u before after Silencing these perf build warnings: Warning: Kernel ABI header at 'tools/include/uapi/drm/drm.h' differs from latest version at 'include/uapi/drm/drm.h' diff -u tools/include/uapi/drm/drm.h include/uapi/drm/drm.h
Unified · Split
| @@ -625,30 +625,147 @@ struct drm_gem_open { · 624 unmodified lines | |||
| 625 | __u64 size; | 625 | __u64 size; |
| 626 | }; | 626 | }; |
| 627 | 627 | ||
| 628 | /** | ||
| 629 | * DRM_CAP_DUMB_BUFFER | ||
| 630 | * | ||
| 631 | * If set to 1, the driver supports creating dumb buffers via the | ||
| 632 | * &DRM_IOCTL_MODE_CREATE_DUMB ioctl. | ||
| 633 | */ | ||
| 628 | #define DRM_CAP_DUMB_BUFFER 0x1 | 634 | #define DRM_CAP_DUMB_BUFFER 0x1 |
| 635 | /** | ||
| 636 | * DRM_CAP_VBLANK_HIGH_CRTC | ||
| 637 | * | ||
| 638 | * If set to 1, the kernel supports specifying a CRTC index in the high bits of | ||
| 639 | * &drm_wait_vblank_request.type. | ||
| 640 | * | ||
| 641 | * Starting kernel version 2.6.39, this capability is always set to 1. | ||
| 642 | */ | ||
| 629 | #define DRM_CAP_VBLANK_HIGH_CRTC 0x2 | 643 | #define DRM_CAP_VBLANK_HIGH_CRTC 0x2 |
| 644 | /** | ||
| 645 | * DRM_CAP_DUMB_PREFERRED_DEPTH | ||
| 646 | * | ||
| 647 | * The preferred bit depth for dumb buffers. | ||
| 648 | * | ||
| 649 | * The bit depth is the number of bits used to indicate the color of a single | ||
| 650 | * pixel excluding any padding. This is different from the number of bits per | ||
| 651 | * pixel. For instance, XRGB8888 has a bit depth of 24 but has 32 bits per | ||
| 652 | * pixel. | ||
| 653 | * | ||
| 654 | * Note that this preference only applies to dumb buffers, it's irrelevant for | ||
| 655 | * other types of buffers. | ||
| 656 | */ | ||
| 630 | #define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3 | 657 | #define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3 |
| 658 | /** | ||
| 659 | * DRM_CAP_DUMB_PREFER_SHADOW | ||
| 660 | * | ||
| 661 | * If set to 1, the driver prefers userspace to render to a shadow buffer | ||
| 662 | * instead of directly rendering to a dumb buffer. For best speed, userspace | ||
| 663 | * should do streaming ordered memory copies into the dumb buffer and never | ||
| 664 | * read from it. | ||
| 665 | * | ||
| 666 | * Note that this preference only applies to dumb buffers, it's irrelevant for | ||
| 667 | * other types of buffers. | ||
| 668 | */ | ||
| 631 | #define DRM_CAP_DUMB_PREFER_SHADOW 0x4 | 669 | #define DRM_CAP_DUMB_PREFER_SHADOW 0x4 |
| 670 | /** | ||
| 671 | * DRM_CAP_PRIME | ||
| 672 | * | ||
| 673 | * Bitfield of supported PRIME sharing capabilities. See &DRM_PRIME_CAP_IMPORT | ||
| 674 | * and &DRM_PRIME_CAP_EXPORT. | ||
| 675 | * | ||
| 676 | * PRIME buffers are exposed as dma-buf file descriptors. See | ||
| 677 | * Documentation/gpu/drm-mm.rst, section "PRIME Buffer Sharing". | ||
| 678 | */ | ||
| 632 | #define DRM_CAP_PRIME 0x5 | 679 | #define DRM_CAP_PRIME 0x5 |
| 680 | /** | ||
| 681 | * DRM_PRIME_CAP_IMPORT | ||
| 682 | * | ||
| 683 | * If this bit is set in &DRM_CAP_PRIME, the driver supports importing PRIME | ||
| 684 | * buffers via the &DRM_IOCTL_PRIME_FD_TO_HANDLE ioctl. | ||
| 685 | */ | ||
| 633 | #define DRM_PRIME_CAP_IMPORT 0x1 | 686 | #define DRM_PRIME_CAP_IMPORT 0x1 |
| 687 | /** | ||
| 688 | * DRM_PRIME_CAP_EXPORT | ||
| 689 | * | ||
| 690 | * If this bit is set in &DRM_CAP_PRIME, the driver supports exporting PRIME | ||
| 691 | * buffers via the &DRM_IOCTL_PRIME_HANDLE_TO_FD ioctl. | ||
| 692 | */ | ||
| 634 | #define DRM_PRIME_CAP_EXPORT 0x2 | 693 | #define DRM_PRIME_CAP_EXPORT 0x2 |
| 694 | /** | ||
| 695 | * DRM_CAP_TIMESTAMP_MONOTONIC | ||
| 696 | * | ||
| 697 | * If set to 0, the kernel will report timestamps with ``CLOCK_REALTIME`` in | ||
| 698 | * struct drm_event_vblank. If set to 1, the kernel will report timestamps with | ||
| 699 | * ``CLOCK_MONOTONIC``. See ``clock_gettime(2)`` for the definition of these | ||
| 700 | * clocks. | ||
| 701 | * | ||
| 702 | * Starting from kernel version 2.6.39, the default value for this capability | ||
| 703 | * is 1. Starting kernel version 4.15, this capability is always set to 1. | ||
| 704 | */ | ||
| 635 | #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6 | 705 | #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6 |
| 706 | /** | ||
| 707 | * DRM_CAP_ASYNC_PAGE_FLIP | ||
| 708 | * | ||
| 709 | * If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC. | ||
| 710 | */ | ||
| 636 | #define DRM_CAP_ASYNC_PAGE_FLIP 0x7 | 711 | #define DRM_CAP_ASYNC_PAGE_FLIP 0x7 |
| 637 | /* | 712 | /** |
| 638 | * The CURSOR_WIDTH and CURSOR_HEIGHT capabilities return a valid widthxheight | 713 | * DRM_CAP_CURSOR_WIDTH |
| 639 | * combination for the hardware cursor. The intention is that a hardware | 714 | * |
| 640 | * agnostic userspace can query a cursor plane size to use. | 715 | * The ``CURSOR_WIDTH`` and ``CURSOR_HEIGHT`` capabilities return a valid |
| 716 | * width x height combination for the hardware cursor. The intention is that a | ||
| 717 | * hardware agnostic userspace can query a cursor plane size to use. | ||
| 641 | * | 718 | * |
| 642 | * Note that the cross-driver contract is to merely return a valid size; | 719 | * Note that the cross-driver contract is to merely return a valid size; |
| 643 | * drivers are free to attach another meaning on top, eg. i915 returns the | 720 | * drivers are free to attach another meaning on top, eg. i915 returns the |
| 644 | * maximum plane size. | 721 | * maximum plane size. |
| 645 | */ | 722 | */ |
| 646 | #define DRM_CAP_CURSOR_WIDTH 0x8 | 723 | #define DRM_CAP_CURSOR_WIDTH 0x8 |
| 724 | /** | ||
| 725 | * DRM_CAP_CURSOR_HEIGHT | ||
| 726 | * | ||
| 727 | * See &DRM_CAP_CURSOR_WIDTH. | ||
| 728 | */ | ||
| 647 | #define DRM_CAP_CURSOR_HEIGHT 0x9 | 729 | #define DRM_CAP_CURSOR_HEIGHT 0x9 |
| 730 | /** | ||
| 731 | * DRM_CAP_ADDFB2_MODIFIERS | ||
| 732 | * | ||
| 733 | * If set to 1, the driver supports supplying modifiers in the | ||
| 734 | * &DRM_IOCTL_MODE_ADDFB2 ioctl. | ||
| 735 | */ | ||
| 648 | #define DRM_CAP_ADDFB2_MODIFIERS 0x10 | 736 | #define DRM_CAP_ADDFB2_MODIFIERS 0x10 |
| 737 | /** | ||
| 738 | * DRM_CAP_PAGE_FLIP_TARGET | ||
| 739 | * | ||
| 740 | * If set to 1, the driver supports the &DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE and | ||
| 741 | * &DRM_MODE_PAGE_FLIP_TARGET_RELATIVE flags in | ||
| 742 | * &drm_mode_crtc_page_flip_target.flags for the &DRM_IOCTL_MODE_PAGE_FLIP | ||
| 743 | * ioctl. | ||
| 744 | */ | ||
| 649 | #define DRM_CAP_PAGE_FLIP_TARGET 0x11 | 745 | #define DRM_CAP_PAGE_FLIP_TARGET 0x11 |
| 746 | /** | ||
| 747 | * DRM_CAP_CRTC_IN_VBLANK_EVENT | ||
| 748 | * | ||
| 749 | * If set to 1, the kernel supports reporting the CRTC ID in | ||
| 750 | * &drm_event_vblank.crtc_id for the &DRM_EVENT_VBLANK and | ||
| 751 | * &DRM_EVENT_FLIP_COMPLETE events. | ||
| 752 | * | ||
| 753 | * Starting kernel version 4.12, this capability is always set to 1. | ||
| 754 | */ | ||
| 650 | #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 | 755 | #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 |
| 756 | /** | ||
| 757 | * DRM_CAP_SYNCOBJ | ||
| 758 | * | ||
| 759 | * If set to 1, the driver supports sync objects. See | ||
| 760 | * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects". | ||
| 761 | */ | ||
| 651 | #define DRM_CAP_SYNCOBJ 0x13 | 762 | #define DRM_CAP_SYNCOBJ 0x13 |
| 763 | /** | ||
| 764 | * DRM_CAP_SYNCOBJ_TIMELINE | ||
| 765 | * | ||
| 766 | * If set to 1, the driver supports timeline operations on sync objects. See | ||
| 767 | * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects". | ||
| 768 | */ | ||
| 652 | #define DRM_CAP_SYNCOBJ_TIMELINE 0x14 | 769 | #define DRM_CAP_SYNCOBJ_TIMELINE 0x14 |
| 653 | 770 | ||
| 654 | /* DRM_IOCTL_GET_CAP ioctl argument type */ | 771 | /* DRM_IOCTL_GET_CAP ioctl argument type */ |