mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-20 17:30:09 +01:00
drm/ttm: fixup fence class naming and interfaces
This is some code for nouveau that Ben Skeggs worked on, and also fixes the naming (having class in a system header file == C++ keyword == bad plan)
This commit is contained in:
parent
54df1b9ff3
commit
bb5516f4f4
6 changed files with 48 additions and 50 deletions
|
|
@ -538,7 +538,7 @@ EXPORT_SYMBOL(drm_bo_usage_deref_unlocked);
|
||||||
|
|
||||||
int drm_fence_buffer_objects(struct drm_file * file_priv,
|
int drm_fence_buffer_objects(struct drm_file * file_priv,
|
||||||
struct list_head *list,
|
struct list_head *list,
|
||||||
uint32_t fence_flags,
|
uint32_t fence_class, uint32_t fence_flags,
|
||||||
struct drm_fence_object * fence,
|
struct drm_fence_object * fence,
|
||||||
struct drm_fence_object ** used_fence)
|
struct drm_fence_object ** used_fence)
|
||||||
{
|
{
|
||||||
|
|
@ -560,13 +560,8 @@ int drm_fence_buffer_objects(struct drm_file * file_priv,
|
||||||
list_for_each_entry(entry, list, lru) {
|
list_for_each_entry(entry, list, lru) {
|
||||||
BUG_ON(!(entry->priv_flags & _DRM_BO_FLAG_UNFENCED));
|
BUG_ON(!(entry->priv_flags & _DRM_BO_FLAG_UNFENCED));
|
||||||
fence_type |= entry->fence_type;
|
fence_type |= entry->fence_type;
|
||||||
if (entry->fence_class != 0) {
|
if (entry->fence_class == fence_class)
|
||||||
DRM_ERROR("Fence class %d is not implemented yet.\n",
|
count++;
|
||||||
entry->fence_class);
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
count++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!count) {
|
if (!count) {
|
||||||
|
|
@ -583,7 +578,8 @@ int drm_fence_buffer_objects(struct drm_file * file_priv,
|
||||||
list_splice_init(list, &f_list);
|
list_splice_init(list, &f_list);
|
||||||
|
|
||||||
if (fence) {
|
if (fence) {
|
||||||
if ((fence_type & fence->type) != fence_type) {
|
if ((fence_type & fence->type) != fence_type ||
|
||||||
|
(fence->fence_class != fence_class)) {
|
||||||
DRM_ERROR("Given fence doesn't match buffers "
|
DRM_ERROR("Given fence doesn't match buffers "
|
||||||
"on unfenced list.\n");
|
"on unfenced list.\n");
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
|
|
@ -591,7 +587,7 @@ int drm_fence_buffer_objects(struct drm_file * file_priv,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
ret = drm_fence_object_create(dev, 0, fence_type,
|
ret = drm_fence_object_create(dev, fence_class, fence_type,
|
||||||
fence_flags | DRM_FENCE_FLAG_EMIT,
|
fence_flags | DRM_FENCE_FLAG_EMIT,
|
||||||
&fence);
|
&fence);
|
||||||
mutex_lock(&dev->struct_mutex);
|
mutex_lock(&dev->struct_mutex);
|
||||||
|
|
@ -609,7 +605,8 @@ int drm_fence_buffer_objects(struct drm_file * file_priv,
|
||||||
mutex_lock(&entry->mutex);
|
mutex_lock(&entry->mutex);
|
||||||
mutex_lock(&dev->struct_mutex);
|
mutex_lock(&dev->struct_mutex);
|
||||||
list_del_init(l);
|
list_del_init(l);
|
||||||
if (entry->priv_flags & _DRM_BO_FLAG_UNFENCED) {
|
if (entry->priv_flags & _DRM_BO_FLAG_UNFENCED &&
|
||||||
|
entry->fence_class == fence_class) {
|
||||||
count++;
|
count++;
|
||||||
if (entry->fence)
|
if (entry->fence)
|
||||||
drm_fence_usage_deref_locked(&entry->fence);
|
drm_fence_usage_deref_locked(&entry->fence);
|
||||||
|
|
|
||||||
|
|
@ -34,14 +34,14 @@
|
||||||
* Typically called by the IRQ handler.
|
* Typically called by the IRQ handler.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void drm_fence_handler(struct drm_device * dev, uint32_t class,
|
void drm_fence_handler(struct drm_device * dev, uint32_t fence_class,
|
||||||
uint32_t sequence, uint32_t type)
|
uint32_t sequence, uint32_t type)
|
||||||
{
|
{
|
||||||
int wake = 0;
|
int wake = 0;
|
||||||
uint32_t diff;
|
uint32_t diff;
|
||||||
uint32_t relevant;
|
uint32_t relevant;
|
||||||
struct drm_fence_manager *fm = &dev->fm;
|
struct drm_fence_manager *fm = &dev->fm;
|
||||||
struct drm_fence_class_manager *fc = &fm->class[class];
|
struct drm_fence_class_manager *fc = &fm->fence_class[fence_class];
|
||||||
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
||||||
struct list_head *head;
|
struct list_head *head;
|
||||||
struct drm_fence_object *fence, *next;
|
struct drm_fence_object *fence, *next;
|
||||||
|
|
@ -198,7 +198,7 @@ int drm_fence_object_signaled(struct drm_fence_object * fence,
|
||||||
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
||||||
|
|
||||||
if (poke_flush)
|
if (poke_flush)
|
||||||
driver->poke_flush(dev, fence->class);
|
driver->poke_flush(dev, fence->fence_class);
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
signaled =
|
signaled =
|
||||||
(fence->type & mask & fence->signaled) == (fence->type & mask);
|
(fence->type & mask & fence->signaled) == (fence->type & mask);
|
||||||
|
|
@ -229,7 +229,7 @@ int drm_fence_object_flush(struct drm_fence_object * fence,
|
||||||
{
|
{
|
||||||
struct drm_device *dev = fence->dev;
|
struct drm_device *dev = fence->dev;
|
||||||
struct drm_fence_manager *fm = &dev->fm;
|
struct drm_fence_manager *fm = &dev->fm;
|
||||||
struct drm_fence_class_manager *fc = &fm->class[fence->class];
|
struct drm_fence_class_manager *fc = &fm->fence_class[fence->fence_class];
|
||||||
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
|
@ -253,7 +253,7 @@ int drm_fence_object_flush(struct drm_fence_object * fence,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
write_unlock_irqrestore(&fm->lock, flags);
|
write_unlock_irqrestore(&fm->lock, flags);
|
||||||
driver->poke_flush(dev, fence->class);
|
driver->poke_flush(dev, fence->fence_class);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -262,10 +262,10 @@ int drm_fence_object_flush(struct drm_fence_object * fence,
|
||||||
* wrapped around and reused.
|
* wrapped around and reused.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void drm_fence_flush_old(struct drm_device * dev, uint32_t class, uint32_t sequence)
|
void drm_fence_flush_old(struct drm_device * dev, uint32_t fence_class, uint32_t sequence)
|
||||||
{
|
{
|
||||||
struct drm_fence_manager *fm = &dev->fm;
|
struct drm_fence_manager *fm = &dev->fm;
|
||||||
struct drm_fence_class_manager *fc = &fm->class[class];
|
struct drm_fence_class_manager *fc = &fm->fence_class[fence_class];
|
||||||
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
||||||
uint32_t old_sequence;
|
uint32_t old_sequence;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
@ -308,7 +308,7 @@ static int drm_fence_lazy_wait(struct drm_fence_object *fence,
|
||||||
{
|
{
|
||||||
struct drm_device *dev = fence->dev;
|
struct drm_device *dev = fence->dev;
|
||||||
struct drm_fence_manager *fm = &dev->fm;
|
struct drm_fence_manager *fm = &dev->fm;
|
||||||
struct drm_fence_class_manager *fc = &fm->class[fence->class];
|
struct drm_fence_class_manager *fc = &fm->fence_class[fence->fence_class];
|
||||||
int signaled;
|
int signaled;
|
||||||
unsigned long _end = jiffies + 3*DRM_HZ;
|
unsigned long _end = jiffies + 3*DRM_HZ;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
@ -366,7 +366,7 @@ int drm_fence_object_wait(struct drm_fence_object * fence,
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (driver->has_irq(dev, fence->class,
|
if (driver->has_irq(dev, fence->fence_class,
|
||||||
DRM_FENCE_TYPE_EXE)) {
|
DRM_FENCE_TYPE_EXE)) {
|
||||||
ret = drm_fence_lazy_wait(fence, ignore_signals,
|
ret = drm_fence_lazy_wait(fence, ignore_signals,
|
||||||
DRM_FENCE_TYPE_EXE);
|
DRM_FENCE_TYPE_EXE);
|
||||||
|
|
@ -374,7 +374,7 @@ int drm_fence_object_wait(struct drm_fence_object * fence,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (driver->has_irq(dev, fence->class,
|
if (driver->has_irq(dev, fence->fence_class,
|
||||||
mask & ~DRM_FENCE_TYPE_EXE)) {
|
mask & ~DRM_FENCE_TYPE_EXE)) {
|
||||||
ret = drm_fence_lazy_wait(fence, ignore_signals,
|
ret = drm_fence_lazy_wait(fence, ignore_signals,
|
||||||
mask);
|
mask);
|
||||||
|
|
@ -409,7 +409,7 @@ int drm_fence_object_emit(struct drm_fence_object * fence,
|
||||||
struct drm_device *dev = fence->dev;
|
struct drm_device *dev = fence->dev;
|
||||||
struct drm_fence_manager *fm = &dev->fm;
|
struct drm_fence_manager *fm = &dev->fm;
|
||||||
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
||||||
struct drm_fence_class_manager *fc = &fm->class[fence->class];
|
struct drm_fence_class_manager *fc = &fm->fence_class[fence->fence_class];
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
uint32_t sequence;
|
uint32_t sequence;
|
||||||
uint32_t native_type;
|
uint32_t native_type;
|
||||||
|
|
@ -421,7 +421,7 @@ int drm_fence_object_emit(struct drm_fence_object * fence,
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
write_lock_irqsave(&fm->lock, flags);
|
write_lock_irqsave(&fm->lock, flags);
|
||||||
fence->class = class;
|
fence->fence_class = class;
|
||||||
fence->type = type;
|
fence->type = type;
|
||||||
fence->flush_mask = 0x00;
|
fence->flush_mask = 0x00;
|
||||||
fence->submitted_flush = 0x00;
|
fence->submitted_flush = 0x00;
|
||||||
|
|
@ -456,7 +456,7 @@ static int drm_fence_object_init(struct drm_device * dev, uint32_t class,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
INIT_LIST_HEAD(&fence->base.list);
|
INIT_LIST_HEAD(&fence->base.list);
|
||||||
fence->class = class;
|
fence->fence_class = class;
|
||||||
fence->type = type;
|
fence->type = type;
|
||||||
fence->flush_mask = 0;
|
fence->flush_mask = 0;
|
||||||
fence->submitted_flush = 0;
|
fence->submitted_flush = 0;
|
||||||
|
|
@ -466,7 +466,7 @@ static int drm_fence_object_init(struct drm_device * dev, uint32_t class,
|
||||||
write_unlock_irqrestore(&fm->lock, flags);
|
write_unlock_irqrestore(&fm->lock, flags);
|
||||||
if (fence_flags & DRM_FENCE_FLAG_EMIT) {
|
if (fence_flags & DRM_FENCE_FLAG_EMIT) {
|
||||||
ret = drm_fence_object_emit(fence, fence_flags,
|
ret = drm_fence_object_emit(fence, fence_flags,
|
||||||
fence->class, type);
|
fence->fence_class, type);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -533,7 +533,7 @@ void drm_fence_manager_init(struct drm_device * dev)
|
||||||
BUG_ON(fm->num_classes > _DRM_FENCE_CLASSES);
|
BUG_ON(fm->num_classes > _DRM_FENCE_CLASSES);
|
||||||
|
|
||||||
for (i=0; i<fm->num_classes; ++i) {
|
for (i=0; i<fm->num_classes; ++i) {
|
||||||
class = &fm->class[i];
|
class = &fm->fence_class[i];
|
||||||
|
|
||||||
INIT_LIST_HEAD(&class->ring);
|
INIT_LIST_HEAD(&class->ring);
|
||||||
class->pending_flush = 0;
|
class->pending_flush = 0;
|
||||||
|
|
@ -582,7 +582,7 @@ int drm_fence_create_ioctl(struct drm_device *dev, void *data, struct drm_file *
|
||||||
|
|
||||||
if (arg->flags & DRM_FENCE_FLAG_EMIT)
|
if (arg->flags & DRM_FENCE_FLAG_EMIT)
|
||||||
LOCK_TEST_WITH_RETURN(dev, file_priv);
|
LOCK_TEST_WITH_RETURN(dev, file_priv);
|
||||||
ret = drm_fence_object_create(dev, arg->class,
|
ret = drm_fence_object_create(dev, arg->fence_class,
|
||||||
arg->type, arg->flags, &fence);
|
arg->type, arg->flags, &fence);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -601,7 +601,7 @@ int drm_fence_create_ioctl(struct drm_device *dev, void *data, struct drm_file *
|
||||||
arg->handle = fence->base.hash.key;
|
arg->handle = fence->base.hash.key;
|
||||||
|
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
arg->class = fence->class;
|
arg->fence_class = fence->fence_class;
|
||||||
arg->type = fence->type;
|
arg->type = fence->type;
|
||||||
arg->signaled = fence->signaled;
|
arg->signaled = fence->signaled;
|
||||||
read_unlock_irqrestore(&fm->lock, flags);
|
read_unlock_irqrestore(&fm->lock, flags);
|
||||||
|
|
@ -656,7 +656,7 @@ int drm_fence_reference_ioctl(struct drm_device *dev, void *data, struct drm_fil
|
||||||
fence = drm_lookup_fence_object(file_priv, arg->handle);
|
fence = drm_lookup_fence_object(file_priv, arg->handle);
|
||||||
|
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
arg->class = fence->class;
|
arg->fence_class = fence->fence_class;
|
||||||
arg->type = fence->type;
|
arg->type = fence->type;
|
||||||
arg->signaled = fence->signaled;
|
arg->signaled = fence->signaled;
|
||||||
read_unlock_irqrestore(&fm->lock, flags);
|
read_unlock_irqrestore(&fm->lock, flags);
|
||||||
|
|
@ -700,7 +700,7 @@ int drm_fence_signaled_ioctl(struct drm_device *dev, void *data, struct drm_file
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
arg->class = fence->class;
|
arg->fence_class = fence->fence_class;
|
||||||
arg->type = fence->type;
|
arg->type = fence->type;
|
||||||
arg->signaled = fence->signaled;
|
arg->signaled = fence->signaled;
|
||||||
read_unlock_irqrestore(&fm->lock, flags);
|
read_unlock_irqrestore(&fm->lock, flags);
|
||||||
|
|
@ -729,7 +729,7 @@ int drm_fence_flush_ioctl(struct drm_device *dev, void *data, struct drm_file *f
|
||||||
ret = drm_fence_object_flush(fence, arg->type);
|
ret = drm_fence_object_flush(fence, arg->type);
|
||||||
|
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
arg->class = fence->class;
|
arg->fence_class = fence->fence_class;
|
||||||
arg->type = fence->type;
|
arg->type = fence->type;
|
||||||
arg->signaled = fence->signaled;
|
arg->signaled = fence->signaled;
|
||||||
read_unlock_irqrestore(&fm->lock, flags);
|
read_unlock_irqrestore(&fm->lock, flags);
|
||||||
|
|
@ -761,7 +761,7 @@ int drm_fence_wait_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
|
||||||
0, arg->type);
|
0, arg->type);
|
||||||
|
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
arg->class = fence->class;
|
arg->fence_class = fence->fence_class;
|
||||||
arg->type = fence->type;
|
arg->type = fence->type;
|
||||||
arg->signaled = fence->signaled;
|
arg->signaled = fence->signaled;
|
||||||
read_unlock_irqrestore(&fm->lock, flags);
|
read_unlock_irqrestore(&fm->lock, flags);
|
||||||
|
|
@ -789,11 +789,11 @@ int drm_fence_emit_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
|
||||||
fence = drm_lookup_fence_object(file_priv, arg->handle);
|
fence = drm_lookup_fence_object(file_priv, arg->handle);
|
||||||
if (!fence)
|
if (!fence)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
ret = drm_fence_object_emit(fence, arg->flags, arg->class,
|
ret = drm_fence_object_emit(fence, arg->flags, arg->fence_class,
|
||||||
arg->type);
|
arg->type);
|
||||||
|
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
arg->class = fence->class;
|
arg->fence_class = fence->fence_class;
|
||||||
arg->type = fence->type;
|
arg->type = fence->type;
|
||||||
arg->signaled = fence->signaled;
|
arg->signaled = fence->signaled;
|
||||||
read_unlock_irqrestore(&fm->lock, flags);
|
read_unlock_irqrestore(&fm->lock, flags);
|
||||||
|
|
@ -821,8 +821,8 @@ int drm_fence_buffers_ioctl(struct drm_device *dev, void *data, struct drm_file
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
LOCK_TEST_WITH_RETURN(dev, file_priv);
|
LOCK_TEST_WITH_RETURN(dev, file_priv);
|
||||||
ret = drm_fence_buffer_objects(file_priv, NULL, arg->flags,
|
ret = drm_fence_buffer_objects(file_priv, NULL, arg->fence_class,
|
||||||
NULL, &fence);
|
arg->flags, NULL, &fence);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
ret = drm_fence_add_user_object(file_priv, fence,
|
ret = drm_fence_add_user_object(file_priv, fence,
|
||||||
|
|
@ -834,9 +834,10 @@ int drm_fence_buffers_ioctl(struct drm_device *dev, void *data, struct drm_file
|
||||||
arg->handle = fence->base.hash.key;
|
arg->handle = fence->base.hash.key;
|
||||||
|
|
||||||
read_lock_irqsave(&fm->lock, flags);
|
read_lock_irqsave(&fm->lock, flags);
|
||||||
arg->class = fence->class;
|
arg->fence_class = fence->fence_class;
|
||||||
arg->type = fence->type;
|
arg->type = fence->type;
|
||||||
arg->signaled = fence->signaled;
|
arg->signaled = fence->signaled;
|
||||||
|
arg->sequence = fence->sequence;
|
||||||
read_unlock_irqrestore(&fm->lock, flags);
|
read_unlock_irqrestore(&fm->lock, flags);
|
||||||
drm_fence_usage_deref_unlocked(&fence);
|
drm_fence_usage_deref_unlocked(&fence);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ struct drm_fence_object {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct list_head ring;
|
struct list_head ring;
|
||||||
int class;
|
int fence_class;
|
||||||
uint32_t native_type;
|
uint32_t native_type;
|
||||||
uint32_t type;
|
uint32_t type;
|
||||||
uint32_t signaled;
|
uint32_t signaled;
|
||||||
|
|
@ -173,7 +173,7 @@ struct drm_fence_class_manager {
|
||||||
struct drm_fence_manager {
|
struct drm_fence_manager {
|
||||||
int initialized;
|
int initialized;
|
||||||
rwlock_t lock;
|
rwlock_t lock;
|
||||||
struct drm_fence_class_manager class[_DRM_FENCE_CLASSES];
|
struct drm_fence_class_manager fence_class[_DRM_FENCE_CLASSES];
|
||||||
uint32_t num_classes;
|
uint32_t num_classes;
|
||||||
atomic_t count;
|
atomic_t count;
|
||||||
};
|
};
|
||||||
|
|
@ -184,18 +184,18 @@ struct drm_fence_driver {
|
||||||
uint32_t flush_diff;
|
uint32_t flush_diff;
|
||||||
uint32_t sequence_mask;
|
uint32_t sequence_mask;
|
||||||
int lazy_capable;
|
int lazy_capable;
|
||||||
int (*has_irq) (struct drm_device * dev, uint32_t class,
|
int (*has_irq) (struct drm_device * dev, uint32_t fence_class,
|
||||||
uint32_t flags);
|
uint32_t flags);
|
||||||
int (*emit) (struct drm_device * dev, uint32_t class, uint32_t flags,
|
int (*emit) (struct drm_device * dev, uint32_t fence_class, uint32_t flags,
|
||||||
uint32_t * breadcrumb, uint32_t * native_type);
|
uint32_t * breadcrumb, uint32_t * native_type);
|
||||||
void (*poke_flush) (struct drm_device * dev, uint32_t class);
|
void (*poke_flush) (struct drm_device * dev, uint32_t fence_class);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void drm_fence_handler(struct drm_device *dev, uint32_t class,
|
extern void drm_fence_handler(struct drm_device *dev, uint32_t fence_class,
|
||||||
uint32_t sequence, uint32_t type);
|
uint32_t sequence, uint32_t type);
|
||||||
extern void drm_fence_manager_init(struct drm_device *dev);
|
extern void drm_fence_manager_init(struct drm_device *dev);
|
||||||
extern void drm_fence_manager_takedown(struct drm_device *dev);
|
extern void drm_fence_manager_takedown(struct drm_device *dev);
|
||||||
extern void drm_fence_flush_old(struct drm_device *dev, uint32_t class,
|
extern void drm_fence_flush_old(struct drm_device *dev, uint32_t fence_class,
|
||||||
uint32_t sequence);
|
uint32_t sequence);
|
||||||
extern int drm_fence_object_flush(struct drm_fence_object * fence, uint32_t type);
|
extern int drm_fence_object_flush(struct drm_fence_object * fence, uint32_t type);
|
||||||
extern int drm_fence_object_signaled(struct drm_fence_object * fence,
|
extern int drm_fence_object_signaled(struct drm_fence_object * fence,
|
||||||
|
|
@ -208,7 +208,7 @@ extern void drm_fence_reference_unlocked(struct drm_fence_object **dst,
|
||||||
extern int drm_fence_object_wait(struct drm_fence_object * fence,
|
extern int drm_fence_object_wait(struct drm_fence_object * fence,
|
||||||
int lazy, int ignore_signals, uint32_t mask);
|
int lazy, int ignore_signals, uint32_t mask);
|
||||||
extern int drm_fence_object_create(struct drm_device *dev, uint32_t type,
|
extern int drm_fence_object_create(struct drm_device *dev, uint32_t type,
|
||||||
uint32_t fence_flags, uint32_t class,
|
uint32_t fence_flags, uint32_t fence_class,
|
||||||
struct drm_fence_object ** c_fence);
|
struct drm_fence_object ** c_fence);
|
||||||
extern int drm_fence_add_user_object(struct drm_file * priv,
|
extern int drm_fence_add_user_object(struct drm_file * priv,
|
||||||
struct drm_fence_object * fence, int shareable);
|
struct drm_fence_object * fence, int shareable);
|
||||||
|
|
@ -474,7 +474,7 @@ extern int drm_mem_reg_is_pci(struct drm_device *dev, struct drm_bo_mem_reg * me
|
||||||
extern void drm_bo_usage_deref_locked(struct drm_buffer_object ** bo);
|
extern void drm_bo_usage_deref_locked(struct drm_buffer_object ** bo);
|
||||||
extern int drm_fence_buffer_objects(struct drm_file * priv,
|
extern int drm_fence_buffer_objects(struct drm_file * priv,
|
||||||
struct list_head *list,
|
struct list_head *list,
|
||||||
uint32_t fence_flags,
|
uint32_t fence_class, uint32_t fence_flags,
|
||||||
struct drm_fence_object * fence,
|
struct drm_fence_object * fence,
|
||||||
struct drm_fence_object ** used_fence);
|
struct drm_fence_object ** used_fence);
|
||||||
extern void drm_bo_add_to_lru(struct drm_buffer_object * bo);
|
extern void drm_bo_add_to_lru(struct drm_buffer_object * bo);
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ static void i915_perform_flush(struct drm_device * dev)
|
||||||
{
|
{
|
||||||
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
|
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
|
||||||
struct drm_fence_manager *fm = &dev->fm;
|
struct drm_fence_manager *fm = &dev->fm;
|
||||||
struct drm_fence_class_manager *fc = &fm->class[0];
|
struct drm_fence_class_manager *fc = &fm->fence_class[0];
|
||||||
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
struct drm_fence_driver *driver = dev->driver->fence_driver;
|
||||||
uint32_t flush_flags = 0;
|
uint32_t flush_flags = 0;
|
||||||
uint32_t flush_sequence = 0;
|
uint32_t flush_sequence = 0;
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
static uint32_t via_perform_flush(struct drm_device *dev, uint32_t class)
|
static uint32_t via_perform_flush(struct drm_device *dev, uint32_t class)
|
||||||
{
|
{
|
||||||
drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private;
|
drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private;
|
||||||
struct drm_fence_class_manager *fc = &dev->fm.class[class];
|
struct drm_fence_class_manager *fc = &dev->fm.fence_class[class];
|
||||||
uint32_t pending_flush_types = 0;
|
uint32_t pending_flush_types = 0;
|
||||||
uint32_t signaled_flush_types = 0;
|
uint32_t signaled_flush_types = 0;
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
|
|
@ -204,7 +204,7 @@ void via_fence_timer(unsigned long data)
|
||||||
drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private;
|
drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private;
|
||||||
struct drm_fence_manager *fm = &dev->fm;
|
struct drm_fence_manager *fm = &dev->fm;
|
||||||
uint32_t pending_flush;
|
uint32_t pending_flush;
|
||||||
struct drm_fence_class_manager *fc = &dev->fm.class[0];
|
struct drm_fence_class_manager *fc = &dev->fm.fence_class[0];
|
||||||
|
|
||||||
if (!dev_priv)
|
if (!dev_priv)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
static uint32_t xgi_do_flush(struct drm_device * dev, uint32_t class)
|
static uint32_t xgi_do_flush(struct drm_device * dev, uint32_t class)
|
||||||
{
|
{
|
||||||
struct xgi_info * info = dev->dev_private;
|
struct xgi_info * info = dev->dev_private;
|
||||||
struct drm_fence_class_manager * fc = &dev->fm.class[class];
|
struct drm_fence_class_manager * fc = &dev->fm.fence_class[class];
|
||||||
uint32_t pending_flush_types = 0;
|
uint32_t pending_flush_types = 0;
|
||||||
uint32_t signaled_flush_types = 0;
|
uint32_t signaled_flush_types = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue