[Nouveau] [PATCH v2] nouveau: add coherent BO attribute

Ben Skeggs skeggsb at gmail.com
Thu May 21 01:47:26 PDT 2015


On 21 May 2015 at 16:08, Alexandre Courbot <acourbot at nvidia.com> wrote:
> Add a flag allowing Nouveau to specify that an object should be coherent
> at allocation time. This is required for some class of objects like
> fences which are randomly-accessed by both the CPU and GPU. This flag
> instructs the kernel driver to make sure the object remains coherent
> even on architectures for which coherency is not guaranteed by the bus.
>
> Signed-off-by: Alexandre Courbot <acourbot at nvidia.com>
Reviewed-by: Ben Skeggs <bskeggs at redhat.com>

> ---
> Changes since v1:
> None, just added Martin so he can merge the patch. R-b and A-b wanted. :)
>
>  include/drm/nouveau_drm.h | 1 +
>  nouveau/abi16.c           | 3 +++
>  nouveau/nouveau.h         | 1 +
>  3 files changed, 5 insertions(+)
>
> diff --git a/include/drm/nouveau_drm.h b/include/drm/nouveau_drm.h
> index b18cad02419b..87aefc5e9d2f 100644
> --- a/include/drm/nouveau_drm.h
> +++ b/include/drm/nouveau_drm.h
> @@ -96,6 +96,7 @@ struct drm_nouveau_setparam {
>  #define NOUVEAU_GEM_DOMAIN_VRAM      (1 << 1)
>  #define NOUVEAU_GEM_DOMAIN_GART      (1 << 2)
>  #define NOUVEAU_GEM_DOMAIN_MAPPABLE  (1 << 3)
> +#define NOUVEAU_GEM_DOMAIN_COHERENT  (1 << 4)
>
>  #define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00
>  #define NOUVEAU_GEM_TILE_16BPP       0x00000001
> diff --git a/nouveau/abi16.c b/nouveau/abi16.c
> index 538f3a730dbe..4ca0bfbaf592 100644
> --- a/nouveau/abi16.c
> +++ b/nouveau/abi16.c
> @@ -195,6 +195,9 @@ abi16_bo_init(struct nouveau_bo *bo, uint32_t alignment,
>         if (bo->flags & NOUVEAU_BO_MAP)
>                 info->domain |= NOUVEAU_GEM_DOMAIN_MAPPABLE;
>
> +       if (bo->flags & NOUVEAU_BO_COHERENT)
> +               info->domain |= NOUVEAU_GEM_DOMAIN_COHERENT;
> +
>         if (!(bo->flags & NOUVEAU_BO_CONTIG))
>                 info->tile_flags = NOUVEAU_GEM_TILE_NONCONTIG;
>
> diff --git a/nouveau/nouveau.h b/nouveau/nouveau.h
> index a55e2b020778..4adda0e3594c 100644
> --- a/nouveau/nouveau.h
> +++ b/nouveau/nouveau.h
> @@ -127,6 +127,7 @@ union nouveau_bo_config {
>  #define NOUVEAU_BO_MAP     0x80000000
>  #define NOUVEAU_BO_CONTIG  0x40000000
>  #define NOUVEAU_BO_NOSNOOP 0x20000000
> +#define NOUVEAU_BO_COHERENT 0x10000000
>
>  struct nouveau_bo {
>         struct nouveau_device *device;
> --
> 2.4.0
>
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau


More information about the Nouveau mailing list