History

drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl)

vGEM buffers are useful for passing data between software clients and hardware renders. By allowing the user to create and attach fences to the exported vGEM buffers (on the dma-buf), the user can implement a deferred renderer and queue hardware operations like flipping and then signal the buffer readiness (i.e. this allows the user to schedule operations out-of-order, but have them complete in-order). This also makes it much easier to write tightly controlled testcases for dma-buf fencing and signaling between hardware drivers. v2: Don't pretend the fences exist in an ordered timeline, but allocate a separate fence-context for each fence so that the fences are unordered. v3: Make the debug output more interesting, and show the signaled status. v4: Automatically signal the fence to prevent userspace from indefinitely hanging drivers.

Chris Wilson committed 10 years ago

Commit 40777981 parent fc497ed5 files · +396 −1Browse files

Showing the changes to include/uapi (1 of 5 files). Show all

Unified · Split

include/uapi/drm/vgem_drm.h+62−0
@@ -0,0 +1,62 @@
1+/*
2+ * Copyright 2016 Intel Corporation
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_VGEM_DRM_H_
28+#define _UAPI_VGEM_DRM_H_
29+
30+#include "drm.h"
31+
32+#if defined(__cplusplus)
33+extern "C" {
34+#endif
35+
36+/* Please note that modifications to all structs defined here are
37+ * subject to backwards-compatibility constraints.
38+ */
39+#define DRM_VGEM_FENCE_ATTACH 0x1
40+#define DRM_VGEM_FENCE_SIGNAL 0x2
41+
42+#define DRM_IOCTL_VGEM_FENCE_ATTACH DRM_IOWR( DRM_COMMAND_BASE + DRM_VGEM_FENCE_ATTACH, struct drm_vgem_fence_attach)
43+#define DRM_IOCTL_VGEM_FENCE_SIGNAL DRM_IOW( DRM_COMMAND_BASE + DRM_VGEM_FENCE_SIGNAL, struct drm_vgem_fence_signal)
44+
45+struct drm_vgem_fence_attach {
46+ __u32 handle;
47+ __u32 flags;
48+#define VGEM_FENCE_WRITE 0x1
49+ __u32 out_fence;
50+ __u32 pad;
51+};
52+
53+struct drm_vgem_fence_signal {
54+ __u32 fence;
55+ __u32 flags;
56+};
57+
58+#if defined(__cplusplus)
59+}
60+#endif
61+
62+#endif /* _UAPI_VGEM_DRM_H_ */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t