|
56 | 56 | #include "drm_internal.h"
|
57 | 57 | #include <drm/drm_syncobj.h>
|
58 | 58 |
|
| 59 | +struct drm_syncobj_stub_fence { |
| 60 | + struct dma_fence base; |
| 61 | + spinlock_t lock; |
| 62 | +}; |
| 63 | + |
| 64 | +static const char *drm_syncobj_stub_fence_get_name(struct dma_fence *fence) |
| 65 | +{ |
| 66 | + return "syncobjstub"; |
| 67 | +} |
| 68 | + |
| 69 | +static bool drm_syncobj_stub_fence_enable_signaling(struct dma_fence *fence) |
| 70 | +{ |
| 71 | + return !dma_fence_is_signaled(fence); |
| 72 | +} |
| 73 | + |
| 74 | +static void drm_syncobj_stub_fence_release(struct dma_fence *f) |
| 75 | +{ |
| 76 | + kfree(f); |
| 77 | +} |
| 78 | +static const struct dma_fence_ops drm_syncobj_stub_fence_ops = { |
| 79 | + .get_driver_name = drm_syncobj_stub_fence_get_name, |
| 80 | + .get_timeline_name = drm_syncobj_stub_fence_get_name, |
| 81 | + .enable_signaling = drm_syncobj_stub_fence_enable_signaling, |
| 82 | + .release = drm_syncobj_stub_fence_release, |
| 83 | +}; |
| 84 | + |
| 85 | + |
59 | 86 | /**
|
60 | 87 | * drm_syncobj_find - lookup and reference a sync object.
|
61 | 88 | * @file_private: drm file private pointer
|
@@ -172,37 +199,15 @@ void drm_syncobj_replace_fence(struct drm_syncobj *syncobj,
|
172 | 199 | }
|
173 | 200 | EXPORT_SYMBOL(drm_syncobj_replace_fence);
|
174 | 201 |
|
175 |
| -struct drm_syncobj_null_fence { |
176 |
| - struct dma_fence base; |
177 |
| - spinlock_t lock; |
178 |
| -}; |
179 |
| - |
180 |
| -static const char *drm_syncobj_null_fence_get_name(struct dma_fence *fence) |
181 |
| -{ |
182 |
| - return "syncobjnull"; |
183 |
| -} |
184 |
| - |
185 |
| -static bool drm_syncobj_null_fence_enable_signaling(struct dma_fence *fence) |
186 |
| -{ |
187 |
| - return !dma_fence_is_signaled(fence); |
188 |
| -} |
189 |
| - |
190 |
| -static const struct dma_fence_ops drm_syncobj_null_fence_ops = { |
191 |
| - .get_driver_name = drm_syncobj_null_fence_get_name, |
192 |
| - .get_timeline_name = drm_syncobj_null_fence_get_name, |
193 |
| - .enable_signaling = drm_syncobj_null_fence_enable_signaling, |
194 |
| - .release = NULL, |
195 |
| -}; |
196 |
| - |
197 | 202 | static int drm_syncobj_assign_null_handle(struct drm_syncobj *syncobj)
|
198 | 203 | {
|
199 |
| - struct drm_syncobj_null_fence *fence; |
| 204 | + struct drm_syncobj_stub_fence *fence; |
200 | 205 | fence = kzalloc(sizeof(*fence), GFP_KERNEL);
|
201 | 206 | if (fence == NULL)
|
202 | 207 | return -ENOMEM;
|
203 | 208 |
|
204 | 209 | spin_lock_init(&fence->lock);
|
205 |
| - dma_fence_init(&fence->base, &drm_syncobj_null_fence_ops, |
| 210 | + dma_fence_init(&fence->base, &drm_syncobj_stub_fence_ops, |
206 | 211 | &fence->lock, 0, 0);
|
207 | 212 | dma_fence_signal(&fence->base);
|
208 | 213 |
|
|
0 commit comments