[PATCH 2/2] drm: add DRIVER_RENDER_ONLY
Christian König
ckoenig.leichtzumerken at gmail.com
Tue Oct 11 11:28:38 UTC 2022
Am 11.10.22 um 13:27 schrieb Thomas Zimmermann:
> Hi
>
> Am 11.10.22 um 13:04 schrieb Christian König:
>> This allows to suppress creating the primary node. Useful for drivers
>> which don't expose any display functionality, but are render only by
>> design.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>> ---
>> drivers/gpu/drm/drm_drv.c | 10 ++++++----
>> drivers/gpu/drm/drm_prime.c | 2 +-
>> include/drm/drm_drv.h | 7 +++++++
>> 3 files changed, 14 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
>> index d81783f43452..4a525f78a932 100644
>> --- a/drivers/gpu/drm/drm_drv.c
>> +++ b/drivers/gpu/drm/drm_drv.c
>> @@ -634,9 +634,11 @@ static int drm_dev_init(struct drm_device *dev,
>> goto err;
>> }
>> - ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY);
>> - if (ret)
>> - goto err;
>> + if (!drm_core_check_feature(dev, DRIVER_RENDER_ONLY)) {
>> + ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY);
>> + if (ret)
>> + goto err;
>> + }
>> ret = drm_legacy_create_map_hash(dev);
>> if (ret)
>> @@ -902,7 +904,7 @@ int drm_dev_register(struct drm_device *dev,
>> unsigned long flags)
>> driver->name, driver->major, driver->minor,
>> driver->patchlevel, driver->date,
>> dev->dev ? dev_name(dev->dev) : "virtual device",
>> - dev->primary->index);
>> + (dev->primary ?: dev->render)->index);
>> goto out_unlock;
>> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
>> index a3f180653b8b..4afd3f15b135 100644
>> --- a/drivers/gpu/drm/drm_prime.c
>> +++ b/drivers/gpu/drm/drm_prime.c
>> @@ -740,7 +740,7 @@ int drm_gem_prime_mmap(struct drm_gem_object
>> *obj, struct vm_area_struct *vma)
>> }
>> /* Used by drm_gem_mmap() to lookup the GEM object */
>> - priv->minor = obj->dev->primary;
>> + priv->minor = obj->dev->primary ?: obj->dev->render;
>> fil->private_data = priv;
>> ret = drm_vma_node_allow(&obj->vma_node, priv);
>> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
>> index f6159acb8856..0a1450d47ca2 100644
>> --- a/include/drm/drm_drv.h
>> +++ b/include/drm/drm_drv.h
>> @@ -94,6 +94,13 @@ enum drm_driver_feature {
>> * synchronization of command submission.
>> */
>> DRIVER_SYNCOBJ_TIMELINE = BIT(6),
>> + /**
>> + * @DRIVER_RENDER_ONLY
>> + *
>> + * Driver is a render node only driver and don't want to support
>> the
>> + * primary interface.
>> + */
>> + DRIVER_RENDER_ONLY = BIT(7),
>
> Is it really necessary to add a new flag? If a driver sets DRIVER_GEM
> and omits DRIVER_MODESET wouldn't this have the same meaning?
Mhm, good point. I haven't thought about that.
Let me double check if anybody is actually using this.
Thanks,
Christian.
>
> Best regards
> Thomas
>
>> /* IMPORTANT: Below are all the legacy flags, add new ones
>> above. */
>
More information about the dri-devel
mailing list