Reviewed-by: Bas Nieuwenhuizen <[email protected]>

And nominate for stable?

On Thu, Sep 7, 2017, at 05:44, Dave Airlie wrote:
> From: Dave Airlie <[email protected]>
> 
> This copies what amdgpu-pro does, and allocates the memory
> for an event with an uncached mtype.
> 
> This fixes hangs with:
> dEQP-VK.api.command_buffers.record_simul_use_primary
> 
> Signed-off-by: Dave Airlie <[email protected]>
> ---
>  src/amd/vulkan/radv_device.c                  | 2 +-
>  src/amd/vulkan/radv_radeon_winsys.h           | 3 ++-
>  src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c | 9 ++++++++-
>  3 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
> index 0b25469..12f6fe6 100644
> --- a/src/amd/vulkan/radv_device.c
> +++ b/src/amd/vulkan/radv_device.c
> @@ -2793,7 +2793,7 @@ VkResult radv_CreateEvent(
>  
>       event->bo = device->ws->buffer_create(device->ws, 8, 8,
>                                             RADEON_DOMAIN_GTT,
> -                                             RADEON_FLAG_CPU_ACCESS);
> +                                             RADEON_FLAG_VA_UNCACHED |
> RADEON_FLAG_CPU_ACCESS);
>       if (!event->bo) {
>               vk_free2(&device->alloc, pAllocator, event);
>               return VK_ERROR_OUT_OF_DEVICE_MEMORY;
> diff --git a/src/amd/vulkan/radv_radeon_winsys.h
> b/src/amd/vulkan/radv_radeon_winsys.h
> index 8e2ba74..a9c1f54 100644
> --- a/src/amd/vulkan/radv_radeon_winsys.h
> +++ b/src/amd/vulkan/radv_radeon_winsys.h
> @@ -51,7 +51,8 @@ enum radeon_bo_flag { /* bitfield */
>       RADEON_FLAG_GTT_WC =        (1 << 0),
>       RADEON_FLAG_CPU_ACCESS =    (1 << 1),
>       RADEON_FLAG_NO_CPU_ACCESS = (1 << 2),
> -       RADEON_FLAG_VIRTUAL =       (1 << 3)
> +       RADEON_FLAG_VIRTUAL =       (1 << 3),
> +       RADEON_FLAG_VA_UNCACHED =   (1 << 4),
>  };
>  
>  enum radeon_bo_usage { /* bitfield */
> diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
> b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
> index 75444d5..0af5a39 100644
> --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
> +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
> @@ -323,7 +323,14 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys
> *_ws,
>               goto error_bo_alloc;
>       }
>  
> -       r = amdgpu_bo_va_op(buf_handle, 0, size, va, 0,
> AMDGPU_VA_OP_MAP);
> +       uint32_t raw_flags = AMDGPU_VM_PAGE_READABLE |
> AMDGPU_VM_PAGE_WRITEABLE |
> +               AMDGPU_VM_PAGE_EXECUTABLE;
> +       if (flags & RADEON_FLAG_VA_UNCACHED)
> +               raw_flags |= AMDGPU_VM_MTYPE_UC;
> +
> +       size = ALIGN(size, getpagesize());
> +
> +       r = amdgpu_bo_va_op_raw(ws->dev, buf_handle, 0, size, va,
> raw_flags, AMDGPU_VA_OP_MAP);
>       if (r)
>               goto error_va_map;
>  
> -- 
> 2.9.3
> 
> _______________________________________________
> mesa-dev mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to