Browse Source

radv/android: Add android hardware buffer field to device memory.

You cannot go from BO to Android hardware buffer, so for export we
have to remember it.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
tags/19.3-branchpoint
Bas Nieuwenhuizen 6 years ago
parent
commit
a34e4dd0d2
2 changed files with 13 additions and 0 deletions
  1. 9
    0
      src/amd/vulkan/radv_device.c
  2. 4
    0
      src/amd/vulkan/radv_private.h

+ 9
- 0
src/amd/vulkan/radv_device.c View File

if (mem == NULL) if (mem == NULL)
return; return;


#if RADV_SUPPORT_ANDROID_HARDWARE_BUFFER
if (mem->android_hardware_buffer)
AHardwareBuffer_release(mem->android_hardware_buffer);
#endif

if (mem->bo) { if (mem->bo) {
radv_bo_list_remove(device, mem->bo); radv_bo_list_remove(device, mem->bo);
device->ws->buffer_destroy(mem->bo); device->ws->buffer_destroy(mem->bo);
mem->user_ptr = NULL; mem->user_ptr = NULL;
mem->bo = NULL; mem->bo = NULL;


#if RADV_SUPPORT_ANDROID_HARDWARE_BUFFER
mem->android_hardware_buffer = NULL;
#endif

if (import_info) { if (import_info) {
assert(import_info->handleType == assert(import_info->handleType ==
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT || VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT ||

+ 4
- 0
src/amd/vulkan/radv_private.h View File

VkDeviceSize map_size; VkDeviceSize map_size;
void * map; void * map;
void * user_ptr; void * user_ptr;

#if RADV_SUPPORT_ANDROID_HARDWARE_BUFFER
struct AHardwareBuffer * android_hardware_buffer;
#endif
}; };





Loading…
Cancel
Save